public function forgotPassword() { if ($this->getRequest()->getMethod() == 'POST') { $email = $this->getParam('email'); $user = $this->userStore->getByEmail($email); if (is_null($user)) { $this->view->error = 'No user exists with that email address, please try again.'; return; } $userId = $user->getId(); $key = md5(date('Y-m-d') . $user->getHash()); $name = $user->getName(); $siteName = $this->config->get('site.name'); $url = $this->config->get('site.full_admin_url'); $message = <<<OUT Dear {$name}, You have received this email because you, or someone else, has requested a password reset for {$siteName}. If this was you, please click the following link to reset your password: {$url}/session/reset-password/{$userId}/{$key} Otherwise, please ignore this email and no action will be taken. Thank you, {$siteName} OUT; $mailTo = $name . ' <' . $user->getEmail() . '>'; @mail($mailTo, $siteName . ' Password Reset', $message, 'From: ' . $this->config->get('site.email_from')); $this->view->emailed = true; } }
public function edit($userId) { $user = $this->userStore->getById($userId); $this->setTitle('Edit User: '******'/user/edit/' . $userId); if ($this->request->getMethod() == 'POST') { $form = $this->userForm($this->getParams(), 'edit'); if ($form->validate()) { $emailChanged = $this->getParam('email') !== $user->getEmail(); if ($emailChanged && $this->userStore->getByEmail($this->getParam('email'))) { $error = 'This email address already belongs to a registered user.'; $form->getChild('fieldset')->getChild('email')->setError($error); $this->view->form = $form->render(); return; } try { $params = $this->getParams(); if ($params['password'] != '') { $params['hash'] = password_hash($params['password'], PASSWORD_DEFAULT); } $user->setValues($params); $listenData = [$user, $params]; Event::trigger('beforeUserSave', $listenData); list($user, $params) = $listenData; $user = $this->userStore->save($user); return $this->redirect('/user')->success($params['name'] . ' was edited successfully.'); } catch (Exception $e) { $this->errorMessage('There was an error editing the user. Please try again.'); } } else { $this->errorMessage('There was an error editing the user. Please try again.'); } } $this->view->form = $this->userForm($user->toArray(), 'edit')->render(); }