简体   繁体   中英

Add Admin role in laravel 5.4

I have a database that in this: Admin has True isAdmin property, but other users have false isAdmin property.

I want to check if the user who logged in is an Admin or not by redirecting them to different pages in my app. My code in Controller is:

public function store(User $user)
{
    if (auth()->attempt(request(['email', 'password']))) {
        if ($user->isAdmin == 1) {
            return redirect('/ShowUser');
        }
        {
            return redirect('/lo');
        }

    }
    return back()->withErrors(
        [
            'message' => 'Error'
        ]
    );

}

But this code doesn't work; it sends the users to '/lo' all the time. How can I fix it?

You're missing an else keyword.

Right here:

if ($user->isAdmin == 1) {
    return redirect('/ShowUser');
}
{ // <-- right here
    return redirect('/lo');
}

add the else keyword.

if ($user->isAdmin == 1) {
    return redirect('/ShowUser');
}
else { // <-- right here
    return redirect('/lo');
}

anyway, your code will still run fine even after the edit above. But I have questions for you:

  • Is the user assumed to be in the database already?

  • What is the default value of isAdmin in the database?

  • Are you passing the isAdmin attribute as an input from a form or something?

  • And why is it a store request when you're just trying to log a user in ?

It's a bit confusing. I can tell from your code that you're trying to log a user in, but you're doing it in a store method (nothing wrong with that, just convention), the store method is usually used in storing data (how coincidental!)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM