首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Laravel在登录中添加空间角色条件

如何使用Laravel在登录中添加空间角色条件
EN

Stack Overflow用户
提问于 2021-04-05 21:59:57
回答 1查看 377关注 0票数 0

我使用的是restful api的Laravel-8、laravel-passport和spatie permission。我已经在Controller中有了这段代码。

我有这个Admin的控制器:

代码语言:javascript
复制
public function adminLogin(Request $request)
{
    if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){
        $user = Auth::user();
        $success['token'] =  $user->createToken('MyApp')-> accessToken;
        $success['name'] =  $user->name;

        return $this->sendResponse($success, 'User login successfully.');
    }
    else{
        return $this->sendError('Unauthorised.', ['error'=>'Unauthorised']);
    }
}

我只希望‘超级管理员’能够使用管理员控制器登录。如果不是'Super Admin',它应该指示unathorized。

我如何将下面的代码包含到上面已经有的代码中,或者以任何其他最好的方式?

代码语言:javascript
复制
    if($user->hasRole('Super Admin'))
        $res = User::with(['roles', 'employee', 'company'])->find($user->id);
    else
        $res = User::with('roles')->find($user->id);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-05 22:03:33

您可以在尝试身份验证后检查用户的角色。

代码语言:javascript
复制
public function adminLogin(Request $request)
{
    if (Auth::attempt($request->only('email', 'password'))) {
        $user = Auth::user();

        if (!$user->hasRole('Super Admin') {
            Auth::logout();

            return $this->sendError('Unauthorised.', ['error'=>'Unauthorised']);
        }

        $success['token'] =  $user->createToken('MyApp')-> accessToken;
        $success['name'] =  $user->name;

        return $this->sendResponse($success, 'User login successfully.');
    }

    return $this->sendError('Unauthorised.', ['error'=>'Unauthorised']);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66954243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档