sandbox/passwordrecovery

密码恢复 Nette 扩展。

v2.0.1 2023-11-04 15:03 UTC

This package is auto-updated.

Last update: 2024-09-22 17:52:17 UTC


README

需求

Sandbox/PasswordRecovery 需要 PHP 8.1.0 或更高版本。

  • "nette/application": "^3.1",
  • "nette/bootstrap": "^3.2",
  • "nette/di": "^3.1",
  • "nette/forms": "^3.1",
  • "nette/mail": "^4.0",
  • "nette/robot-loader": "^4.0",
  • "nette/utils": "^4.0",
  • "latte/latte": "^3.0"

安装

安装 Sandbox/PasswordRecovery 的最佳方式是使用 Composer

$ composer require sandbox/passwordrecovery

配置

然后您需要在 config.neon 中注册扩展。

extensions:
    passwordRecovery: Sandbox\PasswordRecovery\DI\PasswordRecoveryExtension

并在 config.neon 的配置部分

passwordRecovery:
    passwordRecovery:
    sender: "sandbox@domain.net"
    subject: "Obnova hesla"
    submitButton: "Obnovit heslo"
    validatorMessage: "Prosím vložte validní heslo."
    equalPasswordMessage: "Hesla se musí shodovat."
    emptyPasswordMessage: "Heslo musí obsahovat alespoň %d znaků"
    minimalPasswordLength: 6
    expirationTime: 45 #minute, max 59
    errorMessage: "Odkaz pro obnovu hesla se nepodařilo odeslat. Zkuste to prosím znovu."
    mailer: @mail.mailer
    token: @Sandbox\PasswordRecovery\TokenManagerInterface

接下来,您需要注册一个实现 UserRepositoryInterface 和 TokenManagerInterface 接口的服务。示例是 sandbox 项目:https://github.com/ViPErCZ/sandbox

使用方法

在 Presenter 中的示例使用

/**
 * @return \Nette\Application\UI\Form
*/
protected function createComponentRecovery() {
	$control = $this->passwordRecovery->createDialog();
	$control->getResetForm()->onSuccess[] = function(Form $form) {
		$this->flashMessage('Odkaz pro obnovu hesla byl odeslán na Váš email ' . $form->getValues()['email'] . ".");
		$this->redrawControl('recoveryForm');
	};

	$control->getResetForm()->onError[] = function() {
		$this->redrawControl('recoveryForm');
	};

	$control->getNewPasswordForm()->onSuccess[] = function() {
		$this->flashMessage('Heslo bylo úspěšně nastaveno. Pokračujte na přihlašovací obrazovku.');
		if ($this->isAjax()) {
           $this->redrawControl('recoveryForm');
        } else {
           $this->redirect('Home:default');
        }
	};

	$control->getNewPasswordForm()->onError[] = function() {
		if ($this->isAjax()) {
           $this->redrawControl('recoveryForm');
        } else {
           $this->redirect('Home:default');
        }
	};

	return $control;
}

并且模板具有默认模板(使用 twitter bootstrap 类)

{snippet recoveryForm}
	<div n:foreach="$flashes as $flash" class="alert alert-success">{$flash->message}</div>
	{if count($flashes) == 0}
		{control recovery}
	{/if}
{/snippet}

如果您想使用自定义模板,请将变量 templatePath 设置为 latte 模板的路径。

扩展使用 Nette\Localization\Translator,并翻译所有配置的字符串。

主页 https://packagist.org.cn/packages/vipercz/sandbox 和仓库 https://github.com/ViPErCZ/passwordRecovery