sandbox / passwordrecovery
密码恢复 Nette 扩展。
v2.0.1
2023-11-04 15:03 UTC
Requires
- php: >= 8.1.0
- latte/latte: ^3.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
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。