定制 inani/maravel-permissions 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

inani/maravel-permissions

Composer 安装命令:

composer require inani/maravel-permissions

包简介

A Laravel Package that handle roles and permissions for the user

README 文档

README

inani-user2

Download

composer require inani/maravel-permissions

Installation

Then include the service provider inside config/app.php. (You can skipp it if it's in Laravel 5.5 or higher)

'providers' => [
    ...
    Inani\Maravel\Providers\MaravelServiceProvider::class,
    ...
];

Publish resources, and migrate

php artisan vendor:publish

PS : You can edit 2020_05_27_221346_add_role_id_to_users migration to link it with the correct user table

Edit the config/maravels.php with the correct values

<?php

return [
    // Define the list of actions to be checked against
    'actions' => [
        'add', 'delete', 'create', 'search', 'update'
    ],

    // define the class path for the entities
    'entities' => [
        \App\Models\User::class,
    ],
];

And then migrate

php artisan migrate

Setup a Model

To setup the user model, all you have to do is add (and import) the IsMarvel trait.

use Inani\Maravel\HasRole;

class User extends Model
{
    use HasRole;
    ...
}

Usage

All roles are role and permissions are powers

Because every user deserves to be a hero, The Maravel API is based on the Marvel Jargon, and here are how it can be used

// Having a user
$user = User::first();

// Create a new role, description is not mandotary
$userManager = RoleBuilder::create('User Manager', 'The role to manage users')
                ->havingPower([
                   'name' => 'can_update',
                   'description' => 'The abilitiy to update a user',
                   'action' => 'update',
                   'entity' => \App\Models\User::class,
               ]);

// we can grant a power to it
$userManager = RoleBuilder::of($userManager)
                        ->grant([
                             'name' => 'can_create',
                             'description' => 'The abilitiy to create a user',
                             'action' => 'create',
                             'entity' => \App\Models\User::class,
                         ]);

// Or take it off
$ability = Ability::first();

$storm = RoleBuilder::of($userManager)->takeOff($ability);


// bless the user with the abilities of the role
$user->roleManager()->blessWith($storm);


// check if it has the ability
$user->roleManager()->owns($ability);

// check if it has one of the provided abilities
$user->roleManager()->ownsOneOf([$ability, $anOtherAbility]);

// make it human again (remove its role)
$user->roleManager()->humanize();

You can also manage the instances directly

// Create Ability
$ability = Ability::create([
    'name' => 'post_write',
    'description' => 'Abitlity to create new Posts',
    'action' => 'add',
    'entity' => \App\Models\Post::class,
]);

// Create a Marvel
$writer = Role::create([
    'name' => 'Webmaster',
    'description' => 'A Role that allows you create new posts'
]);

// Grant the ability
$writer->grant($ability);

// remove a certain ability
$writer->takeOff($ability);

// remove all and keep only those
$abilities = [1, 2]; // or the models
$writer->keep($abilities);

// bless it to our user
$user = \App\Models\User::first();

$user->roleManager()->blessWith($writer);

Am I missing something?

Submit a PR or issue with details!

inani/maravel-permissions 适用场景与选型建议

inani/maravel-permissions 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 44 次下载、GitHub Stars 达 140, 最近一次更新时间为 2020 年 05 月 28 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「user」 「laravel」 「permission」 「role」 「ability」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 inani/maravel-permissions 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 inani/maravel-permissions 我们能提供哪些服务?
定制开发 / 二次开发

基于 inani/maravel-permissions 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 44
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 141
  • 点击次数: 7
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 140
  • Watchers: 5
  • Forks: 6
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-05-28