/** * Denied access * @throws ForbiddenException * @return void */ public function denied() { // add messages make sense only if presentation is not json, xml, etc if (!$this->getResponse()->getPresentation()) { Messages::addError('You don\'t have permissions, please sign in'); } // redirect to login page if (!$this->user()) { // save URL to session and redirect make sense if presentation is null if (!$this->getResponse()->getPresentation()) { Session::set('rollback', Request::getRequestUri()); $this->redirectTo('users', 'signin'); } } throw new ForbiddenException(); }
$mail->Subject = $subject; $mail->msgHTML(nl2br($body)); $mail->addAddress($email); Mailer::send($mail); Messages::addNotice('Check your email and follow instructions in letter.'); } catch (\Exception $e) { Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'change-email', 'userId' => $userId]); throw new Exception('Unable to send email. Please contact administrator.'); } // try back to index Response::redirectTo('users', 'profile'); } catch (Exception $e) { Messages::addError($e->getMessage()); $this->assign('email', $email); } catch (AuthException $e) { Messages::addError($e->getMessage()); $this->assign('email', $email); } } elseif ($token) { // process activation $actionRow = UsersActions\Table::findRowWhere(['code' => $token, 'userId' => $userId]); if (!$actionRow) { throw new Exception('Invalid token'); } $params = $actionRow->getParams(); $user->email = $params['email']; $user->save(); $actionRow->delete(); Messages::addSuccess('Email was updated'); Response::redirectTo('users', 'profile'); }
break; case 501: $title = __("Not Implemented"); $description = __("The server does not understand or does not support the HTTP method"); break; case 503: $title = __("Service Unavailable"); $description = __("The server is currently unable to handle the request due to a temporary overloading"); Response::setHeader('Retry-After', '600'); break; default: $title = __("Internal Server Error"); $description = __("An unexpected error occurred with your request. Please try again later"); break; } // check CLI or HTTP request if (Request::isHttp()) { // simple AJAX call, accept JSON if (Request::getAccept(['application/json'])) { $this->useJson(); Messages::addError($description); return null; } // dialog AJAX call, accept HTML if (!Request::isXmlHttpRequest()) { $this->useLayout('small.phtml'); } } Layout::title($title); return ['error' => $title, 'description' => $description]; };
* @var \Bluz\View\View $view */ $actionRow = UsersActions\Table::findRow(['userId' => $id, 'code' => $code]); if (!$actionRow) { Messages::addError('Invalid activation code'); $this->redirectTo('index', 'index'); return false; } $datetime1 = new \DateTime(); // now $datetime2 = new \DateTime($actionRow->expired); $interval = $datetime1->diff($datetime2); if ($actionRow->action !== UsersActions\Table::ACTION_ACTIVATION) { Messages::addError('Invalid activation code'); } elseif ($interval->invert) { Messages::addError('The activation code has expired'); $actionRow->delete(); } else { // change user status $userRow = Users\Table::findRow($id); $userRow->status = Users\Table::STATUS_ACTIVE; $userRow->save(); // create user role // get member role $roleRow = Roles\Table::findRowWhere(['name' => Table::BASIC_MEMBER]); // create relation user to role $usersRoleRow = new UsersRoles\Row(); $usersRoleRow->roleId = $roleRow->id; $usersRoleRow->userId = $userRow->id; $usersRoleRow->save(); // remove old code
/** * @param $auth * @return mixed */ public function alreadyRegisteredLogic($auth) { $user = Users\Table::findRow($auth->userId); if ($user->status != Users\Table::STATUS_ACTIVE) { Messages::addError('User is not active'); } $user->login(); $this->response->redirectTo('index', 'index'); }
<?php /** * Test CLI * * @author Anton Shevchuk * @created 18.11.12 19:41 */ namespace Application; use Bluz\Proxy\Messages; return function ($flag = false) use($view) { /** * @var Bootstrap $this * @var \Bluz\View\View $view */ if ($flag) { Messages::addNotice('Notice Text'); Messages::addSuccess('Success Text'); Messages::addError('Error Text'); Messages::addError('Another Error Text'); } $view->string = 'bar'; $view->array = ['some', 'array']; $view->object = new \stdClass(); $view->object->property = 'example'; };
use Bluz\Proxy\Cache; use Bluz\Proxy\Db; use Bluz\Proxy\Messages; return function ($acl) use($view) { /** * @var Bootstrap $this * @var \Bluz\View\View $view */ $callback = function () use($acl) { /** * @var Bootstrap $this */ Db::query('DELETE FROM acl_privileges'); foreach ($acl as $roleId => $modules) { foreach ($modules as $module => $privileges) { foreach ($privileges as $privilege => $flag) { Db::query('INSERT INTO acl_privileges SET roleId = ?, module = ?, privilege = ?', array($roleId, $module, $privilege)); } } } }; if (empty($acl)) { Messages::addError('Privileges set is empty. You can\'t remove all of them'); } elseif (Db::transaction($callback)) { Cache::deleteByTag('privileges'); Messages::addSuccess('All data was saved'); } else { Messages::addError('Internal Server Error'); } $this->redirectTo('acl', 'index'); };
case 503: $title = __("Service Unavailable"); $description = __("The server is currently unable to handle the request due to a temporary overloading"); Response::setHeader('Retry-After', '600'); break; default: $title = __("Internal Server Error"); $description = __("An unexpected error occurred with your request. Please try again later"); break; } // check CLI or HTTP request if (Request::isHttp()) { // simple AJAX call, accept JSON if (Request::getAccept() == Request::ACCEPT_JSON) { $this->useJson(); Messages::addError($message); return $view; } // dialog AJAX call, accept HTML if (!Request::isXmlHttpRequest()) { $this->useLayout('small.phtml'); } } Layout::title($title); $view->error = $title; $view->description = $description; if (getenv('BLUZ_DEBUG') && $message != '') { $view->message = $message; } return $view; };
<?php /** * Test AJAX * * @author Anton Shevchuk * @created 26.09.11 17:41 * @return closure */ namespace Application; use Bluz\Proxy\Messages; use Bluz\Proxy\Request; return function ($messages = false) use($view) { /** * @var Bootstrap $this * @var \Bluz\View\View $view */ if ($messages) { Messages::addNotice('Notice for AJAX call'); Messages::addSuccess('Success for AJAX call'); Messages::addError('Error for AJAX call'); $view->baz = 'qux'; } Messages::addNotice('Method ' . Request::getMethod()); $view->foo = 'bar'; };
/** * Test Messages container */ public function testMessagesPopAll() { Proxy\Messages::addError('error'); Proxy\Messages::addNotice('notice'); Proxy\Messages::addSuccess('success'); $messages = Proxy\Messages::popAll(); $this->assertArrayHasKeyAndSize($messages, 'error', 1); $this->assertArrayHasKeyAndSize($messages, 'notice', 1); $this->assertArrayHasKeyAndSize($messages, 'success', 1); }
/** * Denied access * @param ForbiddenException $exception * @return \Bluz\Controller\Controller|null */ public function forbidden(ForbiddenException $exception) { if (AuthProxy::getIdentity()) { $message = Translator::translate("You don't have permissions to access this page"); } else { $message = Translator::translate("You don't have permissions, please sign in"); } // for AJAX and API calls (over JSON) $jsonOrApi = Request::isXmlHttpRequest() || Request::getAccept([Request::TYPE_HTML, Request::TYPE_JSON]) == Request::TYPE_JSON; // for guest, for requests if (!AuthProxy::getIdentity() && !$jsonOrApi) { // save URL to session and redirect make sense if presentation is null Session::set('rollback', Request::getUri()->__toString()); // add error notice Messages::addError($message); // redirect to Sign In page $url = Router::getUrl('users', 'signin'); return $this->redirect($url); } else { return $this->error(new ForbiddenException($message, 403, $exception)); } }