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