smartrahat
smartrahat

Reputation: 5609

Laravel Authentication with condition

I am using Laravel 5.1 and Laravel's default authentication system.

In database (MySQL) I add a new column named 'role'. The value will be 1 for admin and 2 for members.

Now I want to give login permission only for admin, means where the value is 1. How can I do that?

Upvotes: 1

Views: 82

Answers (2)

smartrahat
smartrahat

Reputation: 5609

Actually I solved it. I just add these code in postLogin() method of AthenticatesUsers.php method.

    // If role is equal to 1, user allowed to login
    // You can change $admin value anytime according to database Design
    // Example: In role column the value for admin is 2 or A. You just need to change the value of $admin.
    $userData = User::select('role')->where('email',$request['email'])->first();
    $admin = 1;
    $role = $userData->role;
    if($role == $admin){
        $request['role'] = $role;
    }

Upvotes: 1

James
James

Reputation: 16339

I feel that there are better ways to achieve what you're after, such as middleware, however given what you're after this would be one way to do it.

Upon logging in a user us sent to 'home', unless you specify otherwise in the AuthController.

Inside your routes.php, if you just set up a GET route to point to a HomeController (or whatever you name it) then you could use a function to run the tests you're after.

routes.php

Route::get('home', 'HomeController@index');

HomeController

public function index()
    {
        //If they are yet to log in then return your normal homepage
        if (Auth::guest())
        {
            return View::make('home');
        }
        else
        {
           //Run your tests here to check their role and direct appropriately
           //Given you have added the role column to the users table, you can access it like so:
           //Auth::user()->role
        }
    }

Upvotes: 0

Related Questions