Close #23 provide administrator with an option for user to reset its

password.
This commit is contained in:
Antonio Ramirez
2017-10-15 23:00:21 +02:00
parent 42301d0fb1
commit 1fa2e5b66d
30 changed files with 130 additions and 11 deletions

View File

@ -18,6 +18,7 @@ use Da\User\Model\Profile;
use Da\User\Model\User;
use Da\User\Query\UserQuery;
use Da\User\Search\UserSearch;
use Da\User\Service\PasswordRecoveryService;
use Da\User\Service\SwitchIdentityService;
use Da\User\Service\UserBlockService;
use Da\User\Service\UserConfirmationService;
@ -44,10 +45,10 @@ class AdminController extends Controller
/**
* AdminController constructor.
*
* @param string $id
* @param Module $module
* @param string $id
* @param Module $module
* @param UserQuery $userQuery
* @param array $config
* @param array $config
*/
public function __construct($id, Module $module, UserQuery $userQuery, array $config = [])
{
@ -81,7 +82,8 @@ class AdminController extends Controller
'delete' => ['post'],
'confirm' => ['post'],
'block' => ['post'],
'switch-identity' => ['post']
'switch-identity' => ['post'],
'password-reset' => ['post']
],
],
'access' => [
@ -309,4 +311,21 @@ class AdminController extends Controller
return $this->goHome();
}
public function actionPasswordReset($id)
{
/** @var User $user */
$user = $this->userQuery->where(['id' => $id])->one();
$mailService = MailFactory::makeRecoveryMailerService($user->email);
if ($this->make(PasswordRecoveryService::class, [$user->email, $mailService])->run()) {
Yii::$app->getSession()->setFlash('success', Yii::t('usuario', 'Recovery message sent'));
} else {
Yii::$app->getSession()->setFlash(
'danger',
Yii::t('usuario', 'Unable to send recovery message to the user')
);
}
return $this->redirect(['index']);
}
}

View File

@ -123,7 +123,7 @@ class RecoveryController extends Controller
*/
public function actionReset($id, $code)
{
if (!$this->module->allowPasswordRecovery) {
if (!$this->module->allowPasswordRecovery && !$this->module->allowAdminPasswordRecovery) {
throw new NotFoundHttpException();
}
/** @var Token $token */