Exemplo n.º 1
0
 protected function renderContent()
 {
     $member = new Member();
     $member->scenario = 'newAccountForm';
     if (isset($_GET['ahash'])) {
         if (($existingMember = Member::model()->findByAttributes(array('activation_hash' => $_GET['ahash']))) && $existingMember->activation_time >= date('Y-m-d H:i:s', strtotime('-1 day'))) {
             $existingMember->activation_hash = '';
             $existingMember->activation_time = null;
             $existingMember->save();
             $originalLayout = $this->controller->layout;
             $this->controller->layout = '//layouts/email';
             $to = $existingMember->email;
             $subject = Yii::t('memberModule.common', 'Bienvenue');
             $body = $this->controller->render('member.components.views.emailWelcome', array(), true);
             $this->controller->layout = $originalLayout;
             Helper::sendMail($to, $subject, $body);
             // Login user
             Yii::app()->authManager->assign('Member', 'Member-' . $existingMember->id);
             $identity = new MemberIdentity($existingMember->email, '');
             $identity->authenticate(true);
             Yii::app()->user->login($identity, 0);
             $this->controller->redirect($this->controller->createUrl('/member/default/account', array('new' => 1)));
         } else {
             $this->controller->redirect($this->controller->createUrl('/site/index', array('message' => 'newaccountexpired')));
         }
     }
     if (isset($_POST['Member'])) {
         if ($existingMember = Member::model()->findByAttributes(array('email' => $_POST['Member']['email']), "activation_hash <> ''")) {
             $member = $existingMember;
         }
         $member->scenario = 'newAccountForm';
         $member->attributes = $_POST['Member'];
         $member->activation_hash = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 32);
         $member->activation_time = date('Y-m-d H:i:s');
         if ($member->save()) {
             $originalLayout = $this->controller->layout;
             $this->controller->layout = '//layouts/email';
             $to = $member->email;
             $subject = Yii::t('memberModule.common', 'Votre nouveau compte a besoin d’être activé');
             $body = $this->controller->render('member.components.views.emailActivation', array('member' => $member), true);
             $this->controller->layout = $originalLayout;
             Helper::sendMail($to, $subject, $body);
             $this->controller->redirect($this->controller->createUrl('/site/index', array('message' => 'newaccount')));
         }
     }
     $this->render('newAccountFormWidget', array('member' => $member));
 }
Exemplo n.º 2
0
 public function actionDoLogin()
 {
     $name = Yii::app()->request->getParam('name');
     $password = Yii::app()->request->getParam('password');
     if (!$name) {
         $this->errorOutput(array('error' => 1));
     }
     if (!$password) {
         $this->errorOutput(array('error' => 2));
     }
     //利用MemberIdentity来验证
     $identity = new MemberIdentity($name, $password);
     $identity->authenticate();
     //登录成功
     if ($identity->errorCode === MemberIdentity::ERROR_NONE) {
         $duration = 3600 * 24;
         //保持一个月
         Yii::app()->user->login($identity, $duration);
         $this->errorOutput(array('error' => 4));
     } else {
         $this->errorOutput(array('error' => 3));
     }
 }