Ejemplo n.º 1
0
 public function actionActivate($key)
 {
     if (!$key) {
         throw new CHttpException(404, "Activation key should be specified");
     }
     $confirmation = IdentityConfirmation::model()->findByAttributes(array('key' => $key));
     if (!$confirmation) {
         throw new CHttpException(404, "Specified confirmation was not found");
     }
     $confirmation->confirm();
     Yii::app()->user->setFlash('success', "Your account activated successfully. You can login now.");
     $this->redirect(array($this->module->loginUrl));
 }
Ejemplo n.º 2
0
 /**
  * Action for run different confirmations. Such as email changing...
  * @param string $key
  * @throws CHttpException
  */
 public function actionConfirm($key)
 {
     if (!$key) {
         throw new CHttpException(404, "Confirmation key should be specified");
     }
     $confirmation = IdentityConfirmation::create($key);
     if (!$confirmation) {
         throw new CHttpException(404, "Specified confirmation was not found");
     }
     if ($confirmation->confirm()) {
         Yii::app()->user->setFlash('success', $confirmation->successMessage);
     } else {
         Yii::app()->user->setFlash('error', $confirmation->errorMessage);
     }
     $this->redirect(Yii::app()->user->isGuest ? array($this->module->loginUrl) : array($this->module->profileUrl));
 }
Ejemplo n.º 3
0
 /**
  * Updates status, generates confirmation row
  * @return IdentityConfirmation 
  */
 public function startConfirmation($type = IdentityConfirmation::TYPE_ACTIVATION_EMAIL)
 {
     $identityConfirmation = new IdentityConfirmation();
     $identityConfirmation->user_identity_id = $this->id;
     $identityConfirmation->sent_ts = date('Y-m-d H:i:s');
     $identityConfirmation->type = $type;
     $identityConfirmation->key = md5($identityConfirmation->type . $this->identity . microtime());
     $identityConfirmation->save();
     return $identityConfirmation;
 }
Ejemplo n.º 4
0
 /**
  * Instantiates particular subclass of IdentityConfirmation based on it's type
  * @todo:
  * - Replace this method by overriding afterFind method, where we can attach corresponding behaviour
  * @param type $id
  */
 public static function create($id)
 {
     $particularConfirmation = null;
     if (is_string($id)) {
         //creating by key
         $confirmation = IdentityConfirmation::model()->findByAttributes(array('key' => $id));
         if (!$confirmation) {
             return null;
         }
         if ($confirmation->type == IdentityConfirmation::TYPE_EMAIL_REPLACE_CONFIRMATION) {
             $particularConfirmation = new ReplaceEmailConfirmation();
             $particularConfirmation->setAttributes($confirmation->attributes, false);
             $particularConfirmation->isNewRecord = false;
         } else {
             $particularConfirmation = $confirmation;
         }
     }
     return $particularConfirmation;
 }