From 156fe97c051b6ff949d31a651fd767eef23f6fac Mon Sep 17 00:00:00 2001 From: drkthunder02 Date: Sun, 4 Nov 2018 13:44:35 -0600 Subject: [PATCH] added new middleware called Callback added role in the user database added new function hasRole in user model added new function getUserType in user model modified registration to handle new column in user model --- app/Http/Controllers/Auth/LoginController.php | 10 +++++++ app/Http/Kernel.php | 1 + app/Http/Middleware/Callback.php | 30 +++++++++++++++++++ app/Providers/AuthServiceProvider.php | 21 +++++++++++++ app/User.php | 10 +++++++ .../2014_10_12_000000_create_users_table.php | 1 + routes/web.php | 2 +- 7 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 app/Http/Middleware/Callback.php 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');