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)); }
/** * @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()); }
/** * 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; }