alsa7err90/magic_role7

此包让您轻松添加和定义用户角色和权限

安装: 15

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 1

分支: 0

开放问题: 0

语言:Blade

类型:

dev-main 2021-11-03 19:17 UTC

This package is auto-updated.

Last update: 2024-09-29 06:08:36 UTC


README

此包让您轻松添加和定义用户角色和权限

安装

通过 Composer 安装包。

在终端中运行 Composer require 命令

   composer require alsa7err90/magic_role7
  • 打开 config/app.php 并将此行添加到您的 Service Providers 数组中。

    alsa7err90\magic_role7\rolesServiceProvider::class,
    
  • 打开 config/app.php 并将此行添加到您的别名中

    'ViewRoles' => alsa7err90\magic_role7\ViewRolesFacade::class,
    
  • 使用

    php artisan vendor:publish --all
    
  • 打开 app/User.php 并将此方法添加到 "class User" 中

     public function hasRole(... $roles) 
     {
          foreach ($roles as $role) 
          {
                if ($this->roles->contains('slug', $role)) 
                {
                    return true;
                }
         }
         return false;
    }
    
    public function roles()
    {
        return $this->belongsToMany(Magrole::class);
    }
    
    public function assignRole(Magrole $role)
    {
        return $this->roles()->save($role);
    }
    
  • 要分配用户注册后的默认角色:打开 "app/Http/Controllers/Auth" 目录下的 "RegisterController.php" 文件,并编辑 register 函数

    this old code :
    return User::create([
          'name' => $data['name'],
          'email' => $data['email'],
          'password' => Hash::make($data['password']),
      ]);
      
    to new code :
     use App\Magrole; // this before class RegisterController
     .. 
      $user = User::create([
          'name' => $data['name'],
          'email' => $data['email'],
          'password' => Hash::make($data['password']),
      ]);
      $role = Magrole::where('name', 'user')->first();
      $user->assignRole($role);
      return $user;
    

-在终端中运行 php artisan migrate 命令

  php artisan migrate
  • 打开 .env 文件并添加此行,不要忘记将电子邮件替换为管理员电子邮件

    EMAIL_ADMINISTRATOR=yourEmailAdmin@example.com
    

使用

-访问此链接

http://127.0.0.1:8000/mag_permissions

在这里您可以手动添加权限或自动添加。如果想要自动添加,只需点击按钮:auto_refresh_permission;如果想要手动添加,您应该首先写类名控制器或任何您使用的类,然后写 "_",之后写 "do",例如 "show, store, save, ......" 或您需要的任何名称

          Ex:   show_PostController

-访问此链接

http://127.0.0.1:8000/mag_roles

添加角色(例如:admin,editor,user)。添加后,点击 "编辑权限" 添加或删除此角色的权限 - 访问此链接

http://127.0.0.1:8000/mag_users

并将角色添加到用户

1- 路由

    resource: mag_roles
    resource: mag_permissions
    resource: mag_users

作为链接

    <a href=" {{ URL::to('mag_roles') }}" > roles </a> 

2 - 控制器

检查用户是否有权限使用此功能

     $magic_role = new MagicRole();
     $magic_role->chakeRole('nameController','do') ;

-控制器名称:类控制器名称,例如:我们有一个名为的控制器

   use alsa7err90\magic_role7\MagicRole; 
   class PostController extends Component
   {
      public function show ()
      {
              $magic_role = new MagicRole();
              $magic_role->chakeRole('PostController ', 'show');
         ...............
       }
    }

-do:如果使用 auto_insert_permission,这将添加 4 个词,您可以使用这些词

   -show: use in function index and show ($ id)
   -update: use in function edit and update (Request $ request, $ id)
   -destroy1: use for softy delete
   -destroy2: use for delete
   -store: use in function create and store

在 blade 中使用

获取用户的角色

   $role_user = ViewRoles::has_role();

这将返回角色名称,如 "admin"、"editor" 等

检查用户是否有任何角色 "admin"

   $has_admin = ViewRoles::is_has_role("admin");

这将返回 true 或 false

检查用户是否有权限 "show_Controller"

   ViewRoles::is_has_permission("show_MagPermissionController");

这将返回 true 或 false

例如,检查用户是否有权限显示链接

           @if(ViewRoles::is_has_permission("show_PostController"))
                <a href='" {{ URL::to('Post') }} Post </a>
           @endif

如果您不想使用默认路由,您可以在视图中的任何页面内使用 blade 目录

 @mag_user
 @mag_role
 @mag_permission

只需写下以下任何一个,就可以获取一个表格或表单,或两者兼而有之。如果您想修改这些表格或表单的样式,请转到文件夹 vendor/alsa7err90/magic_role7/src/view 并选择您想要编辑的任何文件。