public function registerValidators()
 {
     Validator::extend('rolePermission', function ($attribute, $array) {
         $flag = true;
         if (is_array($array)) {
             foreach ($array as $value) {
                 if ($attribute == "roles") {
                     if ($value == '@') {
                         continue;
                     }
                     $check = Role::where('name', $value);
                 } else {
                     $check = Permission::where('name', $value);
                 }
                 if (!$check->count()) {
                     $flag = false;
                     break;
                 }
             }
         } else {
             $flag = false;
         }
         return $flag;
     }, 'Roles or permissions are invalid.');
 }
Пример #2
0
 public function assignRole($id, Request $request)
 {
     $user = AppUser::find($id);
     if (!$user) {
         return response()->json(null, 404);
     }
     $roleIdOrName = $request->roleIdOrName;
     $field = is_numeric($roleIdOrName) ? 'id' : 'name';
     $role = Role::where($field, $roleIdOrName)->first();
     if (!$role) {
         return response()->json(arrayView('phpsoft.users::errors/validation', ['errors' => ['Role does not exist.']]), 400);
     }
     $hasRole = $user->hasRole($role->name);
     if ($hasRole) {
         return response()->json(null, 204);
     }
     $user->attachRole($role);
     return response()->json(null, 204);
 }
Пример #3
0
 public function testBrowseWithOrderRightParams()
 {
     $roles = [];
     for ($i = 0; $i < 10; ++$i) {
         $roles[] = factory(Role::class)->create(['name' => 'admin ' . $i, 'display_name' => 'Administrator ' . $i]);
     }
     $rolesID = Role::select('*')->orderBy('id', 'desc')->get();
     $rolesDisplayName = Role::select('*')->orderBy('display_name', 'asc')->get();
     $rolesName = Role::select('*')->orderBy('name', 'desc')->get();
     // check order roles with full input
     $res = $this->call('GET', '/roles?sort=name&direction=desc');
     $this->assertEquals(200, $res->getStatusCode());
     $results = json_decode($res->getContent());
     for ($i = 0; $i < count($rolesName); ++$i) {
         $this->assertEquals($rolesName[$i]->id, $results->entities[$i]->id);
     }
     $res = $this->call('GET', '/roles?sort=display_name&direction=asc');
     $this->assertEquals(200, $res->getStatusCode());
     $results = json_decode($res->getContent());
     for ($i = 0; $i < count($results->entities); ++$i) {
         $this->assertEquals($rolesDisplayName[$i]->id, $results->entities[$i]->id);
     }
     // check order roles with equals value of order field, roles is sorted follow id field with desc
     $roles = [];
     for ($i = 0; $i < 10; ++$i) {
         if (in_array($i, [2, 4, 6])) {
             $roles[] = factory(Role::class)->create(['display_name' => 'Administrator']);
         }
         $roles[] = factory(Role::class)->create();
     }
     $roles1 = Role::where('display_name', '=', 'Administrator')->orderBy('id', 'desc')->get();
     $roles2 = Role::where('display_name', '<>', 'Administrator')->orderBy('order', 'asc')->get();
     $roles = array_merge((array) $roles1, (array) $roles2);
     $res = $this->call('GET', '/roles?sort=display_name&direction=asc');
     $this->assertEquals(200, $res->getStatusCode());
     $results = json_decode($res->getContent());
     for ($i = 1; $i < count($roles); ++$i) {
         $this->assertEquals($roles[$i]->id, $results->entities[$i]->id);
     }
 }