@@ -6,33 +6,33 @@ |
||
| 6 | 6 | |
| 7 | 7 | class CreateOauthClientsTable extends Migration |
| 8 | 8 | { |
| 9 | - /** |
|
| 10 | - * Run the migrations. |
|
| 11 | - * |
|
| 12 | - * @return void |
|
| 13 | - */ |
|
| 14 | - public function up() |
|
| 15 | - { |
|
| 16 | - Schema::create('oauth_clients', function (Blueprint $table) { |
|
| 17 | - $table->increments('id'); |
|
| 18 | - $table->integer('user_id')->index()->nullable(); |
|
| 19 | - $table->string('name'); |
|
| 20 | - $table->string('secret', 100); |
|
| 21 | - $table->text('redirect'); |
|
| 22 | - $table->boolean('personal_access_client')->default(0); |
|
| 23 | - $table->boolean('password_client')->default(0); |
|
| 24 | - $table->boolean('revoked')->default(0); |
|
| 25 | - $table->timestamps(); |
|
| 26 | - }); |
|
| 27 | - } |
|
| 9 | + /** |
|
| 10 | + * Run the migrations. |
|
| 11 | + * |
|
| 12 | + * @return void |
|
| 13 | + */ |
|
| 14 | + public function up() |
|
| 15 | + { |
|
| 16 | + Schema::create('oauth_clients', function (Blueprint $table) { |
|
| 17 | + $table->increments('id'); |
|
| 18 | + $table->integer('user_id')->index()->nullable(); |
|
| 19 | + $table->string('name'); |
|
| 20 | + $table->string('secret', 100); |
|
| 21 | + $table->text('redirect'); |
|
| 22 | + $table->boolean('personal_access_client')->default(0); |
|
| 23 | + $table->boolean('password_client')->default(0); |
|
| 24 | + $table->boolean('revoked')->default(0); |
|
| 25 | + $table->timestamps(); |
|
| 26 | + }); |
|
| 27 | + } |
|
| 28 | 28 | |
| 29 | - /** |
|
| 30 | - * Reverse the migrations. |
|
| 31 | - * |
|
| 32 | - * @return void |
|
| 33 | - */ |
|
| 34 | - public function down() |
|
| 35 | - { |
|
| 36 | - Schema::drop('oauth_clients'); |
|
| 37 | - } |
|
| 29 | + /** |
|
| 30 | + * Reverse the migrations. |
|
| 31 | + * |
|
| 32 | + * @return void |
|
| 33 | + */ |
|
| 34 | + public function down() |
|
| 35 | + { |
|
| 36 | + Schema::drop('oauth_clients'); |
|
| 37 | + } |
|
| 38 | 38 | } |
@@ -6,27 +6,27 @@ |
||
| 6 | 6 | |
| 7 | 7 | class CreateOauthPersonalAccessClientsTable extends Migration |
| 8 | 8 | { |
| 9 | - /** |
|
| 10 | - * Run the migrations. |
|
| 11 | - * |
|
| 12 | - * @return void |
|
| 13 | - */ |
|
| 14 | - public function up() |
|
| 15 | - { |
|
| 16 | - Schema::create('oauth_personal_access_clients', function (Blueprint $table) { |
|
| 17 | - $table->increments('id'); |
|
| 18 | - $table->integer('client_id')->index(); |
|
| 19 | - $table->timestamps(); |
|
| 20 | - }); |
|
| 21 | - } |
|
| 9 | + /** |
|
| 10 | + * Run the migrations. |
|
| 11 | + * |
|
| 12 | + * @return void |
|
| 13 | + */ |
|
| 14 | + public function up() |
|
| 15 | + { |
|
| 16 | + Schema::create('oauth_personal_access_clients', function (Blueprint $table) { |
|
| 17 | + $table->increments('id'); |
|
| 18 | + $table->integer('client_id')->index(); |
|
| 19 | + $table->timestamps(); |
|
| 20 | + }); |
|
| 21 | + } |
|
| 22 | 22 | |
| 23 | - /** |
|
| 24 | - * Reverse the migrations. |
|
| 25 | - * |
|
| 26 | - * @return void |
|
| 27 | - */ |
|
| 28 | - public function down() |
|
| 29 | - { |
|
| 30 | - Schema::drop('oauth_personal_access_clients'); |
|
| 31 | - } |
|
| 23 | + /** |
|
| 24 | + * Reverse the migrations. |
|
| 25 | + * |
|
| 26 | + * @return void |
|
| 27 | + */ |
|
| 28 | + public function down() |
|
| 29 | + { |
|
| 30 | + Schema::drop('oauth_personal_access_clients'); |
|
| 31 | + } |
|
| 32 | 32 | } |
@@ -12,23 +12,23 @@ |
||
| 12 | 12 | */ |
| 13 | 13 | public function up() |
| 14 | 14 | { |
| 15 | - Schema::create('permissions', function (Blueprint $table) { |
|
| 16 | - $table->increments('id'); |
|
| 17 | - $table->string('name',100); |
|
| 18 | - $table->string('model',100); |
|
| 19 | - $table->softDeletes(); |
|
| 20 | - $table->timestamps(); |
|
| 21 | - $table->unique(array('name', 'model')); |
|
| 22 | - }); |
|
| 23 | - Schema::create('groups_permissions', function (Blueprint $table) { |
|
| 24 | - $table->increments('id'); |
|
| 25 | - $table->integer('group_id'); |
|
| 26 | - $table->integer('permission_id'); |
|
| 27 | - $table->softDeletes(); |
|
| 28 | - $table->timestamps(); |
|
| 15 | + Schema::create('permissions', function (Blueprint $table) { |
|
| 16 | + $table->increments('id'); |
|
| 17 | + $table->string('name',100); |
|
| 18 | + $table->string('model',100); |
|
| 19 | + $table->softDeletes(); |
|
| 20 | + $table->timestamps(); |
|
| 21 | + $table->unique(array('name', 'model')); |
|
| 22 | + }); |
|
| 23 | + Schema::create('groups_permissions', function (Blueprint $table) { |
|
| 24 | + $table->increments('id'); |
|
| 25 | + $table->integer('group_id'); |
|
| 26 | + $table->integer('permission_id'); |
|
| 27 | + $table->softDeletes(); |
|
| 28 | + $table->timestamps(); |
|
| 29 | 29 | |
| 30 | - $table->index(['group_id']); |
|
| 31 | - }); |
|
| 30 | + $table->index(['group_id']); |
|
| 31 | + }); |
|
| 32 | 32 | } |
| 33 | 33 | |
| 34 | 34 | /** |
@@ -1,8 +1,8 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | $factory->define(App\Modules\Acl\OauthClient::class, function (Faker\Generator $faker) { |
| 4 | - return [ |
|
| 5 | - 'user_id' => $faker->randomDigit(), |
|
| 4 | + return [ |
|
| 5 | + 'user_id' => $faker->randomDigit(), |
|
| 6 | 6 | 'name' => $faker->name(), |
| 7 | 7 | 'secret' => str_random(40), |
| 8 | 8 | 'redirect' => $faker->url(), |
@@ -11,5 +11,5 @@ discard block |
||
| 11 | 11 | 'revoked' => $faker->boolean(), |
| 12 | 12 | 'created_at' => $faker->dateTimeBetween('-1 years', 'now'), |
| 13 | 13 | 'updated_at' => $faker->dateTimeBetween('-1 years', 'now') |
| 14 | - ]; |
|
| 14 | + ]; |
|
| 15 | 15 | }); |
@@ -1,12 +1,12 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | $factory->define(App\Modules\Acl\AclUser::class, function (Faker\Generator $faker) { |
| 4 | - return [ |
|
| 4 | + return [ |
|
| 5 | 5 | 'profile_picture' => 'http://lorempixel.com/400/200/', |
| 6 | 6 | 'name' => $faker->name(), |
| 7 | 7 | 'email' => $faker->safeEmail(), |
| 8 | 8 | 'password' => 123456, |
| 9 | 9 | 'created_at' => $faker->dateTimeBetween('-1 years', 'now'), |
| 10 | 10 | 'updated_at' => $faker->dateTimeBetween('-1 years', 'now') |
| 11 | - ]; |
|
| 11 | + ]; |
|
| 12 | 12 | }); |
@@ -1,9 +1,9 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | $factory->define(App\Modules\Acl\AclGroup::class, function (Faker\Generator $faker) { |
| 4 | - return [ |
|
| 4 | + return [ |
|
| 5 | 5 | 'name' => $faker->unique->word(), |
| 6 | 6 | 'created_at' => $faker->dateTimeBetween('-1 years', 'now'), |
| 7 | 7 | 'updated_at' => $faker->dateTimeBetween('-1 years', 'now') |
| 8 | - ]; |
|
| 8 | + ]; |
|
| 9 | 9 | }); |
@@ -1,10 +1,10 @@ |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | $factory->define(App\Modules\Acl\AclPermission::class, function (Faker\Generator $faker) { |
| 4 | - return [ |
|
| 4 | + return [ |
|
| 5 | 5 | 'name' => $faker->randomElement(['save', 'delete', 'find', 'paginate']), |
| 6 | 6 | 'model' => $faker->randomElement(['users', 'groups', 'settings', 'notifications']), |
| 7 | 7 | 'created_at' => $faker->dateTimeBetween('-1 years', 'now'), |
| 8 | 8 | 'updated_at' => $faker->dateTimeBetween('-1 years', 'now') |
| 9 | - ]; |
|
| 9 | + ]; |
|
| 10 | 10 | }); |
@@ -5,105 +5,105 @@ |
||
| 5 | 5 | |
| 6 | 6 | class LoginProxy |
| 7 | 7 | { |
| 8 | - private $apiConsumer; |
|
| 9 | - |
|
| 10 | - private $auth; |
|
| 11 | - |
|
| 12 | - private $db; |
|
| 13 | - |
|
| 14 | - private $request; |
|
| 15 | - |
|
| 16 | - private $userRepository; |
|
| 17 | - |
|
| 18 | - public function __construct(Application $app) |
|
| 19 | - { |
|
| 20 | - |
|
| 21 | - $this->userRepository = $app->make('App\Modules\Acl\Repositories\UserRepository'); |
|
| 22 | - $this->apiConsumer = $app->make('apiconsumer'); |
|
| 23 | - $this->auth = $app->make('auth'); |
|
| 24 | - $this->db = $app->make('db'); |
|
| 25 | - $this->request = $app->make('request'); |
|
| 26 | - } |
|
| 27 | - |
|
| 28 | - /** |
|
| 29 | - * Attempt to create an access token using user credentials. |
|
| 30 | - * |
|
| 31 | - * @param array $credentials |
|
| 32 | - * @param boolean $adminLogin |
|
| 33 | - * @return array |
|
| 34 | - */ |
|
| 35 | - public function login($credentials, $adminLogin = false) |
|
| 36 | - { |
|
| 37 | - $this->userRepository->login($credentials, $adminLogin); |
|
| 38 | - |
|
| 39 | - return $this->proxy('password', [ |
|
| 40 | - 'username' => $credentials['email'], |
|
| 41 | - 'password' => $credentials['password'] |
|
| 42 | - ]); |
|
| 43 | - } |
|
| 44 | - |
|
| 45 | - /** |
|
| 46 | - * Attempt to refresh the access token useing the given refresh token. |
|
| 47 | - * |
|
| 48 | - * @param string $refreshToken |
|
| 49 | - * @return array |
|
| 50 | - */ |
|
| 51 | - public function refreshtoken($refreshToken) |
|
| 52 | - { |
|
| 53 | - return $this->proxy('refresh_token', [ |
|
| 54 | - 'refresh_token' => $refreshToken |
|
| 55 | - ]); |
|
| 56 | - } |
|
| 57 | - |
|
| 58 | - /** |
|
| 59 | - * Proxy a request to the OAuth server. |
|
| 60 | - * |
|
| 61 | - * @param string $grantType what type of grant type should be proxied |
|
| 62 | - * @param array |
|
| 63 | - */ |
|
| 64 | - public function proxy($grantType, array $data = []) |
|
| 65 | - { |
|
| 66 | - $data = array_merge($data, [ |
|
| 67 | - 'client_id' => env('PASSWORD_CLIENT_ID'), |
|
| 68 | - 'client_secret' => env('PASSWORD_CLIENT_SECRET'), |
|
| 69 | - 'grant_type' => $grantType |
|
| 70 | - ]); |
|
| 71 | - |
|
| 72 | - $response = $this->apiConsumer->post('/oauth/token', $data); |
|
| 73 | - |
|
| 74 | - if ( ! $response->isSuccessful()) |
|
| 75 | - { |
|
| 76 | - if ($grantType == 'refresh_token') |
|
| 77 | - { |
|
| 78 | - \ErrorHandler::invalidRefreshToken(); |
|
| 79 | - } |
|
| 80 | - |
|
| 81 | - \ErrorHandler::loginFailed(); |
|
| 82 | - } |
|
| 83 | - |
|
| 84 | - $data = json_decode($response->getContent()); |
|
| 85 | - |
|
| 86 | - return [ |
|
| 87 | - 'access_token' => $data->access_token, |
|
| 88 | - 'refresh_token' => $data->refresh_token, |
|
| 89 | - 'expires_in' => $data->expires_in |
|
| 90 | - ]; |
|
| 91 | - } |
|
| 92 | - |
|
| 93 | - /** |
|
| 94 | - * Logs out the user. We revoke access token and refresh token. |
|
| 95 | - */ |
|
| 96 | - public function logout() |
|
| 97 | - { |
|
| 98 | - $accessToken = $this->auth->user()->token(); |
|
| 99 | - |
|
| 100 | - $this->db |
|
| 101 | - ->table('oauth_refresh_tokens') |
|
| 102 | - ->where('access_token_id', $accessToken->id) |
|
| 103 | - ->update([ |
|
| 104 | - 'revoked' => true |
|
| 105 | - ]); |
|
| 106 | - |
|
| 107 | - $accessToken->revoke(); |
|
| 108 | - } |
|
| 8 | + private $apiConsumer; |
|
| 9 | + |
|
| 10 | + private $auth; |
|
| 11 | + |
|
| 12 | + private $db; |
|
| 13 | + |
|
| 14 | + private $request; |
|
| 15 | + |
|
| 16 | + private $userRepository; |
|
| 17 | + |
|
| 18 | + public function __construct(Application $app) |
|
| 19 | + { |
|
| 20 | + |
|
| 21 | + $this->userRepository = $app->make('App\Modules\Acl\Repositories\UserRepository'); |
|
| 22 | + $this->apiConsumer = $app->make('apiconsumer'); |
|
| 23 | + $this->auth = $app->make('auth'); |
|
| 24 | + $this->db = $app->make('db'); |
|
| 25 | + $this->request = $app->make('request'); |
|
| 26 | + } |
|
| 27 | + |
|
| 28 | + /** |
|
| 29 | + * Attempt to create an access token using user credentials. |
|
| 30 | + * |
|
| 31 | + * @param array $credentials |
|
| 32 | + * @param boolean $adminLogin |
|
| 33 | + * @return array |
|
| 34 | + */ |
|
| 35 | + public function login($credentials, $adminLogin = false) |
|
| 36 | + { |
|
| 37 | + $this->userRepository->login($credentials, $adminLogin); |
|
| 38 | + |
|
| 39 | + return $this->proxy('password', [ |
|
| 40 | + 'username' => $credentials['email'], |
|
| 41 | + 'password' => $credentials['password'] |
|
| 42 | + ]); |
|
| 43 | + } |
|
| 44 | + |
|
| 45 | + /** |
|
| 46 | + * Attempt to refresh the access token useing the given refresh token. |
|
| 47 | + * |
|
| 48 | + * @param string $refreshToken |
|
| 49 | + * @return array |
|
| 50 | + */ |
|
| 51 | + public function refreshtoken($refreshToken) |
|
| 52 | + { |
|
| 53 | + return $this->proxy('refresh_token', [ |
|
| 54 | + 'refresh_token' => $refreshToken |
|
| 55 | + ]); |
|
| 56 | + } |
|
| 57 | + |
|
| 58 | + /** |
|
| 59 | + * Proxy a request to the OAuth server. |
|
| 60 | + * |
|
| 61 | + * @param string $grantType what type of grant type should be proxied |
|
| 62 | + * @param array |
|
| 63 | + */ |
|
| 64 | + public function proxy($grantType, array $data = []) |
|
| 65 | + { |
|
| 66 | + $data = array_merge($data, [ |
|
| 67 | + 'client_id' => env('PASSWORD_CLIENT_ID'), |
|
| 68 | + 'client_secret' => env('PASSWORD_CLIENT_SECRET'), |
|
| 69 | + 'grant_type' => $grantType |
|
| 70 | + ]); |
|
| 71 | + |
|
| 72 | + $response = $this->apiConsumer->post('/oauth/token', $data); |
|
| 73 | + |
|
| 74 | + if ( ! $response->isSuccessful()) |
|
| 75 | + { |
|
| 76 | + if ($grantType == 'refresh_token') |
|
| 77 | + { |
|
| 78 | + \ErrorHandler::invalidRefreshToken(); |
|
| 79 | + } |
|
| 80 | + |
|
| 81 | + \ErrorHandler::loginFailed(); |
|
| 82 | + } |
|
| 83 | + |
|
| 84 | + $data = json_decode($response->getContent()); |
|
| 85 | + |
|
| 86 | + return [ |
|
| 87 | + 'access_token' => $data->access_token, |
|
| 88 | + 'refresh_token' => $data->refresh_token, |
|
| 89 | + 'expires_in' => $data->expires_in |
|
| 90 | + ]; |
|
| 91 | + } |
|
| 92 | + |
|
| 93 | + /** |
|
| 94 | + * Logs out the user. We revoke access token and refresh token. |
|
| 95 | + */ |
|
| 96 | + public function logout() |
|
| 97 | + { |
|
| 98 | + $accessToken = $this->auth->user()->token(); |
|
| 99 | + |
|
| 100 | + $this->db |
|
| 101 | + ->table('oauth_refresh_tokens') |
|
| 102 | + ->where('access_token_id', $accessToken->id) |
|
| 103 | + ->update([ |
|
| 104 | + 'revoked' => true |
|
| 105 | + ]); |
|
| 106 | + |
|
| 107 | + $accessToken->revoke(); |
|
| 108 | + } |
|
| 109 | 109 | } |
| 110 | 110 | \ No newline at end of file |
@@ -8,35 +8,35 @@ |
||
| 8 | 8 | |
| 9 | 9 | class GroupsController extends BaseApiController |
| 10 | 10 | { |
| 11 | - /** |
|
| 12 | - * The name of the model that is used by the base api controller |
|
| 13 | - * to preform actions like (add, edit ... etc). |
|
| 14 | - * @var string |
|
| 15 | - */ |
|
| 16 | - protected $model = 'groups'; |
|
| 11 | + /** |
|
| 12 | + * The name of the model that is used by the base api controller |
|
| 13 | + * to preform actions like (add, edit ... etc). |
|
| 14 | + * @var string |
|
| 15 | + */ |
|
| 16 | + protected $model = 'groups'; |
|
| 17 | 17 | |
| 18 | - /** |
|
| 19 | - * The validations rules used by the base api controller |
|
| 20 | - * to check before add. |
|
| 21 | - * @var array |
|
| 22 | - */ |
|
| 23 | - protected $validationRules = [ |
|
| 24 | - 'name' => 'required|string|max:100|unique:groups,name,{id}' |
|
| 25 | - ]; |
|
| 18 | + /** |
|
| 19 | + * The validations rules used by the base api controller |
|
| 20 | + * to check before add. |
|
| 21 | + * @var array |
|
| 22 | + */ |
|
| 23 | + protected $validationRules = [ |
|
| 24 | + 'name' => 'required|string|max:100|unique:groups,name,{id}' |
|
| 25 | + ]; |
|
| 26 | 26 | |
| 27 | - /** |
|
| 28 | - * Handle an assign permissions to group request. |
|
| 29 | - * |
|
| 30 | - * @param \Illuminate\Http\Request $request |
|
| 31 | - * @return \Illuminate\Http\Response |
|
| 32 | - */ |
|
| 33 | - public function assignpermissions(Request $request) |
|
| 34 | - { |
|
| 35 | - $this->validate($request, [ |
|
| 36 | - 'permission_ids' => 'required|exists:permissions,id', |
|
| 37 | - 'group_id' => 'required|array|exists:groups,id' |
|
| 38 | - ]); |
|
| 27 | + /** |
|
| 28 | + * Handle an assign permissions to group request. |
|
| 29 | + * |
|
| 30 | + * @param \Illuminate\Http\Request $request |
|
| 31 | + * @return \Illuminate\Http\Response |
|
| 32 | + */ |
|
| 33 | + public function assignpermissions(Request $request) |
|
| 34 | + { |
|
| 35 | + $this->validate($request, [ |
|
| 36 | + 'permission_ids' => 'required|exists:permissions,id', |
|
| 37 | + 'group_id' => 'required|array|exists:groups,id' |
|
| 38 | + ]); |
|
| 39 | 39 | |
| 40 | - return \Response::json($this->repo->assignPermissions($request->get('group_id'), $request->get('permission_ids')), 200); |
|
| 41 | - } |
|
| 40 | + return \Response::json($this->repo->assignPermissions($request->get('group_id'), $request->get('permission_ids')), 200); |
|
| 41 | + } |
|
| 42 | 42 | } |