Example #1
0
 /**
  * Set the field values
  *
  * @param  array $values
  * @return Unsubscribe
  */
 public function setFieldValues(array $values = null)
 {
     parent::setFieldValues($values);
     if ($_POST && null !== $this->email) {
         $member = Table\Users::findBy(['email' => $this->email]);
         if (!isset($member->id)) {
             $this->getElement('email')->addValidator(new Validator\NotEqual($this->email, 'That email does not exist.'));
         } else {
             if (null !== $member->role_id) {
                 $sess = \Pop\Web\Session::getInstance();
                 $requireLogin = true;
                 $role = Table\Roles::findById($member->role_id);
                 if (isset($role->id) && null !== $role->permissions) {
                     $permissions = unserialize($role->permissions);
                     if (isset($permissions['deny'])) {
                         foreach ($permissions['deny'] as $deny) {
                             if ($deny['resource'] == 'member-login') {
                                 $requireLogin = false;
                             }
                         }
                     }
                 }
                 if ($requireLogin) {
                     if (!isset($sess->member) || isset($sess->member) && $sess->member->id != $member->id) {
                         $memberAdmin = new \Phire\Members\Model\MembersAdmin();
                         $memberAdmin->getByRoleId($member->role_id);
                         $memberUri = isset($memberAdmin->uri) ? $memberAdmin->uri : APP_URI;
                         $this->getElement('email')->addValidator(new Validator\NotEqual($this->email, 'You must <a href="' . BASE_PATH . $memberUri . '/login">log in</a> to unsubscribe.'));
                     }
                 }
             }
         }
     }
     return $this;
 }
 /**
  * Register action method
  *
  * @param  int $id
  * @return void
  */
 public function register($id)
 {
     $role = new Model\Role();
     if ($id == $this->memberRoleId && $role->canRegister($id, 'member-register')) {
         $this->prepareView('members/register.phtml');
         $this->view->title = $this->memberName . ' : Register';
         $captcha = isset($this->application->config()['registration_captcha']) && $this->application->config()['registration_captcha'];
         $csrf = isset($this->application->config()['registration_csrf']) && $this->application->config()['registration_csrf'];
         $role->getById($id);
         if ($role->email_as_username) {
             $fields = $this->application->config()['forms']['Phire\\Form\\RegisterEmail'];
             $fields[2]['role_id']['value'] = $id;
             $this->view->form = new Form\RegisterEmail($captcha, $csrf, $fields);
         } else {
             $fields = $this->application->config()['forms']['Phire\\Form\\Register'];
             $fields[2]['role_id']['value'] = $id;
             if ($role->email_required) {
                 $fields[1]['email']['required'] = true;
             }
             $this->view->form = new Form\Register($captcha, $csrf, $fields);
         }
         if ($this->request->isPost()) {
             $this->view->form->addFilter('strip_tags')->addFilter('htmlentities', [ENT_QUOTES, 'UTF-8'])->setFieldValues($this->request->getPost());
             if ($this->view->form->isValid()) {
                 $this->view->form->clearFilters()->addFilter('html_entity_decode', [ENT_QUOTES, 'UTF-8'])->filter();
                 $fields = $this->view->form->getFields();
                 $role->getById($id);
                 $fields['active'] = (int) (!$role->approval);
                 $fields['verified'] = (int) (!$role->verification);
                 $member = new \Phire\Members\Model\MembersAdmin();
                 $member->getByRoleId($id);
                 $memberUri = isset($member->uri) ? $member->uri : APP_URI;
                 $user = new Model\User();
                 $user->save($fields, $memberUri);
                 $this->view->id = $user->id;
                 $this->view->success = true;
                 $this->view->verified = $user->verified;
             }
         }
         $this->send();
     } else {
         $this->redirect(BASE_PATH . '/');
     }
 }
Example #3
0
 /**
  * Record logout/session end
  *
  * @param  \Pop\Application $application
  * @return void
  */
 public static function logout(Application $application)
 {
     $sess = $application->getService('session');
     $userUri = APP_URI;
     $key = 'user';
     if (isset($sess->member) && $application->isRegistered('phire-members')) {
         $key = 'member';
         $memberAdmin = new \Phire\Members\Model\MembersAdmin();
         $memberAdmin->getByRoleId($sess->member->role_id);
         if (isset($memberAdmin->uri)) {
             $userUri = $memberAdmin->uri;
         }
     }
     if ($application->router()->getRouteMatch()->getRoute() == $userUri . '/logout') {
         $path = BASE_PATH . APP_URI;
         if ($path == '') {
             $path = '/';
         }
         $cookie = Cookie::getInstance(['path' => $path]);
         $cookie->delete('phire_session_timeout');
         $cookie->delete('phire_session_path');
         $cookie->delete('phire_session_warning_dismiss');
         $sess = $application->getService('session');
         if (isset($sess[$key]) && isset($sess[$key]->session)) {
             $session = Table\UserSessions::findById((int) $sess[$key]->session->id);
             if (isset($session->id)) {
                 $session->delete();
             }
         }
     }
 }