dev-main 2022-02-19 01:39 UTC

This package is auto-updated.

Last update: 2024-09-19 07:36:42 UTC


README

模块化具有以下结构

模块

是系统的核心模块。

区域

区域是模块的一部分,是系统结构中更小的部分。

角色

角色分配给用户,并具有分配给模块的权限。

角色类型

角色可以根据其需求进行分类。

权限

根据要分配的区域,将权限分配给用户。

用户

用户需要分配角色和模块,并根据模块权限分配给区域。

安装

此包还需要安装Laravel Passport

composer require ricardocrem20/modu

配置

  1. 前往'app/Providers/AuthServiceProvider.php'目录,在'boot'函数中定义以下'Gate'
use App\Models\User;

public function boot()
{
    $this->registerPolicies();

    if (!$this->app->routesAreCached()) {
        Passport::routes();
    }
    
    Gate::define('tieneAcceso', function ($user, $permiso) {
        return $user->tienePermiso($permiso, $user->id);
    });
}
  1. 前往以下迁移'database/migrations/########_create_users_table.php',应如下所示
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->enum('tipo_identificacion', ['CC',  'TI'])->nullable();
        $table->string('identificacion', 15)->unique()->nullable();
        $table->string('nombre', 90);
        $table->string('nombres', 45)->nullable();
        $table->string('apellidos', 45)->nullable();
        $table->string('email', 60)->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->string('foto_perfil')
            ->default('http://modu.test/storage/img/perfiles/default.png');
        $table->rememberToken();
        $table->timestamps();
    });
}
  1. 在以下目录'app/Models/User.php'中添加
use Ricardo\Modu\Traits\UserTrait;
class User extends Authenticatable
{
  use HasApiTokens, HasFactory, Notifiable, UserTrait;
}
  1. 执行迁移和播种
php artisan migrate --seed
o
php artisan migrate:fres --seed

在数据库中,应该已经创建了数据和一个用户,如下所示

user: ricardo@app.io
password: password 
  1. 执行Passport Laravel并发布storage
php artisan passport:install
php artisan storage:link

如果出现错误,请务必执行

php artisan optimize

实现

在每个需要权限的控制器函数中添加以下内容

Gate::authorize('tieneAcceso', 'slug_del_permiso');

路由必须位于

Route::group(['middleware' => 'auth:api'], function() {
  // Routes
}

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件