Как я могу получить аутентификацию пользователя или любой сеанс в моем пользовательском классе и провайдере? - PullRequest
0 голосов
/ 03 февраля 2020

Я должен получить компанию, которую выбирает пользователь, но я не могу получить данные пользователя в функции загрузки моего класса и провайдера.

Пользователь может иметь более одной компании, поэтому пользователю необходимо выбрать компанию для некоторых операций. Но, как я уже сказал, я не могу получить компанию, которую выбирает пользователь.

Как это:

 public function boot()
    {

        $user = Auth::user();

        dd( $user ); // return null;

        $bid = new Bid();
        $show = $bid->check();
        Blade::directive('bid',function() use($show){
            return "<?php if( $show ) { ?>";
        });

        Blade::directive('endbid',function(){
            return '<?php } ?>';
        });
    }

Мой другой класс:

<?php

namespace App\Services\Buying\Package;

use App\Services\Buying\Package\PackageInterface;
use App\Models\Company\Company;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
use App\User;

class PackageBuying extends PackageQuery implements PackageInterface
{
    private $company_id;

    public function __construct()
    {
        $user = Auth::user();

        dd( $user ); // return null

        $this->setCompanyId($this->company_id);
    }

    public function setSession( Request $request )
    {
        $request->session()->get('selected-company');
    }

    public function company()
    {
        return $this->company_id;
    }

    public function package()
    {
        if ( $this->check() ) {
            return $this->getPackage($this->company())->first();
        }

        return [];
    }

    public function features()
    {
        return (object)json_decode( $this->package()->features );
    }

    public function importantFeatures()
    {
        return (object)json_decode( $this->package()->important_features );
    }

    public function active()
    {
        return (bool) $this->getPackage()->firstOrFail()->active;
    }
}

На самом деле, если я Получил пользовательские данные в функции загрузки провайдера, я мог бы отправить данные своему классу.

Можете ли вы мне помочь?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Поместите код внутри вашей функции построения в функцию calMethod следующим образом

public function callAction( $method, $parameters ) {
        $user = Auth::user();
        dd( $user ); // return null
        $this->setCompanyId($this->company_id);
        return parent::callAction( $method, $parameters );
    }
...