glaivepro / invytr
Laravel 用户邀请包
Requires
- laravel/framework: ^9.0|^10.0
- laravel/ui: ^4.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^8.4|^9.0|^10.0
README
当在用户创建而不是注册自己的网站上,你会面临一个挑战,即如何安全地给用户访问他们新创建的账户的权限。Invytr 通过发送包含设置账户密码链接的电子邮件来解决这个问题。
此包主要用于与 Laravel 的认证框架和密码重置机制一起使用。
使用方法
安装它
$ composer require glaivepro/invytr
现在您可以向用户发送邀请。他们将会收到一个带有密码设置链接的电子邮件。
// $user must extend Illuminate\Foundation\Auth\User // Laravel's \App\User does this by default \Invytr::invite($user);
自定义
邀请过期
默认情况下,邀请令牌将与密码重置一起过期。默认的 60 分钟通常对被邀请的用户来说不够,因为他们可能不会在收到邀请后立即注册。
要增加邀请的过期时间,您应该在 config/auth.php
中的 passwords.users
路径下添加 invites_expire
键。现在您不需要发布任何内容。只需像这样添加分钟数即可
'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, 'invites_expire' => 4320, // This let's invites be valid for 3 days ], ],
自定义文本和本地化
您可以通过在 resources/lang
中找到的 JSON 本地化文件中自定义/本地化字符串。
邀请电子邮件使用以下字符串
Account created
作为主题。An account for you has been created! Please set a password for your account!
作为文本。Set Password
作为操作链接。
密码设置页面只使用一个字符串
Set Password
作为面板标题(而不是Reset Password
)。
对设置尝试的响应使用这些字符串
您的密码已设置!
密码必须至少有六个字符,并且与确认密码匹配。
此令牌无效。
我们找不到具有该电子邮件地址的用户。
电子邮件
类似于 Laravel 的重置密码功能,您可以在用户模型上创建一个 sendPasswordSetNotification
方法。
public function sendPasswordSetNotification($token) { // By default we send this: \Notification::send($this, new \GlaivePro\Invytr\Notifications\SetPassword($token)); }
视图
默认情况下,此包使用与 Laravel 的重置功能相同的 auth.passwords.reset
视图。如果您需要更多自定义,请创建一个 auth.passwords.set
视图,其中包含所有相同的字段,并发布与 auth.passwords.reset
相同的请求。
密码设置和响应
重置是通过 Laravel 的 password.update
路由进行的,并由 App\Http\Controllers\Auth\ResetPasswordController
上的 reset
方法处理。
如果您想自定义处理和/或响应,请编辑该方法。您可以通过检查会话来区分设置和重置请求。
// in the ResetPasswordController public function reset(Request $request) { // something something if ($request->session()->has('invytr')) { // this is an invited user setting the password } // something else }
警告
运行 php artisan auth:clear-resets
也会清除您的过期邀请令牌,如果它们根据 auth.passwords.users.expire
配置值过期。您的 auth.passwords.users.invites_expire
配置值将被忽略。
变更日志
1.0 是此包的初始版本。支持 Laravel 5.7 和 PHP 7.1 以及 PHP 7.2。
有关最近更改的更多信息,请参阅 CHANGELOG。
待办事项
添加一个特质,在创建新用户时设置随机密码并发送邀请。
尝试通过调整创建令牌时的 created_at
而不是现在的做法来设置过期时间。
发布语言文件?
改进测试,
- 通过单元测试全面覆盖 Invytr、控制器和中间件
- 单元测试通知中创建的 URL
- 为密码设置页面创建更多功能测试。
提高代码质量和一致性。
- 修复文档注释。
- 导入与完全限定的类名。
- 排序导入。
- 链式操作时的对齐...也许可以使用styleCI?
- 单行控制结构中的花括号与无花括号。
- 辅助函数与外观模式与...
- 示例:config() 与 $request->session() 与 \View:
也许可以扩大范围,提供类似于MustResetPasswordOnNextVisit特性?或者那是一个单独的包?
许可证
MIT许可证(MIT)。更多信息请参阅许可证文件。