You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/06/16 20:36:28 UTC
[25/50] [abbrv] airavata-php-gateway git commit: adding email
utilities for password reset and account confirmation.
adding email utilities for password reset and account confirmation.
Project: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/commit/ff030373
Tree: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/tree/ff030373
Diff: http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/diff/ff030373
Branch: refs/heads/develop
Commit: ff030373c3850f78e97afd6e829b6f7f35094233
Parents: d5b8836
Author: scnakandala <su...@gmail.com>
Authored: Fri Apr 28 19:24:23 2017 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Fri Apr 28 19:24:23 2017 -0400
----------------------------------------------------------------------
app/config/email_templates.json | 27 ++++++++
app/config/email_templates.json.template | 27 ++++++++
app/config/pga_config.php.template | 5 ++
app/libraries/EmailUtilities.php | 91 +++++++++++++++++++++++++++
4 files changed, 150 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ff030373/app/config/email_templates.json
----------------------------------------------------------------------
diff --git a/app/config/email_templates.json b/app/config/email_templates.json
new file mode 100644
index 0000000..0420948
--- /dev/null
+++ b/app/config/email_templates.json
@@ -0,0 +1,27 @@
+{
+ "account_verification" : {
+ "subject" : "Verify Your Email Account",
+ "body" : [
+ "<div><p>",
+ "Dear $firstName $lastName,<br/>",
+ "Someone has created a account with this email address. If this was you, click the link below to verify your email address<br/>",
+ "<a href=\"$url\">$url</a><br/>",
+ "This link will expire within $validTime minutes.<br/>",
+ "If you didn't create this account, just ignore this message.",
+ "</p></div>"
+ ]
+ },
+
+ "password_reset" : {
+ "subject" : "Password Reset Request",
+ "body" : [
+ "<div><p>",
+ "Dear $firstName $lastName,<br/>",
+ "Someone has initiated a password reset request for the account associated with this email address. If this was you, click the link below to verify it was you.<br/>",
+ "<a href=\"$url\">$url</a><br/>",
+ "This link will expire within $validTime minutes.<br/>",
+ "If you didn't request a password reset, just ignore this message.",
+ "</p></div>"
+ ]
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ff030373/app/config/email_templates.json.template
----------------------------------------------------------------------
diff --git a/app/config/email_templates.json.template b/app/config/email_templates.json.template
new file mode 100644
index 0000000..7737844
--- /dev/null
+++ b/app/config/email_templates.json.template
@@ -0,0 +1,27 @@
+{
+ "account_verification" : {
+ "subject" : "Verify Your Email Account",
+ "body" : [
+ "<div><p>",
+ "Dear $firstName $lastName,<br/>",
+ "Someone has created a account with this email address. If this was you, click the link below to verify your email address<br/>",
+ "<a href=\"$url\">$url</a><br/>",
+ "This link will expire within $validTime minutes.<br/>",
+ "If you didn't create this account, just ignore this message.",
+ "</p></div>"
+ ]
+ },
+
+ "password_reset" : {
+ "subject" : "Password Reset Request",
+ "body" : [
+ "<div><p>",
+ "Dear $firstName $lastName,<br/>",
+ "Someone has initiated a password reset request for the account associated with this email address. If this was you, click the link below to verify it was you.<br/>",
+ "<a href=\"$url\">$url</a><br/>",
+ "This link will expire within $validTime minutes.<br/>",
+ "If you didn't request a password reset, just ignore this message.",
+ "</p></div>"
+ ]
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ff030373/app/config/pga_config.php.template
----------------------------------------------------------------------
diff --git a/app/config/pga_config.php.template b/app/config/pga_config.php.template
index e225cf0..cd7f1df 100644
--- a/app/config/pga_config.php.template
+++ b/app/config/pga_config.php.template
@@ -215,6 +215,11 @@ return array(
'portal-smtp-server-port' => '587',
/**
+ * Email verification code valid time interval in minutes
+ */
+ 'email-verify-code-valid-time' => 360,
+
+ /**
* Set this to true if theme has set links to login
*/
'theme-based-login-links-configured' => false,
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/ff030373/app/libraries/EmailUtilities.php
----------------------------------------------------------------------
diff --git a/app/libraries/EmailUtilities.php b/app/libraries/EmailUtilities.php
new file mode 100644
index 0000000..c2d6741
--- /dev/null
+++ b/app/libraries/EmailUtilities.php
@@ -0,0 +1,91 @@
+<?php
+
+
+class EmailUtilities
+{
+
+ public static function sendVerifyEmailAccount($username, $firstName, $lastName, $email){
+ $validTime = Config::get('pga_config.portal')['mail-verify-code-valid-time'];
+ $code = uniqid();
+ Cache::put('PGA-VERIFY-EMAIL-' . $username, $code, $validTime);
+
+ $emailTemplates = json_decode(File::get(app_path() . '/config/email_templates.json'));
+ $subject = $emailTemplates->account_verification->subject;
+ $body = trim(implode($emailTemplates->account_verification->body));
+
+ $body = str_replace("\$url", URL::to('/') . '/confirmAccountCreation?username=' . $username . '&code=' . $code, $body);
+ $body = str_replace("\$firstName", $firstName, $body);
+ $body = str_replace("\$lastName", $lastName, $body);
+ $body = str_replace("\$validTime", $validTime, $body);
+
+ EmailUtilities::sendEmail($subject, [$email], $body);
+ }
+
+ public static function verifyEmailVerification($username, $code){
+ if(Cache::has('PGA-VERIFY-EMAIL-' . $username)){
+ $storedCode = Cache::get('PGA-VERIFY-EMAIL-' . $username);
+ Cache::forget('PGA-VERIFY-EMAIL-' . $username);
+ return $storedCode == $code;
+ }else{
+ return false;
+ }
+ }
+
+ public static function sendPasswordResetEmail($username, $firstName, $lastName, $email){
+ $validTime = Config::get('pga_config.portal')['mail-verify-code-valid-time'];
+ $code = uniqid();
+ Cache::put('PGA-RESET-PASSWORD-' . $username, $code, $validTime);
+
+ $emailTemplates = json_decode(File::get(app_path() . '/config/email_templates.json'));
+ $subject = $emailTemplates->password_reset->subject;
+ $body = trim(implode($emailTemplates->password_reset->body));
+
+ $body = str_replace("\$url", URL::to('/'). '/resetPassword?username=' . $username . '&code='.$code, $body);
+ $body = str_replace("\$firstName", $firstName, $body);
+ $body = str_replace("\$lastName", $lastName, $body);
+ $body = str_replace("\$validTime", $validTime, $body);
+
+ EmailUtilities::sendEmail($subject, [$email], $body);
+ }
+
+ public static function verifyPasswordResetCode($username, $code){
+ if(Cache::has('PGA-RESET-PASSWORD-' . $username)){
+ $storedCode = Cache::get('PGA-RESET-PASSWORD-' . $username);
+ Cache::forget('PGA-RESET-PASSWORD-' . $username);
+ return $storedCode == $code;
+ }else{
+ return false;
+ }
+ }
+
+ public static function sendEmail($subject, $recipients, $body){
+
+ $mail = new PHPMailer();
+
+ $mail->isSMTP();
+ $mail->SMTPDebug = 3;
+ $mail->Host = Config::get('pga_config.portal')['portal-smtp-server-host'];
+
+ $mail->SMTPAuth = true;
+
+ $mail->Username = Config::get('pga_config.portal')['portal-email-username'];
+ $mail->Password = Config::get('pga_config.portal')['portal-email-password'];
+
+ $mail->SMTPSecure = "tls";
+ $mail->Port = intval(Config::get('pga_config.portal')['portal-smtp-server-port']);
+
+ $mail->From = Config::get('pga_config.portal')['portal-email-username'];
+ $mail->FromName = "Airavata PHP Gateway";
+
+ $mail->Encoding = '8bit';
+ $mail->ContentType = 'text/html; charset=utf-8\r\n';
+
+ foreach($recipients as $recipient){
+ $mail->addAddress($recipient);
+ }
+
+ $mail->Subject = $subject;
+ $mail->Body = html_entity_decode($body);
+ $mail->send();
+ }
+}
\ No newline at end of file