diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index f5d4a3d0e..95cd4188c 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -117,6 +117,15 @@ class LoginController extends Controller } else { //Get what type of account the user should have $accountType = $this->getAccountType(null, $eve_user->getId()); + if($accountType == 'Guest') { + $role = 'Guest'; + } else if($accountType == 'Legacy'){ + $role = 'Legacy'; + } else if($accountType == 'W4RP') { + $role = 'W4RP'; + } else { + $role = 'None'; + } //Create a user account return User::create([ 'name' => $eve_user->getName(), @@ -127,6 +136,7 @@ class LoginController extends Controller 'expires_in' => $eve_user->expiresIn, 'access_token' => $eve_user->token, 'user_type' => $accountType, + 'role' => $role, ]); } } diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 9f8e0491b..3caed3a31 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -60,5 +60,6 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'callback' => \App\Http\Middleware\Callback::class, ]; } diff --git a/app/Http/Middleware/Callback.php b/app/Http/Middleware/Callback.php new file mode 100644 index 000000000..a481a2e1d --- /dev/null +++ b/app/Http/Middleware/Callback.php @@ -0,0 +1,30 @@ +registerPolicies($gate); + $gate->define('isSuperAdmin', function($user) { + return $user->hasRole('SuperAdmin') == 'SuperAdmin'; + }); + + $gate->define('isAdmin', function($user) { + return $user->hasRole('Admin') == 'Admin'; + }); + + $gate->define('isUser', function($user) { + return $user->hasRole('User') == 'User'; + }); + + $gate->define('isLegacy', function($user) { + return $user->hasRole('Legacy') == 'Legacy'; + }); + + $gate->define('isGuest', function($user) { + return $user->hasRole('Guest') == 'Guest'; + }); +/* $gate->define('isSuperAdmin', function($user) { return $user->user_type == 'SuperAdmin'; }); @@ -45,5 +65,6 @@ class AuthServiceProvider extends ServiceProvider $gate->define('isGuest', function($user) { return $user->user_type == 'Guest'; }); + */ } } diff --git a/app/User.php b/app/User.php index d79ccaacf..accae9b30 100644 --- a/app/User.php +++ b/app/User.php @@ -27,6 +27,7 @@ class User extends Authenticatable 'refresh_token', 'user_type', 'scopes', + 'role', ]; protected $table = 'users'; @@ -41,4 +42,13 @@ class User extends Authenticatable ]; protected $guarded = []; + + public function hasRole($role) + { + return User::where('role', $role)->get(); + } + + public function getUserType() { + return User::where('user_type')->get(); + } } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 559d998df..299d1e2e0 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -24,6 +24,7 @@ class CreateUsersTable extends Migration $table->integer('expires_in')->default(0); $table->string('owner_hash'); $table->string('user_type')->default('Guest'); + $table->string('role')->default('Guest'); $table->text('scopes')->default('publicData'); $table->string('email')->unique()->nullable(); $table->timestamp('email_verified_at')->nullable(); diff --git a/routes/web.php b/routes/web.php index ed7741506..95e61ba15 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,7 +18,7 @@ Route::get('/', function () { Auth::routes(); //Login display pages Route::get('/login', 'Auth\LoginController@redirectToProvider')->name('login'); -Route::get('/callback', 'Auth\LoginController@handleProviderCallback'); +Route::get('/callback', 'Auth\LoginController@handleProviderCallback')->middleware('callback'); Route::get('/logout', 'Auth\LoginController@logout'); //Dashboard Controller Display pages Route::get('/dashboard', 'DashboardController@index');