Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 /**
  * 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);
 }
Пример #3
0
 /**
  * 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);
 }
Пример #4
0
 /**
  * Get count of user roles
  *
  * @return int
  */
 public function getCount()
 {
     return Table\Roles::findAll(null, Table\Roles::ROW_AS_ARRAY)->count();
 }