kda / laravel-authentication
2.1.0
2024-08-29 10:29 UTC
Requires
- fdt2k/laravel-package-service-provider: dev-dev-v2 ||^2.0
Requires (Dev)
- laravel/framework: 9 | 10
- laravel/pint: ^1.1
- laravel/ui: ^4.2
- orchestra/canvas: ^7.2
- orchestra/testbench: ^7.6
README
关于
这是laravel/ui的无头和无控制器重写。主要目标是让它比laravel/fortify更简单。
它围绕一个门面AuthManager
构建。
安装
composer require kda/laravel-authentication
更新你的Authenticatable
模型
如果你需要使用邮箱验证,你可以通过添加以下合约和特性来修改你的模型
<?php
namespace App\Models;
use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;
class User extends Authenticatable implements MustVerifyEmailContract
{
use MustVerifyEmail;
}
路由
由于它是无控制器的,你需要创建自己的控制器和路由。你可以使用此包提供的:kda/laravel-authentication-controllers。默认情况下,一些是强制性的,例如password.reset
路由,它默认由laravel password broker使用,或者verification.verify
路由。
你可以通过使用createResetPasswordUrlUsing
方法之一来覆盖它
AuthManager::createResetPasswordUrlUsing(function ($user, string $token) {
return 'https://myfrontend.com/reset?token=' . $token;
})
路由清单
- [ ] 认证
- [ ] 注册
- [ ] 请求重置密码链接
- [ ] 重置密码
password.reset
- [ ] 验证邮箱
verification.verify
路由视图清单
- [ ] 登录表单
- [ ] 注册表单
- [ ] 请求重置密码表单
- [ ] 重置密码表单
- [ ] 修改密码表单
使用
基本上,我们有4个主要功能
注册 AuthManager::register()
认证 AuthManager::authenticate()
重置密码 AuthManager::resetPassword()
修改密码 AuthManager::changePassword()
所有主要功能在使用之前都需要调用request($request)
。
高级使用
流程键
如果你想要管理多个认证和注册类型,你可以使用流程键来自定义库的行为。这是一个示例,不能直接使用,你仍然需要在配置文件中配置你的认证。例如
// in a provider
AuthManager::createUserUsing(function($flow_key,$request){
return match($flow_key){
'teacher'=> Teacher::create($request->all()),
'student'=> Student::create($request->all()),
};
});
AuthManager::afterCreatingUser(function($flow_key,$request,$user){
return match($flow_key){
'teacher'=> $user->fill(['role'=>'teacher'])->save(),
'student'=> $user->fill(['role'=>'student'])->save(),
};
});
AuthManager::guard(function($flow_key){
return match($flow_key){
'teacher'=> 'web',
'student'=> 'api'
}
});
// in the controllers methods of your choice:
AuthManager::flowKey('teacher')->request($request)->register()->authenticate(); //
AuthManager::flowKey('student')->request($request)->register(); // student needs to authenticate again
变更日志
请参阅CHANGELOG以获取最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
鸣谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。