예제 #1
0
 public function register()
 {
     $signedUser = $this->app->user();
     // auth
     if (Util\Auth::isAuth($signedUser)) {
         header('Location: /profile');
         exit;
     }
     // check
     $user = new \Rebond\Core\User\Model();
     $form = new \Rebond\Core\User\Form($user);
     $tpl = new Util\Template(Util\Template::MODULE, ['app', 'User']);
     // register
     $register = Util\Converter::string('register', 'post');
     if (isset($register)) {
         if ($form->setFromPost()->validate()->isValid()) {
             $user->setStatus(0);
             $user->setPassword(Util\Security::encryptPassword($user->getPassword()));
             $avatarId = Util\Media::generateAvatar($user->getUsername());
             $user->setAvatarId($avatarId);
             $user->save();
             // send email
             if (Mail::register($this->app->site()->getTitle(), $user)) {
                 return $tpl->render('register-success');
             } else {
                 $user->setStatus(1);
                 $user->save();
                 $userRole = new \Rebond\Core\UserRole\Model();
                 $userRole->setUserId($user->getId());
                 $userRole->setRoleId(5);
                 // member
                 $userRole->save();
                 return $tpl->render('register-success-nomail');
             }
         } else {
             Session::set('siteError', $form->getValidation()->getMessage());
         }
     }
     // confirm email
     $confirm = Util\Converter::string('confirm');
     if (isset($confirm)) {
         $signedUser = \Rebond\Core\UserSecurity\Data::loadBySecure($confirm, \Rebond\Core\UserSecurity\Model::CONFIRM);
         if (isset($signedUser) && $signedUser->getId() != 0) {
             $userRole = new \Rebond\Core\UserRole\Model();
             $userRole->setUserId($signedUser->getId());
             $userRole->setRoleId(5);
             // member
             $userRole->save();
             Util\Session::set('allSuccess', Util\Lang::lang('hi', [$signedUser->getUsername()]));
             Util\Session::set('signedUser', $signedUser->getId());
             $this->app->setUser($signedUser);
             return $tpl->render('register-confirm');
         }
     }
     $tpl->set('item', $form);
     return $tpl->render('register');
 }