예제 #1
0
 protected function _execute(array $data)
 {
     $email = new Email('default');
     $email->template("devis");
     $email->emailFormat("both");
     $email->viewVars($data);
     $email->from(["*****@*****.**" => "Contact Reno Patrimoine"]);
     $email->to("*****@*****.**");
     $email->subject("Demande de devis: " . $data["prenom"] . " " . $data["nom"]);
     $email->send();
     return true;
 }
예제 #2
0
 public function afterForgot($event, $user)
 {
     $email = new Email('default');
     $email->viewVars(['user' => $user, 'resetUrl' => Router::fullBaseUrl() . Router::url(['prefix' => false, 'plugin' => 'Users', 'controller' => 'Users', 'action' => 'reset', $user['email'], $user['request_key']]), 'baseUrl' => Router::fullBaseUrl(), 'loginUrl' => Router::fullBaseUrl() . '/login']);
     $email->from(Configure::read('Users.email.from'));
     $email->subject(Configure::read('Users.email.afterForgot.subject'));
     $email->emailFormat('both');
     $email->transport(Configure::read('Users.email.transport'));
     $email->template('Users.afterForgot', 'Users.default');
     $email->to($user['email']);
     $email->send();
 }
예제 #3
0
 public function requestPasswordReset()
 {
     $user = $this->Users->newEntity();
     if ($this->request->is('post')) {
         $user = $this->Users->patchEntity($user, $this->request->data, ['validate' => 'requestPasswordReset']);
         if (!$user->errors()) {
             $token = $this->Users->savePasswordToken($this->request->data['email']);
             $email = new Email('default');
             $email->viewVars(['token' => $token, 'name' => $user->name])->from(['*****@*****.**' => 'LifeSpark'])->to($user->email)->emailFormat('html')->template('password_reset')->subject('Wachtwoord veranderen op LifeSpark.nl');
             $this->Flash->success(__('An email has been send to {0}', [$this->request->data['email']]));
             return $this->redirect(['action' => 'login']);
         }
     }
     $this->set('user', $user);
 }
 /**
  * Abstract sender method
  *
  * @param User $user The recipient user
  * @param Notification $notification the notification to be sent
  * @param NotificationContent $content the content
  * @return mixed
  */
 public function sendNotification(User $user, Notification $notification, NotificationContent $content)
 {
     $subject = $content->render('email_subject', $notification);
     $htmlBody = $content->render('email_html', $notification);
     $textBody = $content->render('email_text', $notification);
     $email = new Email($this->_config['profile']);
     $email->transport($this->_config['emailTransport']);
     $email->emailFormat('html');
     if (!empty($notification->config['attachments'])) {
         $email->attachments($notification->config['attachments']);
     }
     $email->to([$user->email => $user->firstname . ' ' . $user->lastname]);
     $email->subject($subject);
     if (!empty($this->_config['templated']) && !empty($this->_config['template']) && !empty($this->_config['layout'])) {
         $email->template($this->_config['template'], $this->_config['layout']);
         $email->viewVars(['content' => $htmlBody]);
         return $email->send();
     }
     return $email->send($htmlBody);
 }
예제 #5
0
 /**
  * Sends reset email
  *
  * @param entity $user User entity.
  * 
  * @return void
  */
 public function sendResetEmail($user)
 {
     $reset_key = uniqid();
     $user->{Configure::read('Lil.passwordResetField')} = $reset_key;
     if ($this->save($user)) {
         $email = new Email('default');
         $email->from([Configure::read('Lil.from.email') => Configure::read('Lil.from.name')]);
         $email->to($user->{Configure::read('Lil.userEmailField')});
         $email->subject(__d('lil', 'Password Reset'));
         $email->template('Lil.reset');
         $email->emailFormat('text');
         $email->viewVars(['reset_key' => $reset_key]);
         $email->helpers(['Html']);
         return $email->send();
     }
     return false;
 }
예제 #6
0
 /**
  * Reset Password method
  *
  * @param string|null $id User id.
  * @return void Redirects to password reset page.
  * @throws \Cake\Network\Exception\NotFoundException When user record not found.
  *
  * @description This will run when the user clicks on the reset password
  *  link to generate a new replacment password. This is done by entering their email address
  *    that they registered with, this ensures the user owns the account 
  *   they are resetting the password on and also that they cant intercept the
  *   new password.  We firstly generate a random string storing it in the database then
  * this string is sent as part of the users link to click on again ensuring the user requesting
  * the new password is the one who owns the account.  After the user arrives at the url they are
  *  presented with a small form consisting of 2 password fields: Password & Confirm Password
  * after a quick check that the passwords match the new password is Hashed and stored in the DB
  *  and the user is returned to the log in page with a flash message telling them it worked 
  * if there was an error the page will not re direct and will display the error allowing user to retry.
  *
  */
 public function resetPassword()
 {
     //set this function to only run with data from a post request
     //$this->request->allowMethod(['post']);
     //check the form has been submitted
     if (isset($_POST['txtEmail'])) {
         /*
             Build a custom SQL query object to find all users and 
             filter that to the user whos email matches the form data
             on the reset password form.
         */
         $query = TableRegistry::get('Users')->find();
         $query->where(['email' => $_POST['txtEmail']]);
         //loop through query result
         foreach ($query as $user) {
             //when we match on the right user data from our DB lookup
             if ($user->email == $_POST['txtEmail']) {
                 //set the viewVariable to this userEmail.
                 $selectedUser = $user;
             }
         }
         //end foreach query result (should only be one in this case)
         if (isset($selectedUser)) {
             //if the selectedUser data isSet then set the viewVar with this data else do nothing to prevent empty form submit.
             $this->set('selectedUser', $selectedUser);
             //Create new random HASHED String to send to user
             // for security and randomness i mixed older md5 with nice sha256 ;)
             $intermediateSalt = md5(uniqid(rand(), true));
             //set a temp string of 7 digits in length no decimal places
             $salt = substr($intermediateSalt, 0, 7);
             //now run random string through a 256bit sha encrypt  - maybe overkill?
             $randPassword = hash("sha256", $salt);
             //update the selectedUsers reset value from old to new.
             $selectedUser->reset = $randPassword;
             //Store temp HASH in user database
             //store the id of the user in question to save time on a db lookup.
             $id = $selectedUser->id;
             //Send email to customer with their new reset password hashed link/url
             //create email object and set email config settings
             $tempEmail = new Email('default');
             $tempEmail->transport('default');
             //set the type of email format and use our custom template.
             $tempEmail->emailFormat('html');
             $tempEmail->template('sendPwreset');
             //set the email to send to
             $tempEmail->to($selectedUser->email);
             $tempEmail->subject('Solemate Password Reset');
             //Set the email headers.
             $tempEmail->from(['*****@*****.**' => 'Solemate Doormats inc']);
             $tempEmail->sender(['*****@*****.**' => 'Solemate Doormats inc']);
             $tempEmail->replyTo('*****@*****.**');
             //generate a url using our generated random hash and user id
             $fullUrl = Router::url(array('controller' => 'Users', 'action' => 'resetPassword', 'pwr' => $selectedUser->reset, 'id' => $selectedUser->id), true);
             //Build the message to send to the users requesting the new password.
             $message = "Solemate Doormats Password Reset<br />We received a requested to reset the password on your account, If you made a mistake by clicking the forgot password link then please feel free to disregard this email.  ";
             $message .= " We would like you to click the link below to reset your login password,<br />";
             $message .= "<a href='" . $fullUrl . "'>Click here to reset/change your password.</a><br />";
             $message .= "If you continue to get these password reset emails without requesting them feel free to contact the admin staff by email here at Solemate Doormats and we can investigate it for you.";
             $message .= ".  Here at Solemate Doormats we keep our users passwords private even from the admins.  Feel free to drop us a email if";
             $message .= " you would like more information on your account security, or if you feel someone else is requesting these password resets maliciously.";
             $message .= "<br /><br /><br /><b>Privacy Agreement:</b><i>All content sent / displayed from Solemate Doormats / IB Australia is for private customer use only, any materials shown in these emails are copyright";
             $message .= " protected by Solemate Doormats and should under no circumstance be used without written consent from the company owner, any use of these materials";
             $message .= " without consent will be seen as an act of IP copyright breach and will be followed with appropriate legal action.  If you are not the intended recipient of this email please disregard and delete this message, if this is in hard copy please shred any copies you may have received in error.  ";
             $message .= "Materials covered by I.P. copyright: Logo's, Doormat print's / design's, the Solemate Doormats trading name, Solemate Doormats colour scheme's.";
             $message .= "<br /><p align='center'> &copy; 2015 IB Australia - Solemate Doormats</p></i>";
             /*
               Use a custom query to save our new random string into the users db entry for checking 
               user email starts the password reset.
             */
             $query2 = TableRegistry::get('Users')->find();
             $query2->update('Users')->set(['reset' => $randPassword])->where(['id' => $id]);
             $stmt = $query2->execute();
             //May not be needed
             $tempEmail->viewVars(array('cust' => $selectedUser));
             //email message and send line
             $tempEmail->send($message);
         } else {
             $this->Flash->error('Error: This user email address was not found in our database.  Try again with the address you registered with please.');
         }
     } else {
         if (isset($_GET['pwr']) && isset($_GET['id'])) {
             //set the user ID from get ID passed then lookup all users by that ID number.
             $id = $_GET['id'];
             $user = $this->Users->get($id, ['contain' => []]);
             //if the request is of type post, patch or put then
             if ($this->request->is(['patch', 'post', 'put'])) {
                 //set the new data to the current user in the user variable.
                 $user = $this->Users->patchEntity($user, $this->request->data);
                 //if the save of the user data(password) is successfull then
                 if ($this->Users->save($user)) {
                     $this->Flash->success('Success: Your login password has been changed ' . $user->username . '. ');
                     return $this->redirect(['action' => 'login']);
                 } else {
                     $this->Flash->error('The new password could not be saved. Please, try again.');
                 }
             }
             //end of if request is patch,post,put
             //set the current user data as a viewVariable.
             $this->set(compact('user'));
             $this->set('_serialize', ['user']);
         }
     }
     //end of else if GET variables are set
 }
예제 #7
0
 public function sendremind()
 {
     $this->loadModel('Shows');
     $this->loadModel('Users');
     $this->loadModel('ShowUserPerms');
     $showsToRemind = $this->Shows->find('list', ['valueField' => 'name', 'keyField' => 'id'])->where(['Shows.is_active' => 1])->where(['Shows.is_reminded' => 1]);
     if (sizeof($showsToRemind->toArray()) > 0) {
         $usersToRemindArr = $this->ShowUserPerms->find('list', ['valueField' => 'id', 'keyField' => 'user_id'])->where(['show_id IN' => array_keys($showsToRemind->toArray())])->where(['is_paid' => 1]);
         $usersToRemind = $this->Users->find()->where(['is_active' => 1])->where(['is_notified' => 1])->where(['id IN' => array_keys($usersToRemindArr->toArray())]);
         foreach ($usersToRemind as $thisUser) {
             $this->out('Sending to: ' . $thisUser->first);
             $email = new Email();
             $email->transport('default');
             $email->emailFormat('both');
             $email->to($thisUser->username);
             $email->subject('Hours are Due!');
             $email->from('*****@*****.**');
             $email->template('hourremind');
             $email->viewVars(['name' => $thisUser->first . " " . $thisUser->last]);
             $email->send();
         }
     }
     $this->verbose('  E-Mail(s) Sent.');
 }
예제 #8
0
 /**
  * sendEmail method
  *
  * @param string|null $id Customer id.
  * @return void Redirects to index.
  * @throws \Cake\Network\Exception\NotFoundException When record not found.
  *
  * This function is built from Janet Fraiser's example site "Buckemoff Horses" on 
  *  the monash IE development server, it is used to build an email to one or many
  * customers in the Solemate Doormat's database.
  */
 public function buildEmails()
 {
     //Set a variable for use on the index view to show user name / email.
     $this->set('username', $this->Auth->user('username'));
     //Set a var with logged in user data
     $setUser = $this->request->session()->read('user');
     //set the loggedin user ID as a var
     $setID = $setUser['id'];
     $userRole = $this->request->session()->read('userRole');
     if ($userRole != 'admin') {
         $this->Flash->error("Were sorry your not authorised to view this page, please contact admin if you feel this is incorrect.");
         return $this->redirect(['action' => 'index']);
     }
     $this->set("customers", $this->Customers->find("all", ['order' => 'last_name ASC']));
     //create the viewVar array to be populated and sent via emails
     $allUsers = array();
     $custTo = "<br />";
     $customerList = array();
     //create email object and set email config settings
     $email = new Email('default');
     $email->transport('default');
     if ($this->request->is('post') || $this->request->is('put')) {
         $list = 0;
         foreach ($this->request->data['Email']['checkbox'] as $id => $checked) {
             if ($checked) {
                 $list++;
                 $cust = $this->Customers->get($id, ['contain' => []]);
                 $customerList[$list] = $cust->first_name . ' ' . $cust->last_name;
                 /*
                                     //add the checked customers to the email list.
                                     $email->addTo($cust->email);
                 */
                 //store this customer data into our viewVar array
                 array_push($allUsers, $cust);
                 //debug($allUsers);
             }
             //end of if checkbox is checked loop
         }
         //end foreach checkbox loop
         //set the type of email format and use our custom template.
         $email->emailFormat('html');
         $email->template('sendEmail');
         //loop through all customers sending the same email but with a
         // custom heading by a for loop setting viewVar and sending the email
         foreach ($allUsers as $custToSendTo) {
             //set the email to send to as this customer for this loop iteration
             //add the checked customers to the email list.
             $email->to($custToSendTo['email']);
             //grab the user data who we are sending too.
             $query = TableRegistry::get('Users')->find();
             $query->where(['id' => $custToSendTo['user_id']]);
             //loop through query result
             foreach ($query as $user) {
                 //debug($user);
                 //when we match on the right user data from our DB lookup
                 if ($user->id == $custToSendTo['user_id']) {
                     //set the viewVariable to this user data  --
                     //  may limit the data sent for security soon.
                     $userDetails = $user;
                 }
             }
             //end foreach query result (should only be one in this case)
             //now send all our view vars over in the array $allUsers.
             $email->viewVars(['cust' => $custToSendTo]);
             $email->viewVars(['user' => $userDetails]);
             //Set the email headers.
             $email->from(['*****@*****.**' => 'Solemate Doormats inc']);
             $email->sender(['*****@*****.**' => 'Solemate Doormats inc']);
             $email->replyTo('*****@*****.**');
             //Begin the email building from the data provided in the form.
             $email->subject($this->request->data['subject']);
             try {
                 //Grab the main body of the email to be sent in the form.
                 $email->send($this->request->data['message']);
                 /*
                 //loop through selected customers for showing in send to field of form.
                                     foreach ($customerList as $customer)
                                     {
                                         //print the customer names in the list above the email message
                                         $custTo .= $customer . "<br />";
                                     
                                     }
                 */
             } catch (Exception $e) {
                 //$this->Flash->error('Error sending email. ' . $e->getMessage());
             }
         }
         /*
          //now send all our view vars over in the array $allUsers.
                     $email->viewVars(array('cust' => $allUsers));
                     
                     //Set the email headers.
                     $email->from(['*****@*****.**' => 'Solemate Doormats inc']);
                     $email->sender(['*****@*****.**' => 'Solemate Doormats inc']);
                     $email->replyTo('*****@*****.**');
                     
                     //Begin the email building from the data provided in the form.
                     $email->subject($this->request->data['subject']);
                     
                     try
                     {
                         //Grab the main body of the email to be sent in the form.
                         $email->send($this->request->data['message']);
                         
                         foreach ($customerList as $customer)
                         {
                             //print the customer names in the list above the email message
                             $custTo .= $customer . "<br />";
         
                         }
                         
                         $this->Flash->success('Your email was successfully sent.');
                         
                         //If the email is sent succesfully redirect back to the main customer page.
                         return $this->redirect(['controller' => 'Customers', 'action' => 'index']);
                       
                     }
                     catch(Exception $e)
                     {
                         $this->Flash->error('Error sending email. ' . $e->getMessage());
                     }
         */
         if (isset($e)) {
             $this->Flash->error('Error sending email. ' . $e->getMessage());
         } else {
             $this->Flash->success('Your email was successfully sent.');
             //If the email is sent succesfully redirect back to the main customer page.
             return $this->redirect(['controller' => 'Customers', 'action' => 'index']);
         }
     }
     //end request is post / put checking if loop
 }
예제 #9
0
 public function deleteAlias()
 {
     session_write_close();
     $alias = $this->request->data('alias');
     $netId = $this->request->data('netId');
     $authId = $this->request->data('authId');
     $forwardsList = $this->request->data('forwardsList');
     error_log("Eam EamWsController deleteAlias alias: " . $alias);
     error_log("Eam EamWsController deleteAlias netId: " . $netId);
     error_log("Eam EamWsController deleteAlias authId: " . $authId);
     error_log("Eam EamWsController deleteAlias forwardsList: " . $forwardsList);
     $data = $this->EamWs->deleteAlias($alias, $authId);
     $this->set('output', $data);
     $email = new Email('default');
     $email->viewVars(['emailAlias' => $alias, 'ownerId' => $netId, 'authId' => $authId])->template('deleted')->emailFormat('html')->from('*****@*****.**')->subject($alias . " deleted");
     $forwadArray = explode(",", $forwardsList);
     foreach ($forwadArray as $forwards) {
         $email->to($forwards)->send();
     }
     return;
 }