Example #1
0
 /**
  * Register a user.
  *
  * Will also send an email to the user.
  *
  * @param array $data Registration data
  *
  * @return NewUserModel New registered user. Null when the user could not be registered.
  */
 public function register($data)
 {
     $form = $this->getRegisterForm();
     $form->setData($data);
     if (!$form->isValid()) {
         return null;
     }
     // get the member
     $data = $form->getData();
     $member = $this->getMemberMapper()->findByLidnr($data['lidnr']);
     if (null === $member) {
         $form->setError(RegisterForm::ERROR_MEMBER_NOT_EXISTS);
         return null;
     }
     // check if the email is the same
     if ($member->getEmail() != $data['email']) {
         $form->setError(RegisterForm::ERROR_WRONG_EMAIL);
         return null;
     }
     // check if the member already has a corresponding user.
     $user = $this->getUserMapper()->findByLidnr($member->getLidnr());
     if (null !== $user) {
         $form->setError(RegisterForm::ERROR_USER_ALREADY_EXISTS);
         return null;
     }
     // save the data, and send email
     $newUser = new NewUserModel($member);
     $newUser->setCode($this->generateCode());
     $this->getNewUserMapper()->persist($newUser);
     $this->getEmailService()->sendRegisterEmail($newUser, $member);
     return $newUser;
 }
Example #2
0
 /**
  * Constructor
  */
 public function __construct(NewUser $newUser = null)
 {
     $this->roles = new ArrayCollection();
     if (null !== $newUser) {
         $this->lidnr = $newUser->getLidnr();
         $this->email = $newUser->getEmail();
         $this->member = $newUser->getMember();
     }
 }
Example #3
0
 /**
  * Send password lost email.
  *
  * @param NewUserModel $activation
  * @param MemberModel $member
  */
 public function sendPasswordLostMail(NewUserModel $newUser, MemberModel $member)
 {
     $body = $this->render('user/email/reset', ['user' => $newUser, 'member' => $member]);
     $translator = $this->getServiceManager()->get('translator');
     $message = new Message();
     $config = $this->getConfig();
     $message->addFrom($config['from']);
     $message->addTo($newUser->getEmail());
     $message->setSubject($translator->translate('Password reset code for the GEWIS Website'));
     $message->setBody($body);
     $this->getTransport()->send($message);
 }
Example #4
0
 /**
  * Send registration email.
  *
  * @param NewUserModel $newUser
  * @param MemberModel $member
  */
 public function sendRegisterEmail(NewUserModel $newUser, MemberModel $member)
 {
     $body = $this->render('user/email/register', array('user' => $newUser, 'member' => $member));
     $translator = $this->getServiceManager()->get('translator');
     $message = new Message();
     $config = $this->getConfig();
     $message->addFrom($config['from']);
     $message->addTo($newUser->getEmail());
     $message->setSubject($translator->translate('Account activation code for the GEWIS Website'));
     $message->setBody($body);
     $this->getTransport()->send($message);
 }
Example #5
0
 /**
  * Request a password reset.
  *
  * Will also send an email to the user.
  *
  * @param array $data Reset data
  *
  * @return UserModel User. Null when the password could not be reset.
  */
 public function reset($data)
 {
     $form = $this->getPasswordResetForm();
     $form->setData($data);
     if (!$form->isValid()) {
         return null;
     }
     // get the member
     $data = $form->getData();
     $member = $this->getMemberMapper()->findByLidnr($data['lidnr']);
     // check if the member has a corresponding user.
     $user = $this->getUserMapper()->findByLidnr($member->getLidnr());
     if (null === $user) {
         $form->setError(RegisterForm::ERROR_MEMBER_NOT_EXISTS);
         return null;
     }
     // Invalidate all previous password reset codes
     // Makes sure that no double password reset codes are present in the database
     $this->getNewUserMapper()->deleteByMember($member);
     // create new activation
     $newUser = new NewUserModel($member);
     $newUser->setCode($this->generateCode());
     $this->getNewUserMapper()->persist($newUser);
     $this->getEmailService()->sendPasswordLostMail($newUser, $member);
     return $user;
 }