maatwebsite / usher
1.0.3
2019-10-25 07:55 UTC
Requires
- php: >=5.4.0
- brouwers/laravel-doctrine: ~1.0
Requires (Dev)
- mockery/mockery: 0.9.*@dev
- phpspec/phpspec: ~2.1@dev
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2020-05-18 07:32:57 UTC
README
Laravel 5的Doctrine ACL包
- 使用Doctrine用户实体进行登录
- 用户角色
- 用户封禁
- 用户暂停
- 用户权限
- 用户最后登录和最后尝试事件监听器
- 角色权限
安装
在config/app.php
中包含服务提供者
'Brouwers\LaravelDoctrine\DoctrineServiceProvider', 'Maatwebsite\Usher\UsherServiceProvider'
配置
要更改此包的默认值,请发布配置
php artisan vendor:publish --provider="Maatwebsite\Usher\UsherServiceProvider"
默认用法
开箱即用,您可以使用ACL系统而无需定义自己的实体。但是,这不被推荐!
自定义用法
例如,如果您想要一个Customer
和Group
实体,您只需确保它实现了Maatwebsite\Usher\Contracts\Users\User
接口。如果您需要一个更快的解决方案,您可以选择性地扩展MappedSuperclass Maatwebsite\Usher\Domain\Users\User
。*注意,您将需要自己定义角色关系。
使用MappedSuperclass的示例
use Doctrine\ORM\Mapping as ORM; use Maatwebsite\Usher\Domain\Users\User; use Maatwebsite\Usher\Contracts\Users\User as UserInterface; /** * @ORM\Entity(repositoryClass="DoctrineCustomerRepository") * @ORM\Table(name="customers") * @ORM\HasLifecycleCallbacks() */ class Customer extends User implements UserInterface { /** * @ORM\ManyToMany(targetEntity="Group", inversedBy="customers") * @ORM\JoinTable(name="customer_groups") * @var ArrayCollection|\App\Domain\Customers\Entities\Role[] */ protected $groups; /** * Customer Constructor */ public function __construct() { $this->groups = new ArrayCollection(); } /** * @return ArrayCollection|\Maatwebsite\Usher\Contracts\Roles\Role[] */ public function getRoles() { return $this->groups; } }
与User
MappedSuperclass类似,您需要自己定义用户关系。
/** * @ORM\Entity(repositoryClass="DoctrineRoleRepository") * @ORM\Table(name="groups") * @ORM\HasLifecycleCallbacks() */ class Group extends Role implements RoleInterface { /** * @ORM\ManyToMany(targetEntity="Customer", mappedBy="groups") * @var ArrayCollection|Customer[] **/ protected $customers; /** * Role Constructor */ public function __construct() { $this->customers = new ArrayCollection(); } /** * @return ArrayCollection|\Maatwebsite\Usher\Contracts\Users\User[] */ public function getUsers() { return $this->customers; } }
接下来,您需要更新config/usher.php
中的类引用,以更新user.entity
和role.entity
return [ 'users' => [ 'entity' => 'Customer' ], 'roles' => [ 'entity' => 'Group' ] ]
事件
域事件
域事件 | 当 |
---|---|
UserGotAssignedToRole | $user->assignRole($role) |
UserGotBanned | $user->ban() |
UserGotRemovedFromRole | $user->removeRole($role) |
UserGotSuspended | $user->suspend($minutes) |
UserRegistered | $user->register() |
UserUpdatedProfile | $user->update() |
RoleWasCreated | $role->create() |
RoleWasUpdated | $role->update() |
事件监听器
事件监听器可以在配置中启用或禁用。默认情况下,列出的监听器都启用了。
监听器 | 当 |
---|---|
SaveLastAttemptDate | auth.attempt |
CheckIfUserIsBanned | auth.attempt |
CheckIfUserIsSuspended | auth.attempt |
SaveLastLoginDate | auth.login |