laravelclass / lara-auth
此包为Laravel身份验证提供便捷方式
Requires
- illuminate/support: 8.* | 9.*
This package is auto-updated.
Last update: 2024-09-13 20:26:16 UTC
README
这是由rahmanian先生的一个班级成员编写的自定义Laravel身份验证。如果您想联系rahmanian先生
网站:alirahmanian.com
Instagram:ali.rahmanian.s.a
这个包有什么作用?
我们在Laravel入门套件身份验证中遇到了很多限制。因此,我决定制作一个身份验证包,去除许多Laravel身份验证包的限制。
功能
- 支持不同配置的多守护者
- 支持通知队列
- 具有定义前后逻辑的钩子系统
- 支持使用js抽象的ajax请求
- 可以根据包的状态和钩子更改响应
- 可以更改所有响应消息
- 可以定义ajax请求的消息
- 可以定义ajax响应后的逻辑
- 可以自定义电子邮件的主题、发件人和...
- 可以使用自定义电子邮件模板或内置电子邮件模板
- 可以使用自己的身份验证模板
部署
安装此包
composer require laravelclass/lara-auth
提供配置和ajax抽象
php artisan laraAuth:up
在提供包之后,laraAuth.php和laraAuthAjax.js将复制到配置和公共目录
configs/laraAuth.php public/laraAuthAjax.js
此包需要password_resets表才能完成密码重置;所以别忘了
php artisan migrate
更改配置
在configs/laraAuth.php中,您可以定义发送电子邮件、身份验证、消息、属性、规则、队列等的配置
如何使用
LaraAuth::makeAjax(); LaraAuth::before(function (){ //you're logic.if you return the response, the package will not continue and server sends you're response! }); LaraAuth::after(function ($status){ //you're logic.if you return the response, the package will not continue and server sends you're response! // $status is the final state of the package core before sending the response; }); return LaraAuth::register('Admin','admins');
默认守护者是web,默认数据库ModelName是User
请记住,您的模型必须扩展Authenticatable并使用HasApiTokens、HasFactory、Notifiable
如果您想发送注册电子邮件,只需实现MustVerifyEmail
LaraAuth Facade上的可用方法
LaravelClass\LaraAuth\Service\Facade\LaraAuth::before(\Closure $beforeClosure) LaravelClass\LaraAuth\Service\Facade\LaraAuth::after(\Closure $afterClosure) LaravelClass\LaraAuth\Service\Facade\LaraAuth::register($dbName = 'users' , $guard = 'web' , $extraData = null) LaravelClass\LaraAuth\Service\Facade\LaraAuth::sendVerifyUserEmailNotification($guard= 'web', $dbName = 'User' , $notifiable = null) LaravelClass\LaraAuth\Service\Facade\LaraAuth::canUserResetPassword($guard = 'web') LaravelClass\LaraAuth\Service\Facade\LaraAuth::verifyEmailLink($guard = 'web') LaravelClass\LaraAuth\Service\Facade\LaraAuth::verifyPasswordResetLink($guard = 'web' , $dbName = 'User') LaravelClass\LaraAuth\Service\Facade\LaraAuth::login($guard = 'web') LaravelClass\LaraAuth\Service\Facade\LaraAuth::logOut($guard = 'web') LaravelClass\LaraAuth\Service\Facade\LaraAuth::sendResetPasswordNotification($guard = 'web' , $dbName = 'User') LaravelClass\LaraAuth\Service\Facade\LaraAuth::makeAjax()
如何制作钩子系统
LaraAuth::before(function (){ //you're logic.if you return the response, the package will not continue and server sends you're response! }); LaraAuth::after(function ($status){ //you're logic.if you return the response, the package will not continue and server sends you're response! // $status is the final state of the package core before sending the response; }); return LaraAuth::register('Admin','admins');
如果您想在包的核心执行的前后进行控制,您可以使用上述方法;before()和after()方法接受一个闭包,该闭包定义了您的逻辑。如果您想停止包的执行,您必须返回一个响应对象;在after()方法中,您的闭包可以接受从包核心注入的布尔值;这个布尔值决定了操作是否成功;
如何注册、登录和注销
return LaraAuth::login($guard = 'web') return LaraAuth::logOut($guard = 'web') return LaraAuth::register($dbName = 'users' , $guard = 'web' , $extraData = null)
所有方法都接受$guard,它确定您想从auth.php配置文件中指定的哪个守护者中使用哪个守护者
$guard和$dbname的默认值是web和User
如果您想确定$dbName,您必须传递模型名称,例如User
register()方法接受$extraData,您可以传递一个包含要插入数据库中的额外键值字段的数组
如何验证电子邮件和重置密码
return sendVerifyUserEmailNotification($guard= 'web', $dbName = 'User' , $notifiable = null) return verifyEmailLink($guard = 'web') return sendResetPasswordNotification($guard = 'web' , $dbName = 'User') return verifyPasswordResetLink($guard = 'web' , $dbName = 'User')
如果您想发送验证电子邮件或重置电子邮件,只需返回send...notification方法;
如果您想验证电子邮件链接,只需返回verify....方法;
如何使用包的中间件
->middleware('laraAuthEmail') ==> for verify email ->middleware('laraAuthResetPassword') ==> for password reset link
如何使用队列发送通知
'queue' => [ 'web' => [ 'state' => true, 'delay' => 0, 'connection' => 'database', 'queue' => 'default' ], 'admins' => [ 'state' => false, 'delay' => 0, 'connection' => 'database', 'queue' => 'default' ],
您可以在配置目录下的laraAuth.php中找到
队列配置对重置密码通知和验证电子邮件链接都可用
您甚至可以为守护者确定它!
别忘了设置并启动您的队列工作者和队列数据库;
使用ajax请求
//put meta tag for csrf token in <heads> tag <meta name="X-CSRF-TOKEN" content="{{csrf_token()}}"> //put below codes after all of youre template tags <script src="{{asset('laraAuthAjax.js')}}"></script> <script> const formInputs = ['email','password','password_confirmation']; const logic = function (laraAuthResponse){ console.log(laraAuthResponse); } const obj = new LaraAuthAjax(logic,formInputs); </script> //in youre action route in laravel,call this method before any of operation methods: LaraAuth::makeAjax(); //then you can use one of package method like: return LaraAuth::login()
只需将上述代码放入您的模板中;
LaraAuthAjax类的构造函数接受两个参数;第一个参数是一个闭包,用于定义从服务器收到响应后的逻辑;您可以在闭包中定义参数以获取json响应!第二个参数是要发送到服务器的输入名称;如果您没有,只需让它通过!