erenmustafaozdal / laravel-user-module
laravel 5.1 用户、角色和认证模块包
Requires
- php: >=5.5.9
- erenmustafaozdal/laravel-modules-base: ~0.1
- illuminate/support: ~5
This package is not auto-updated.
Last update: 2024-09-14 18:42:15 UTC
README
Laravel 用户模块 是一个用于 Laravel 5.1 项目的用户、角色和登录操作模块包。此包除了用户界面(视图)之外,还包含所有后台操作。如果您想包含视图,可以使用 Laravel Modules Core 包来完全拥有该模块。
安装
可以使用以下代码使用 Composer 安装此包。
composer require erenmustafaozdal/laravel-user-module
或者,将以下内容添加到 composer.json
文件中,并更新包。
{ "require": { "erenmustafaozdal/laravel-user-module": "~0.1" } }
$ composer update
完成后,需要将服务提供者添加到项目的 config/app.php
文件中。
ErenMustafaOzdal\LaravelUserModule\LaravelUserModuleServiceProvider::class,
❗ 如果您将使用 Laravel Modules Core 包,则需要在上方定义该包的服务提供者文件。
文件发布
Laravel User Module 包的文件可以使用以下代码发布。
php artisan vendor:publish --provider="ErenMustafaOzdal\LaravelUserModule\LaravelUserModuleServiceProvider"
迁移
发布文件后,需要进行迁移操作。
❗ 在迁移操作之前,请删除 Laravel 的默认迁移文件。Sentinel 将添加自己的迁移文件。
❗ 在 Sentinel 的
...migration_cartalyst_sentinel.php
迁移文件中,需要对 Laravel User Module 进行一些特定的修改。在确定users
表列的行之后,在last_name
列之后添加以下内容。
$table->string('last_name')->nullable(); // bu satırdan sonra $table->boolean('is_active')->default(0); // bu satırı eklemelisin $table->boolean('is_super_admin')->default(0); // bu satırı da eklemelisin $table->string('photo')->nullable(); // ve arkasından bu satırı
然后,您可以执行迁移操作。
php artisan migrate
❗ 对于一些操作,例如在用户成功注册后发送激活电子邮件,您需要在
App\Providers\EventServiceProvider
中的$subscribe
数组属性中添加ErenMustafaOzdal\LaravelUserModule\Listeners\LaravelUserModuleListener
监听器。
protected $subscribe = [ 'ErenMustafaOzdal\LaravelUserModule\Listeners\LaravelUserModuleListener', ];
您可以通过 config/laravel-user-module.php
文件来更改激活电子邮件的 blade 模板。
激活电子邮件 blade 模板中发送用户信息(
user
)和 Sentinel 激活对象(activation
)。您可以在电子邮件中的激活链接中添加代码$activation->code
。
❗ 在包的依赖中,需要更新 Sentinel 的配置文件(
config/cartalyst.sentinel.php
)中的 users 和 roles 模型值。
'users' => [ 'model' => 'App\User', ], 'roles' => [ 'model' => 'App\Role', ],
最后,需要适当地定义 App\User
和 App\Role
模型。为此,需要将 App\User
模型从 ErenMustafaOzdal\LaravelUserModule\User
模型扩展,将 App\Role
模型从 ErenMustafaOzdal\LaravelUserModule\Role
模型扩展。
namespace App; use ErenMustafaOzdal\LaravelUserModule\User as EMOUser; class User extends EMOUser { // }
namespace App; use ErenMustafaOzdal\LaravelUserModule\Role as EMORole; class Role extends EMORole { // }
使用
安装完成后;如果包含 Laravel Modules Core 包,则将在 proje.dev/login
地址上完全欢迎您。
❗ 如果文本显示不正确,这是由于 Laravel Modules Core 包的英文语言文件尚未准备好的原因。因此,您需要在项目的
config/app.php
文件中添加'locale' => 'tr'
的定义。
❗ 当首次用户登录时,您将无法访问任何路由。为了防止这种情况,您需要在数据库中
is_super_admin
列中将其设置为 1。这样,您就可以以具有所有权限的方式继续操作。
配置文件
通用设置
包中使用的通用设置。这是在配置文件中根目录下找到的设置。
URL 设置
这些设置定义了浏览器地址栏中将显示的地址。这是在配置文件的 url
区域中找到的设置。
例如:使用
activate_route
设置,激活页面地址被定义为account-activate
。这样,地址栏将显示类似以下的内容:www.siteadi.com/account-activate/{id}/{code}
视图设置
这些设置定义了包将要使用的视图。这是在配置文件的 views
区域下找到的设置。这里的值默认为 Laravel Modules Core 包的视图。
模型设置
包中使用的一些模型相关的设置。目前只有 User
模型的设置。这个设置位于配置文件的 user
区域。
视图设计
包与 Laravel Modules Core 包一起直接可用。但您也可以设计自己的自定义视图。这部分是针对自定义设计的一个指南。
模型使用
此部分包含有关 User
和 Role
模型的属性和方法的详细信息。这些方法和属性可以在 App\User
和 App\Role
中覆盖。
用户
####### 通用特性
- protected $table = 'users'
- protected $fillable = ['first_name', 'last_name', 'email', 'password', 'is_active', 'photo','permissions']
- protected $hidden = ['password', 'remember_token']
####### $user->getPhoto() 以 HTML img
标签或仅以 URL 的形式返回用户照片。如果没有照片,则返回默认照片
####### $user->first_name string
首字母大写的用户名
####### $user->last_name string
所有字母都大写的用户姓
####### $user->fullname string
用户名和姓的组合
####### $user->is_active boolean
返回用户是否活跃
####### $user->last_login string
以配置文件中的识别方式返回用户最后登录日期
####### $user->last_login_for_humans string
以可读的日期格式返回用户最后登录日期。例如:1周前
####### $user->last_login_table array
以 display
(last_login_for_humans) 和 timestamp
形式的数组返回用户最后登录日期。为在数据表中使用而创建
####### $user->permissions array
以数组形式返回用户操作权限
####### $user->permission_collect Collection
以 Collection 对象 形式返回用户操作权限
####### $user->created_at string
以配置文件中的识别方式返回用户注册日期
####### $user->created_at_for_humans string
以可读的日期格式返回用户注册日期。例如:1周前
####### $user->created_at_table array
以 display
(last_login_for_humans) 和 timestamp
形式的数组返回用户注册日期。为在数据表中使用而创建
####### $user->updated_at string
以配置文件中的识别方式返回用户更新日期
####### $user->updated_at_for_humans string
以可读的日期格式返回用户更新日期。例如:1周前
####### $user->updated_at_table array
以 display
(last_login_for_humans) 和 timestamp
形式的数组返回用户更新日期。为在数据表中使用而创建
角色
####### 通用特性
- protected $table = 'roles'
- protected $fillable = ['name', 'slug', 'permissions']
####### $role->name_uc_first string
首字母大写的用户角色名
####### $role->slug string
用户角色URL格式的版本
####### $role->permissions array
以数组形式返回用户角色的操作权限
####### $role->permission_collect Collection
以Collection对象形式返回用户角色的操作权限
####### $role->created_at string
根据配置文件中的识别返回用户角色创建日期
####### $role->created_at_for_humans string
以可读性高的数据形式返回用户角色创建日期。例如:1周前
####### $role->created_at_table array
以display
(last_login_for_humans)和timestamp
形式保存用户角色创建日期的数组。为在Datatable中使用而创建
####### $role->updated_at string
根据配置文件中的识别返回用户角色更新日期
####### $role->updated_at_for_humans string
以可读性高的数据形式返回用户角色更新日期。例如:1周前
####### $role->updated_at_table array
以display
(last_login_for_humans)和timestamp
形式保存用户角色更新日期的数组。为在Datatable中使用而创建
路由
Laravel用户模块包除了拥有用于CRUD操作的路径外,还有许多可以通过ajax
进行操作的路径。设计视图时可以使用这些路径。
下一节将介绍可用于路径中的表单元素。
登录、注销、注册路由
这些是用于登录、注销、注册、密码找回等操作的路径。
用户路由
这些路径包括用户CRUD操作以及一些包含ajax操作的路径。
用户角色路由
这些路径包括用户角色CRUD操作以及一些包含ajax操作的路径。
表单字段
在操作中使用的表单元素应与数据库表中的列名相同。以下列出了每个操作所需的元素列表。
❗以下列出的表单名称是必需的,顺序可以更改。
不要忘记在
lang/.../validation.php
文件中指定这些表单名称的文本值!此外,您需要为每种语言创建一个validation文件。
登录、注销、注册表单
register
操作表单元素- first_name
- last_name
- password
- password_confirmation
- terms
RegisterRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'email' => 'required|unique:users|email|max:255', 'password' => 'required|confirmed|min:6|max:255', 'terms' => 'required|in:1|accepted' ]; }
login
操作表单元素- password
- remember
LoginRequest
public function rules() { return [ 'email' => 'required|email|max:255', 'password' => 'required|min:6|max:255', ]; }
forgetPassword
操作表单元素
ForgetPasswordRequest
public function rules() { return [ 'email' => 'required|email|max:255', ]; }
resetPassword
操作表单元素- password
- password_confirmation
ResetPasswordRequest
public function rules() { return [ 'email' => 'required|email|max:255', 'password' => 'required|confirmed|min:6|max:255', ]; }
用户表单
store
操作表单元素- first_name
- last_name
- password
- password_confirmation
- photo
- x (如果需要裁剪图片,则裁剪后的左上角位置x值)
- y (如果需要裁剪图片,则裁剪后的左上角位置y值)
- width (如果需要裁剪图片,则裁剪后的宽度值)
- height (如果需要裁剪图片,则裁剪后的高度值)
- permissions
StoreRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'email' => 'required|unique:users|email|max:255', 'password' => 'required|confirmed|min:6|max:255', 'photo' => 'max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', 'permissions' => 'array', ]; }
update
操作表单元素- first_name
- last_name
- password
- password_confirmation
- photo
- x (如果需要裁剪图片,则裁剪后的左上角位置x值)
- y (如果需要裁剪图片,则裁剪后的左上角位置y值)
- width (如果需要裁剪图片,则裁剪后的宽度值)
- height (如果需要裁剪图片,则裁剪后的高度值)
- permissions
UpdateRequest
public function rules() { return [ 'first_name' => 'required|max:255', 'last_name' => 'required|max:255', 'slug' => 'email|max:255|unique:users,slug,'.$this->segment(3), 'password' => 'confirmed|min:6|max:255', 'photo' => 'max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', 'permissions' => 'array', ]; }
changePassword
操作表单元素- password
- password_confirmation
PasswordRequest
public function rules() { return [ 'password' => 'required|confirmed|min:6|max:255' ]; }
permission
操作表单元素- permissions
PermissionRequest
public function rules() { return [ 'permissions' => 'array' ]; }
-
Api
index
筛选操作数据- action=filter
- id
- first_name
- last_name
- status (is_active列筛选;1或0)
- created_at_from
- created_at_to
-
Api
store
操作数据,与上述store操作相同。不包括图片数据 -
Api
update
操作数据,与上述update操作相同。不包括图片数据 -
Api
group
操作数据- action=activate|not_activate|destroy
- id (以数组形式表示模型ID)
-
Api
avatarPhoto
操作数据- photo
- x (如果需要裁剪图片,则裁剪后的左上角位置x值)
- y (如果需要裁剪图片,则裁剪后的左上角位置y值)
- width (如果需要裁剪图片,则裁剪后的宽度值)
- height (如果需要裁剪图片,则裁剪后的高度值)
PhotoRequest
public function rules() { return [ 'photo' => 'required|max:5120|image|mimes:jpeg,jpg,png', 'x' => 'integer', 'y' => 'integer', 'width' => 'integer', 'height' => 'integer', ]; }
用户角色表单
store
操作表单元素- name
- slug
- permissions
StoreRequest
public function rules() { return [ 'name' => 'required|max:255', 'slug' => 'alpha_dash|max:255|unique:roles', 'permissions' => 'array', ]; }
update
操作表单元素- name
- slug
- permissions
UpdateRequest
public function rules() { return [ 'name' => 'max:255', 'slug' => 'alpha_dash|max:255|unique:roles,slug,'.$this->segment(3), 'permissions' => 'array', ]; }
-
Api
index
筛选操作数据- action=filter
- id
- name
- slug
- created_at_from
- created_at_to
-
Api
store
操作数据,与上述store操作相同 -
Api
update
操作数据,与上述update操作相同 -
Api
group
操作数据- action=destroy
- id (以数组形式表示模型ID)
-
Api
models
操作数据- 查询(以文本形式发送,并在
name
、slug
字段中使用like
方法进行筛选)
- 查询(以文本形式发送,并在
操作权限表单
创建用户和角色权限表非常简单。 Laravel User Module 使用 ErenMustafaOzdal\LaravelUserModule\Services\PermissionService
类来处理此操作。此类获取所有以 admin
和 api
开头的已定义路由,并以 Collection
类型返回。这样您可以使用 foreach 和复选框列出权限。要示例使用,首先在您要创建的 blade 文件中注入此类,然后进行列表显示。
@inject('permission', 'ErenMustafaOzdal\LaravelUserModule\Services\PermissionService') <ul> @foreach($permission->groupByController() as $namespace => $routes) <li> <span class="route-name">{!! $route['route'] !!}</span> {!! Form::checkbox( "permissions[{$route['route']}]", true, isset($permissions[$route['route']]) ) !!} </li> @endforeach </ul>
$permission->getCollection()
Illuminate\Routing\RouteCollection
类型的列表返回
$permission->getNames()
Illuminate\Support\Collection
类型的列表返回。此列表在 all
键中包含所有路由。在 admin
和 api
键中包含相应的路由列表。
$permission->getSpecificNames($prefix)
返回具有指定前缀的 Illuminate\Support\Collection
类型的路由名称列表。例如:api
$permission->getNameParts()
Illuminate\Support\Collection
类型的列表返回。与 $permission->getNames()
方法的唯一区别是它没有 all
键。
$permission->getAllNames()
Illuminate\Support\Collection
类型的列表返回。仅包含 all
键中的列表。
$permission->groupByController()
Illuminate\Support\Collection
类型的列表,根据 Controller 类型对所有路由进行分组。
$permission->permissionCount()
返回操作权限数,即路由名称数
$permission->permissionRate($count)
根据发送给方法的用户或用户角色权限数量,返回所具有权限的百分比。返回值类型为:integer
审核
Laravel User Module 包为每个表单请求设置了验证规则。对于此类表单请求验证规则,您不需要做任何事情。上述 Request
类的 rules
方法中已有说明。
事件
包内的几乎所有操作都会触发某个事件。您可以在自己的监听器文件中监听这些事件,并在事件触发时轻松执行所需操作。
登录、注销、注册事件
用户事件
用户角色事件
许可证
MIT