kolgaev/users

REST API 应用程序的注册和授权。用户角色和权限。

v0.1.1 2021-09-19 19:38 UTC

This package is auto-updated.

Last update: 2024-09-20 02:28:44 UTC


README

Laravel 扩展用户

Release Version Downloads GitHub Downloads Packagist

本包实现了用户注册、授权和认证功能,并添加了用户角色和权限。

安装

安装包: 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 权限标识符