kolgaev / users
REST API 应用程序的注册和授权。用户角色和权限。
Requires
- jenssegers/agent: 3.0.x-dev
This package is auto-updated.
Last update: 2024-09-20 02:28:44 UTC
README
Laravel 扩展用户
本包实现了用户注册、授权和认证功能,并添加了用户角色和权限。
安装
安装包: composer require kolgaev/users
配置
如果您需要更改表名或重定义权限和角色的模型,请运行以下命令:php artisan vendor:publish --provider="Kolgaev\Users\Provider\KolgaevUsersServiceProvider"
现在可以在新出现的配置文件 /config/kolgaev_users.php
中更改表名和列名
如果您需要向 Role 和 Permission 模型添加方法,则定义自己的模型,这些模型将继承包中的相应模型
<?php
use Kolgaev\Users\Model\Role as ParentRole;
class Role extends ParentRole
{
// ...
}
不要忘记在配置文件中指定自定义模型的路径
模型和数据库
在用户模型中需要添加 UsersRoleAndPermission
特性
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Kolgaev\Users\Models\UsersRoleAndPermission;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable, UsersRoleAndPermission;
}
要创建数据库中的表,请执行以下命令:php artisan migrate
将执行包的标准迁移,并根据其配置创建所需的表
路由
包的提供者已经定义了标准的路由,可通过 http://example.com/api/*
访问。如果需要更改前缀,可以在配置文件中完成
路由表
方法
要获取用户的权限和确定用户角色,请使用以下方法
<?php
/** @var int $id Идентификатор роли */
$request->user()->addRole($id);
$request->user()->removeRole($id);
/** @var int $id Идентификатор разрешения */
$request->user()->addPermission($id);
$request->user()->removePermission($id);
同样,对于角色,可以授予和撤销权限
<?php
/** @var int $id Идентификатор роли */
$role = \Kolgaev\Users\Models\Role::find($id);
$role->addPermission($permission_id);
$role->removePermission($permission_id);
控制器
已实现相应的控制器以提供角色和权限。方法将以 JSON 格式返回响应
您需要做的就是定义自己的路由到相应的方法
<?php
Route::post('user/addPermission', '\Kolgaev\Users\Users@addPermission');
以下是一些方法
<?php
use Illuminate\Http\Request;
use Kolgaev\Users\Users;
Users::addPermission(Request $request);
Users::removePermission(Request $request);
请求需要传递以下参数
id
用户标识符permission_id
权限标识符
对于角色也是如此
<?php
use Illuminate\Http\Request;
use Kolgaev\Users\Roles;
Roles::addUser(Request $request);
Roles::removeUser(Request $request);
Roles::addPermission(Request $request);
Roles::removePermission(Request $request);
addUser 和 removeUser 方法接受以下参数
id
用户标识符role_id
角色标识符
addPermission 和 removePermission 方法
id
角色标识符permission_id
权限标识符