ipunkt / auth
Requires
- php: >=5.3.0
- illuminate/support: 4.2.*
- ipunkt/permissions: 1.0rc1
- laracasts/commander: ~1.0
Requires (Dev)
- orchestra/testbench: 2.2.*
This package is not auto-updated.
Last update: 2024-09-24 03:08:06 UTC
README
本软件包提供用户模型和简单登录,以及提醒和注册视图。它与其他ipunkt软件包(如ipunkt/roles和ipunkt/social-auth)很好地集成,以提供一个即插即用的环境。
安装
将以下行添加到您的composer.json文件中
"require": {
"ipunkt/auth": "1.*"
}
配置
-
添加
'Ipunkt\Auth\AuthServiceProvider'
到您的服务提供者列表。
-
通过执行以下操作发布配置
`php artisan config:publish ipunkt/auth`
-
编辑
user_table
配置文件以符合您的需求table_name
- 表在数据库中的名称login_through_field
- 用于登录用户识别的字段。默认为电子邮件。用户名也很常见extra_fields
- 包含您希望用户模型具有的附加字段的数组。每个字段应具有以下键name
- 数据库中的字段名称database_type
- 数据库中的字段类型form_type
- 注册和编辑表单中使用的输入类型validation_rules
- 在注册或编辑时验证此字段的laravel验证规则not during register
- 如果设置为true,则该字段在注册期间不可用。只有当编辑用户时
-
通过执行以下操作迁移用户表
`php artisan migrate --package=ipunkt/auth`
注册策略
可以在config.php
中通过registration_strategy
字段选择注册策略
单选-同意
目前,该软件包只提供单选-同意。这意味着当用户发送有效的用户数据以进行注册时,他们将登录并激活。配置值:single_opt_in
双选-同意
将来将提供原生双选-同意。这意味着在用户发送有效用户数据后,将创建用户,但将其禁用。将发送带有确认链接的电子邮件到他们的电子邮件地址。一旦访问了注册链接,用户账户将被启用。配置值:double_opt_in
使用
将用户链接到auth.register
路由以允许他们注册
将用户链接到auth.login
路由以登录用户
将用户链接到auth.logout
路由以注销用户
用户索引
如果您想发布所有用户的列表,可以使用auth.user.login路由。有3种方式来决定访问权限
- 如果在此软件包的配置中将
publish_user_index
设置为true
,则任何人都可以查看。 - 否则,如果用户已登录,则将要求用户对自身进行
index
权限的授权Auth::user()->can('index', Auth::user())
。- 如果您使用此软件包中包含的
PermissionChecker
,则将index
添加到user_actions
数组将授予所有用户访问权限 - 如果您希望有更复杂的行为,只需为您的用户模型提供自己的
PermissionChecker
。有关详细信息,请参阅ipunkt/permissions
- 如果您使用此软件包中包含的
- 如果您既未设置
publish_user_index
也未经您的用户模型的PermissionChecker
允许index
,则将通过App::abort(403)
失败
默认行为是拒绝访问。
用户编辑
要允许您的用户编辑个人资料,请将链接链接到auth.user.edit
路由,其中用户ID为/ $user->getKey()
作为参数
这将要求用户模型请求edit
权限
- 如果您使用本包包含的
PermissionChecker
,将edit
添加到user_actions
数组中将为用户授予编辑其个人资料的权限 - 如果您希望有更复杂的行为,只需为您的用户模型提供自己的
PermissionChecker
。有关详细信息,请参阅ipunkt/permissions
默认行为是允许编辑个人资料的权限。
用户删除
要允许用户删除账户,请将其链接到auth.user.delete
路由,将用户ID($user->getKey()
)作为参数。如果用户在查看该账户的auth.user.edit
视图时具有删除账户的权限,则将显示删除链接。
这将请求用户模型对delete
权限
- 如果您使用本包包含的
PermissionChecker
,则将delete
添加到user_actions
数组中将授予编辑用户个人资料的权限 - 如果您希望有更复杂的行为,只需为您的用户模型提供自己的
PermissionChecker
。有关详细信息,请参阅ipunkt/permissions
默认行为是拒绝删除权限
自定义
视图
- 要使用本包提供的视图,但在自己的模板中显示它们,请设置view.extends变量。
- view是布局视图
- section是您希望显示的节的名称
- 要完全更改视图,请通过以下方式进行发布:
php artisan view:publish ipunkt/auth
然后根据需要编辑它们
其他配置选项
set_usermodel
默认值:true
当设置为true
时,AuthServiceProvider将auth.model
设置为该包提供的模型。如果设置为false
,则表示您希望使用自己的用户模型。
set_repository
默认值:true
当设置为true
时,AuthServiceProvider将此包的UserRepository绑定到Ipunkt\Auth\Repositories\RepositoryInterface
。默认仓库将实例化配置值auth.model
中设置的模型。如果设置为false
,则表示您不使用Eloquent或出于某些原因想要绑定自己的仓库进行用户创建。请参阅下面的更换用户模型
route_prefix
默认值:''
此前缀将附加到此包设置的各个路由之前。这使您能够将身份验证用户捆绑在单个路径下,例如auth/
如果您设置此值,请确保检查您的auth
过滤器。默认的Laravel4实现会在失败时将用户发送到/login
set_reminder
默认值:true
当设置为true
时,AuthServiceProvider将使用auth::reminder/email
作为提醒电子邮件的视图。如果设置为false
,则表示您希望从您的应用程序中加载视图而不是自定义包视图
publish_user_index
默认值:false
当设置为true
时,$route_prefix/user/
将显示所有已注册用户的列表,如果$user->can('index', $dummyUser)
。有关权限的具体信息,请参阅ipunkt/permissions
user_actions
默认值:['edit']
此值配置了本包提供的用户模型的默认PermissionChecker。此配置变量中列出的任何操作都视为基于用户的基础,如果用户尝试对其自己的账户执行操作,则将被允许。
routes
默认值:['logout' => 'auth.login']
这决定了各种操作成功完成后重定向的位置。目前
logout
用户已注销
扩展注册策略
要创建自己的注册策略,您必须将事件监听器注册到Ipunkt.Auth.*
示例
class RegistrationServiceProvider extends ServiceProvider {
public function boot() {
if(Config::get('auth::registration_strategy') == 'test_opt_in')
Event::listen('Ipunkt.Auth.*', 'Acme\Listeners\TestOptInListener');
}
public function register() {}
}
要监听的事件
-
whenUserWasCreated(UserWasCreated $event)
UserWasCreated: UserInterface $user
当用户成功发送有效的注册数据时,将调用此事件。此事件的责任是将用户写入数据库。默认做法是通过调用UserStoreCommand:$this->execute( 'Ipunkt\Auth\Commands\UserStoreCommand', ['user' => $event->user] );
-
whenConfirmationWasAttempted(ConfirmationWasAttempted $confirmation)
当用户从注册链接返回时,将调用此事件 -
whenConfirmationWasSuccessful(ConfirmationWasSuccessful $confirmation)
当确认成功时,将调用此事件 -
whenConfirmationHasFailed(ConfirmationHasFailed $confirmation)
当确认失败时调用此方法
也可参考 Ipunkt\Auth\Listeners\SingleOptInListener
更改用户模型
要使用自己的模型,请将配置值 'auth.model'
设置为其类路径。
如果您的模型不是继承自 eloquent,您还必须在 Laravel IoC 中替换 'Ipunkt\Auth\Repositories\RepositoryInterface'
如果您只想扩展此包提供的模型,请让您的模型继承自 Eloquent 并实现 Ipunkt\Auth\User\UserInterface
。
所有预构建功能都封装在特质中,可以直接用于您的新模型
EloquentUserTrait
结合了EloquentUserInterfaceTrait
为您实现了 laravel 的UserInterface
(4.2 之前)EloquentUserRemindableTrait
为您实现了 laravel 的RemindableInterface
(4.2 之前)