Ejemplo n.º 1
0
 /**
  * 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();
 }
Ejemplo n.º 2
0
             $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');
 }
Ejemplo n.º 3
0
            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];
};
Ejemplo n.º 4
0
  * @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
Ejemplo n.º 5
0
 /**
  * @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');
 }
Ejemplo n.º 6
0
<?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';
};
Ejemplo n.º 7
0
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');
};
Ejemplo n.º 8
0
        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;
};
Ejemplo n.º 9
0
<?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';
};
Ejemplo n.º 10
0
 /**
  * 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);
 }
Ejemplo n.º 11
0
 /**
  * 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));
     }
 }