/** * 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; }
/** * 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(); } }
/** * 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); }
/** * 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); }
/** * 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; }