Esempio n. 1
0
 public function testGetRoles()
 {
     $this->model->login = '******';
     $this->model->save();
     // create global role
     $role = Role::create();
     $role->title = 'Test';
     $role->save();
     $this->models[] = $role;
     // create site
     $site = \Bazalt\Site\Model\Site::create();
     $site->save();
     $this->models[] = $site;
     // create local role
     $role2 = Role::create();
     $role2->title = 'Test2';
     $role2->site_id = $site->id;
     $role2->save();
     $this->models[] = $role2;
     $this->model->Roles->add($role, ['site_id' => \Bazalt\Site::getId()]);
     $this->model->Roles->add($role, ['site_id' => $site->id]);
     $this->model->Roles->add($role2, ['site_id' => $site->id]);
     $role = Role::getById($role->id);
     $this->assertEquals([$role], $this->model->getRoles());
     $role2 = Role::getById($role2->id);
     $this->assertEquals([$role, $role2], $this->model->getRoles($site));
 }
Esempio n. 2
0
 /**
  * @method PUT
  * @method POST
  * @json
  */
 public function saveUser()
 {
     $data = Validator::create((array) $this->request->data);
     $emailField = $data->field('email')->required()->email();
     $user = User::getById($data['id']);
     if (!$user) {
         return new Response(400, ['id' => 'User not found']);
     }
     $userRoles = [];
     $data->field('roles')->validator('validRoles', function ($roles) use(&$userRoles) {
         if ($roles) {
             foreach ($roles as $role) {
                 $userRoles[$role] = Role::getById($role);
                 if (!$userRoles[$role]) {
                     return false;
                 }
             }
         }
         return true;
     }, 'Invalid roles');
     $data->field('login')->required();
     $data->field('gender')->required();
     if (!$data->validate()) {
         return new Response(400, $data->errors());
     }
     $user->login = $data['login'];
     $user->email = $data['email'];
     $user->firstname = $data['firstname'];
     $user->secondname = $data['secondname'];
     $user->patronymic = $data['patronymic'];
     $user->birth_date = date('Y-m-d', strToTime($data['birth_date']));
     //$user->password = User::cryptPassword($data['password']);
     $user->gender = $data['gender'];
     $user->is_active = $data['is_active'];
     $user->is_deleted = $data['is_deleted'];
     $user->save();
     $user->Roles->clearRelations(array_keys($userRoles));
     foreach ($userRoles as $role) {
         $user->Roles->add($role, ['site_id' => 6]);
     }
     return new Response(200, $user->toArray());
 }
Esempio n. 3
0
 /**
  * Only for separated roles mode
  *
  * @return bool true if set role - success
  */
 public static function setCurrentRole($roleId)
 {
     $session = new Session('auth');
     $curRole = \Bazalt\Auth\Model\Role::getById((int) $roleId);
     if ($curRole) {
         $user = self::getUser();
         if ($user->is_god || $user->hasRole($curRole->id)) {
             $session->currentRoleId = $curRole->id;
             return true;
         }
     }
     return false;
 }