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)); }
/** * Only for separated roles mode * * @return \Bazalt\Auth\Model\Role|null */ public static function getCurrentRole() { $user = self::getUser(); if ($user->isGuest()) { return null; } $session = new Session('auth'); if (isset($session->currentRoleId)) { $curRole = \Bazalt\Auth\Model\Role::getById((int) $session->currentRoleId); if (!$curRole) { return null; } return self::getUser()->hasRole($curRole->id) ? $curRole : null; } $q = $user->Roles->getQuery(); $q->andWhere('ref.site_id = ?', \Bazalt\Site::getId()); $q->limit(1); return $q->fetch(); }
public function updateLastActivity($time = null) { if ($time == null) { $time = time(); } $q = SiteRefUser::select()->where('user_id = ?', $this->id)->andWhere('site_id = ?', \Bazalt\Site::getId()); $activity = $q->fetch(); if (!$activity) { $activity = new SiteRefUser(); $activity->site_id = \Bazalt\Site::getId(); $activity->user_id = $this->id; } $activity->session_id = \Bazalt\Session::getSessionId(); $activity->last_activity = date('Y-m-d H:i:s', $time); $activity->save(); ORM::update('Bazalt\\Auth\\Model\\User')->set('last_activity', date('Y-m-d H:i:s', $time))->where('id = ?', $this->id)->autoClearCache(false)->exec(false); }