/** * Set the field values * * @param array $values * @return User */ public function setFieldValues(array $values = null) { parent::setFieldValues($values); if ($_POST && null !== $this->name) { $role = Table\Roles::findBy(['name' => $this->name]); if (isset($role->id) && $this->id != $role->id) { $this->getElement('name')->addValidator(new Validator\NotEqual($this->name, 'That role already exists.')); } } return $this; }
/** * Initialize navigation object * * @return void */ public function initNav() { $params = $this->application->services()->getParams('nav.top'); $roles = Table\Roles::findAll(); foreach ($roles->rows() as $role) { if (!isset($params['tree']['users']['children'])) { $params['tree']['users']['children'] = []; } $params['tree']['users']['children']['users-of-role-' . $role->id] = ['name' => $role->name, 'href' => '/users/' . $role->id, 'acl' => ['resource' => 'users-of-role-' . $role->id, 'permission' => 'index']]; } $this->application->services()->setParams('nav.top', $params); }
/** * Login a user * * @param mixed $user * @param \Pop\Session\Session $sess * @param array $config * @return void */ public function login($user, $sess, $config) { $user->failed_attempts = 0; $user->total_logins++; $user->save(); $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; $ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''; $session = new Session(); $session->login($user->id, $ip, $ua); $session->start($user->id, $sess->getId(), $ip, $ua); $cookie = Cookie::getInstance(['path' => '/']); $cookie->set('pop_session', 1); if ((int) $config['session_timeout'] > 0) { $cookie->delete('pop_session_timeout'); $cookie->set('pop_session_timeout', (int) $config['session_timeout'] * 60); if ((int) $config['timeout_warning'] > 0) { $cookie->delete('pop_timeout_warning'); $cookie->set('pop_timeout_warning', (int) $config['timeout_warning']); } } $role = Table\Roles::findById($user->role_id); $sess->user = new \ArrayObject(['id' => $user->id, 'sess_id' => $session->id, 'role_id' => $user->role_id, 'role' => $role->name, 'username' => $user->username, 'email' => $user->email, 'last_login' => $user->last_login, 'last_ip' => $user->last_ip], \ArrayObject::ARRAY_AS_PROPS); }
/** * Get count of user roles * * @return int */ public function getCount() { return Table\Roles::findAll(null, Table\Roles::ROW_AS_ARRAY)->count(); }