public function index($redir = '') { $userId = $this->session->getLoggedInUserId(); $this->session->destroySession(); $this->session->startSession($userId); return new Redirection($redir ?: '/members'); }
public function update($email, $password) { if (!empty($email) && !empty($password) && filter_var($email, FILTER_VALIDATE_EMAIL)) { if ($user = User::find($this->session->getLoggedInUserId())) { $event = new UserUpdateDataEvent($user, ['email' => $email, 'password' => $password]); $this->dispatcher->fire(UserUpdateDataEvent::USER_UPDATE_DATA, $event); if ($event->isHandled()) { return 'pass'; } } } throw new UserUpdateDataError("Unable to update credentials"); }
public function index($_params) { if (!empty($_params['password'])) { if ($user = User::find($this->session->getLoggedInUserId())) { $event = new UserUpdateDataEvent($user, ['password' => $_params['password']]); $this->dispatcher->fire(UserUpdateDataEvent::USER_UPDATE_DATA, $event); if ($event->isHandled()) { return json_encode(['update' => 'PASSWORD_RESET']); } else { throw new UserUpdateDataError($event->getError() ?: 'UNKNOWN_ERROR'); } } else { throw new UserUpdateDataError('UNKNOWN_USER'); } } else { throw new UserUpdateDataError('INVALID_DATA'); } }
public function send(ResponseEvent $event) { /** @var HttpResponseEx $response */ $response = $event->getResponse(); if ($response->getStatusCode() === 401) { $user_id = $this->session->getLoggedInUserId(); $reason = $user_id > 0 ? $this->lang->getText('Your account does not have the required authorization to view this page') : $this->lang->getText('You must be logged in to view this page'); if ($event->isAjaxRequest()) { $response->setContent($reason); } else { $url = $this->response->getLoginRedirect($reason, true); $response->redirect($url, 302); } } if (!headers_sent()) { foreach ($response->getHeaders() as $header) { header($header, false); } } echo $response->getContent() ?? sprintf("Error code: %d", $response->getStatusCode()); }
public function getCachedSessionData($reload) { $key = sprintf("session-user-%d", $this->session->getLoggedInUserId()); $userData = function () { $user_id = $this->session->getLoggedInUserId(); /** @var User $user_info */ if ($user_info = User::find($user_id)) { $user_data = array_diff_key($user_info->getAttributes(), ['password' => 1, 'verified' => 1, 'ident' => 1]); $user_data['groups'] = $this->userInfo->getUserGroups($user_id, true) ?: []; } else { $user_data = null; } if (!empty($user_data) && empty($user_data['full_name'])) { $user_data['full_name'] = trim(sprintf('%s %s', $user_data['first_name'], $user_data['last_name'])) ?: 'Anonymous'; } foreach ($this->providers->getEnabled() as $provider) { unset($provider['key'], $provider['secret']); $providers[] = $provider; } return ['site' => $this->config->getPublicVars(), 'user' => $user_data, 'providers' => $providers ?? []]; }; $data = $reload ? $userData() : $this->cache->get($key, $userData, 300); return $data; }
public function index() { $this->dispatcher->fire(UserLogoutEvent::USER_LOGOUT_SUCCESS, new UserLogoutEvent($this->session->getLoggedInUserId())); $this->session->destroySession(); return new Redirection('/'); }