我想在成功登录后添加一个自定义值(角色(到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);
}
我从身份验证\登录控制器设置角色
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;
(但这返回错误(
我怎样才能做到这一点?
我自己找到了解决方案。
由于我必须在不同的控制器中使用"role"值,并且数据库表中没有列来保留该值,因此我必须使用会话来存储该值。
当用户在身份验证\登录控制器进行身份验证时,我在会话中设置角色值
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
首先获取用户详细信息,然后更新用户拘留,例如
$user = User::findOrFail(Auth::user()->id);
$user->role = "director";
$user->save();
试试这个代码