ipunkt/auth

1.0.0 2015-02-20 14:11 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:08:06 UTC


README

Latest Stable Version Latest Unstable Version License Total Downloads

本软件包提供用户模型和简单登录,以及提醒和注册视图。它与其他ipunkt软件包(如ipunkt/rolesipunkt/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

所有预构建功能都封装在特质中,可以直接用于您的新模型

  1. EloquentUserTrait 结合了
    • EloquentUserInterfaceTrait 为您实现了 laravel 的 UserInterface(4.2 之前)
    • EloquentUserRemindableTrait 为您实现了 laravel 的 RemindableInterface(4.2 之前)