Laravel 5.5 - Как я могу добавить пользовательское значение в Auth :: user () после успешного входа - PullRequest
1 голос
/ 23 сентября 2019

Я хочу добавить пользовательское значение (роль) к Auth::user() после успешного входа в систему.

Я добавил следующий код в \ App \ User

protected $attributes = ['role'];
protected $appends = ['role'];

public function getRoleAttribute() 
{
    return $this->attributes['role'];
}    

public function setRoleAttribute($value)
{
    $this->attributes['role'] = strtolower($value);
}

и установил роль из Auth \ LoginController

 function authenticated(Request $request, $user)
    { 
         //I find $position based on some calculation
         if($position == 1)
         {
             Auth::user()->role = 'director';
             return redirect('supervisors');
         }
   }

Я хочуполучить роль на разных страницах, например $role = Auth::user()->role; (но это возвращает ошибку)

как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Я сам нашел решение.

Поскольку мне приходится использовать значение 'role' в разных контроллерах, и в таблице базы данных нет столбца, чтобы сохранить значение, мне пришлось использовать сеанс для хранения значения.

Я устанавливаю значение роли в сеансе при аутентификации пользователя на Auth \ LoginController

function authenticated(Request $request, $user)
{
    if(xxxxx)
    {
        if(xxxx)
        {
            Auth::user()->role = 'director';
        }
        else
        {
            Auth::user()->role = 'manager';              
        }
    }
}

В Приложение \ Пользователь

public function getRoleAttribute() 
{
    return Session::get('role', null);
}

public function setRoleAttribute($value)
{
    Session::put('role', $value);
}

Теперь я могу получить доступ к значению роли из любого места, используя следующий код

Auth::user()->role
0 голосов
/ 23 сентября 2019

сначала получите данные пользователя, а затем обновите его, например

$user = User::findOrFail(Auth::user()->id);
$user->role  = "director";
$user->save();

, попробуйте этот код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...