Skip to content

Commit

Permalink
Move registration and verification email tasks to Member and update t…
Browse files Browse the repository at this point in the history
…emplate
  • Loading branch information
mlewis-everley committed Feb 22, 2018
1 parent 68b04c4 commit a879def
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 56 deletions.
55 changes: 3 additions & 52 deletions code/control/Users_Register_Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,31 +42,8 @@ class Users_Register_Controller extends Controller
*/
protected function send_verification_email(Member $member)
{
if ($member) {
$subject = _t("Users.PleaseVerify", "Please verify your account");
if (Users::config()->send_email_from) {
$from = Users::config()->send_email_from;
} else {
$from = Email::config()->admin_email;
}

$body = $this->renderWith(
'UsersAccountVerification',
array(
"Link" => Controller::join_links(
Director::absoluteBaseURL(),
$this->config()->url_segment,
"verify",
$member->ID,
$member->VerificationCode
)
)
);

$email = new Email($from, $member->Email, $subject, $body);
$email->sendPlain();

return true;
if ($member->exists()) {
return $member->sendVerificationEmail();
}

return false;
Expand Down Expand Up @@ -321,36 +298,10 @@ public function doRegister($data, $form)
}

$member = Member::create();
$form->saveInto($member);

// Set verification code for this user
$member->VerificationCode = sha1(mt_rand() . mt_rand());
$member->write();

// Add member to any groups that have been specified
if (count(Users::config()->new_user_groups)) {
$groups = Group::get()->filter(array(
"Code" => Users::config()->new_user_groups
));

foreach ($groups as $group) {
$group->Members()->add($member);
$group->write();
}
}
$member->Register($data);

$this->extend("updateNewMember", $member, $data);

// Send a verification email, if needed
if (Users::config()->send_verification_email) {
$this->send_verification_email($member);
}

// Login (if enabled)
if (Users::config()->login_after_register) {
$member->LogIn(isset($data['Remember']));
}

$session_url = Session::get("BackURL");
$request_url = $this->getRequest()->requestVar("BackURL");

Expand Down
84 changes: 82 additions & 2 deletions code/extensions/Ext_Users_Member.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,88 @@ public function isVerified()
return Permission::checkMember($this->owner, "USERS_VERIFIED");
}

public function updateCMSFields(FieldList $fields)
/**
* Register a new user account using the provided data
* and then return the current member
*
* @param array $data
* @return Member
*/
public function Register($data)
{
return $fields;
// If we have passed a confirm password field, clean the
// data
if (isset($data["Password"]) && is_array($data["Password"]) && isset($data["Password"]["_Password"])) {
$data["Password"] = $data["Password"]["_Password"];
}

$this->owner->update($data);

// Set verification code for this user
$this->owner->VerificationCode = sha1(mt_rand() . mt_rand());
$this->owner->write();

// Add member to any groups that have been specified
if (count(Users::config()->new_user_groups)) {
$groups = Group::get()->filter(array(
"Code" => Users::config()->new_user_groups
));

foreach ($groups as $group) {
$group->Members()->add($this->owner);
$group->write();
}
}

// Send a verification email, if needed
if (Users::config()->send_verification_email) {
$this->owner->sendVerificationEmail();
}

// Login (if enabled)
if (Users::config()->login_after_register) {
$this->owner->LogIn(isset($data['Remember']));
}

return $this->owner;
}

/**
* Send a verification email to this user account
*
* @return boolean
*/
public function sendVerificationEmail()
{
if ($this->owner->exists()) {
$controller = Injector::inst()->get("Users_Register_Controller");
$subject = _t("Users.PleaseVerify", "Please verify your account");

if (Users::config()->send_email_from) {
$from = Users::config()->send_email_from;
} else {
$from = Email::config()->admin_email;
}

$email = Email::create();
$email
->setFrom($from)
->setTo($this->owner->Email)
->setSubject($subject)
->setTemplate('UsersAccountVerification')
->populateTemplate(ArrayData::create(array(
"Link" => Controller::join_links(
$controller->AbsoluteLink("verify"),
$this->owner->ID,
$this->owner->VerificationCode
)
)));

$email->send();

return true;
}

return false;
}
}
4 changes: 2 additions & 2 deletions templates/email/UsersAccountVerification.ss
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<% _t("Users.PleaseVerify", "Please verify your account using the link below:") %>
<p><% _t("Users.PleaseVerify", "Please verify your account using the link below:") %></p>

$Link
<p><a href="{$Link}">{$Link}</a></p>

0 comments on commit a879def

Please sign in to comment.