public function actionIndex(User $user, Session $session)
 {
     $placeholders = [];
     if ($session->hasFlash($this->keySessionFlash)) {
         $placeholders['content'] = i18n::t('successActivate');
         return $this->render('success', $placeholders);
     } elseif ($user->isGuest() && ($users = Users::activate(Request::get('token')))) {
         // auto-login
         $user->addMulti($users->toArray(['id', 'username', 'url']));
         $user->login();
         $session->setFlash($this->keySessionFlash);
         $this->response->redirect(Url::set()->removeAllArgs()->getAbsoluteUrl(true))->send(true);
         return null;
     }
     return $this->notPage('@frontend.views/layouts/notPage');
 }
Exemple #2
0
 public function init()
 {
     $this->security = Instance::ensure($this->security, Security::className());
     $this->storage = Instance::ensure($this->storage, Session::className());
     if ($this->storage instanceof Cookie) {
         $this->storage->httpOnly = true;
     }
 }
 public function actionSignup(User $user, CSRF $CSRF, Session $session, Mail $mail)
 {
     if ($user->isLogged()) {
         $placeholders['content'] = $this->getMessageLogout($CSRF, 'signupLogout');
         return $this->render('success', $placeholders);
     }
     if (($message = $session->getFlash($this->keySessionFlash)) && isset($message['email'])) {
         $placeholders['content'] = $this->template->getChunk('@common.views/elements/alert-success', ['output' => i18n::t($this->keySessionFlash, ['email' => $message['email']])]);
         return $this->render('success', $placeholders);
     }
     $model = new SignupForm();
     // redirect
     Event::on($model, SignupForm::EVENT_AFTER_SIGNUP, function (ModelEvent $event) use($session, $mail, $model) {
         $this->sendMail($mail, $event->result, $model);
         $session->setFlash('successSignup', ['email' => $event->result->email]);
         $this->response->refresh()->send(true);
     });
     $model->load($_POST);
     $placeholders['model'] = $model;
     return $this->render('index.php', $placeholders);
 }
Exemple #4
0
 /**
  * Updates the current session ID with a newly generated one.
  * Please refer to <http://php.net/session_regenerate_id> for more details.
  * @param boolean $deleteOldSession Whether to delete the old associated session file or not.
  */
 public function regenerateID($deleteOldSession = false)
 {
     $oldID = session_id();
     // if no session is started, there is nothing to regenerate
     if (empty($oldID)) {
         return;
     }
     parent::regenerateID(false);
     $newID = session_id();
     $collection = $this->connection->getCollection($this->sessionCollection);
     $row = $collection->findOne(['id' => $oldID]);
     if ($row !== null) {
         if ($deleteOldSession) {
             $collection->update(['id' => $oldID], ['id' => $newID]);
         } else {
             unset($row['_id']);
             $row['id'] = $newID;
             $collection->insert($row);
         }
     } else {
         // shouldn't reach here normally
         $collection->insert(['id' => $newID, 'expire' => new \MongoDate(time() + $this->getTimeout())]);
     }
 }
Exemple #5
0
 /**
  * Writes a code to session.
  * @param string $code
  */
 protected function writeSession($code)
 {
     $this->session->setFlash($this->sessionKey, $code, false);
 }
Exemple #6
0
 /**
  * Remembers the URL in the session so that it can be retrieved back later by {@see \rock\user\User::getReturnUrl()}.
  * @param string|array $url the URL that the user should be redirected to after login.
  */
 public function setReturnUrl($url)
 {
     $this->storage->add($this->returnUrlParam, $url);
 }
Exemple #7
0
        return !Rock::$app->user->isGuest();
    }
    return \rock\helpers\ArrayHelper::getValue(Rock::$app->user->getAll(), $keys);
}, 'call' => function (array $call, array $params = [], Template $template) {
    if (!isset($call[1])) {
        $call[1] = null;
    }
    list($class, $method) = $call;
    if ($class === 'context') {
        $object = $template->context;
        $function = [$object, $method];
    } elseif (function_exists($class) && !$class instanceof \Closure) {
        return call_user_func_array($class, $params);
    } else {
        $object = \rock\di\Container::load($class);
        if (!method_exists($object, $method)) {
            throw new \rock\base\BaseException(\rock\base\BaseException::UNKNOWN_METHOD, ['method' => "{$class}::{$method}"]);
        }
        $function = [$object, $method];
    }
    return call_user_func_array($function, $params);
}], 'title' => 'Demo', 'metaTags' => ['charset' => '<meta charset="' . Rock::$app->charset . '" />'], 'linkTags' => ['favicon' => '<link rel="Shortcut Icon" type="image/x-icon" href="/favicon.ico?10">'], 'snippets' => ['request.get' => ['class' => \rock\snippets\request\Get::className()], 'request.post' => ['class' => \rock\snippets\request\Post::className()], 'csrf' => ['class' => \rock\snippets\CSRF::className()], 'captchaView' => ['class' => \rock\snippets\CaptchaView::className()], 'activeForm' => ['class' => \rock\snippets\ActiveForm::className()]]], 'execute' => ['class' => \rock\execute\CacheExecute::className()], 'i18n' => ['class' => \rock\i18n\i18n::className(), 'pathsDicts' => ['ru' => ['@rock/messages/ru/lang.php', '@rock/messages/ru/validate.php'], 'en' => ['@rock/messages/en/lang.php', '@rock/messages/en/validate.php']], 'locale' => [\rock\LocaleProperties::className(), 'locale']], 'date' => ['class' => \rock\date\DateTime::className(), 'locale' => [\rock\LocaleProperties::className(), 'locale'], 'formats' => ['dmy' => function (\rock\date\DateTime $dateTime) {
    $nowYear = date('Y');
    $lastYear = $dateTime->format('Y');
    return $nowYear > $lastYear ? $dateTime->format('j F Y') : $dateTime->format('d F');
}, 'dmyhm' => function (\rock\date\DateTime $dateTime) {
    $nowYear = date('Y');
    $lastYear = $dateTime->format('Y');
    return $nowYear > $lastYear ? $dateTime->format('j F Y H:i') : $dateTime->format('j F H:i');
}]], 'mail' => ['class' => \rock\mail\Mail::className(), 'From' => 'support@' . (new \rock\request\Request())->getHost(), 'FromName' => 'Rock Framework'], 'url' => ['class' => \rock\url\Url::className()], 'request' => ['class' => \rock\request\Request::className(), 'locale' => [\rock\LocaleProperties::className(), 'locale']], 'response' => ['class' => \rock\response\Response::className(), 'locale' => [\rock\LocaleProperties::className(), 'locale']], 'htmlResponseFormatter' => ['class' => \rock\response\HtmlResponseFormatter::className()], 'jsonResponseFormatter' => ['class' => \rock\response\JsonResponseFormatter::className()], 'xmlResponseFormatter' => ['class' => \rock\response\XmlResponseFormatter::className()], 'rssResponseFormatter' => ['class' => \rock\response\RssResponseFormatter::className()], 'session' => ['class' => \rock\session\Session::className(), 'cookieParams' => ['httponly' => true, 'lifetime' => 60 * 60 * 24 * 60, 'setUseCookies' => \rock\session\Session::USE_ONLY_COOKIES]], 'cookie' => ['class' => \rock\cookie\Cookie::className()], 'security' => ['class' => Security::className()], 'sanitize' => ['class' => \rock\sanitize\Sanitize::className()], 'validate' => ['class' => \rock\validate\Validate::className(), 'locale' => [\rock\LocaleProperties::className(), 'locale']], 'csrf' => ['class' => \rock\csrf\CSRF::className()], 'captcha' => ['class' => \rock\captcha\Captcha::className(), 'length' => 0, 'whiteNoiseDensity' => 1 / 6, 'blackNoiseDensity' => 1 / 30], 'user' => ['class' => \rock\user\User::className(), 'container' => 'user'], 'rbac' => ['class' => \rock\rbac\DBManager::className()], 'log' => ['class' => \rock\log\Log::className()], Role::className() => ['class' => Role::className()], Permission::className() => ['class' => Permission::className()]], require __DIR__ . '/widgets.php');
Exemple #8
0
 /**
  * Remove session.
  *
  * @param string|null $name
  */
 public function removeSession($name = null)
 {
     $this->session->removeFlash(Helper::getValue($name, $this->sessionName));
 }
 /**
  * Saves the number of allowed requests and the corresponding timestamp to a persistent storage.
  *
  * @param string $name name of action  e.g. `FooController::actionIndex`
  */
 public function removeAllowance($name)
 {
     $this->session->remove(['_allowance', $name]);
 }
Exemple #10
0
 /**
  * Updates the current session ID with a newly generated one .
  *
  * Please refer to <http://php.net/session_regenerate_id> for more details.
  * @param boolean $deleteOldSession Whether to delete the old associated session file or not.
  */
 public function regenerateID($deleteOldSession = false)
 {
     $oldID = session_id();
     // if no session is started, there is nothing to regenerate
     if (empty($oldID)) {
         return;
     }
     parent::regenerateID(false);
     $newID = session_id();
     $row = (new Query())->from($this->sessionTable)->where(['id' => $oldID])->createCommand($this->connection)->queryOne();
     if ($row !== null) {
         if ($deleteOldSession) {
             $this->connection->createCommand()->update($this->sessionTable, ['id' => $newID], ['id' => $oldID])->execute();
         } else {
             $row['id'] = $newID;
             $this->connection->createCommand()->insert($this->sessionTable, $row)->execute();
         }
     } else {
         // shouldn't reach here normally
         $this->connection->createCommand()->insert($this->sessionTable, ['id' => $newID, 'expire' => time() + $this->getTimeout()])->execute();
     }
 }