achais/laravel-permission

๐Ÿ“š ๅŸบไบŽ spatie/laravel-permission ไบŒๆฌกๅผ€ๅ‘็š„ๆŒ‰้’ฎ็บงๆƒ้™็ฎก็† Laravel ๆ‰ฉๅฑ•ๅŒ…ใ€‚(่ง’่‰ฒใ€ๆƒ้™ใ€่œๅ•ใ€ๆŒ‰้’ฎ)
114 11
Install
composer require achais/laravel-permission
PHP:>=7.0
License:MIT
Last Updated:Oct 10, 2019
Links: GitHub  ·  Packagist
Maintainer: achais

็Žฏๅขƒ

  • "php": ">=7.0",
  • "laravel/framework": "^5.5",

ๅฎ‰่ฃ…

$ composer require achais/laravel-permission -vvv

Laravel

็”Ÿๆˆ้…็ฝฎๆ–‡ไปถ

# ๅฆ‚ๆžœไฝ ๅฎ‰่ฃ…่ฟ‡ spatie/laravel-permission ๅนถๅˆ›ๅปบไบ† permission.php ่ฏทๅฟฝ็•ฅ่ฟ™ๆญฅ
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

ๅœจ permission.php ๅฏนๅบ”ไฝ็ฝฎไธญๅŠ ๅ…ฅ่œๅ•้…็ฝฎไฟกๆฏ

<?php

return [
    'models' => [
        // ...
        'role' => Achais\Permission\Models\Role::class,
        'menu' => Achais\Permission\Models\Menu::class,
    ],

    'table_names' => [
        // ...
        'menus' => 'menus',
        'role_has_menus' => 'role_has_menus',
        'menu_table' => 'menu_table',
    ],

    // guard ๅ็งฐ
    'role_guard_name' => 'admin',

];

็”Ÿๆˆ่ฟ็งปๆ–‡ไปถ

# ๅฆ‚ๆžœไฝ ๅฎ‰่ฃ…่ฟ‡ spatie/laravel-permission ๅนถๅˆ›ๅปบไบ† migrations ่ฏทๅฟฝ็•ฅ่ฟ™ๆญฅ
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

# ่ฟ™ๆ˜ฏๆœฌๅŒ…ๆไพ›็š„็”Ÿๆˆ menus ๅ’Œ role_has_menus ๆ•ฐๆฎๅบ“่กจ็š„ migrations
php artisan vendor:publish --provider="Achais\Permission\PermissionServiceProvider" --tag="migrations"

ๆŽฅไธ‹ๆฅๅœจไฝฟ็”จ migrations ็”Ÿๆˆๆ•ฐๆฎๅบ“่กจ

php artisan migrate

ไฝฟ็”จ

้ฆ–ๅ…ˆ, ๆทปๅŠ  Achais\Permission\Traits\HasRoles ็‰นๆ€งๅˆฐไฝ ็š„ User model(s):

use Illuminate\Foundation\Auth\User as Authenticatable;
use Achais\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    // ๆณจๆ„่ฟ™้‡Œๆ˜ฏ \Achais\Permission\Traits\HasRoles
    use HasRoles;

    // ...
}

ๅ…ณไบŽ่ง’่‰ฒๅ’Œๆƒ้™็š„ๆ“ไฝœ่ฏทๆŸฅ็œ‹่ฟ™้‡Œ. spatie/laravel-permission

ๅ…ณไบŽ่ง’่‰ฒๅ’Œ่œๅ•็š„ๆ“ไฝœ็ปง็ปญๅพ€ไธ‹็œ‹. ๐Ÿ˜๐Ÿ˜๐Ÿ˜

ๅˆ›ๅปบไธ€ไธช่ง’่‰ฒๅ’Œ่œๅ•

use Achais\Permission\Models\Role;
use Achais\Permission\Models\Menu;

$role = Role::create(['name' => '็ฎก็†ๅ‘˜']);
$menu = Menu::create([
    'name' => 'ๆ–‡็ซ ๅˆ—่กจ',
    'url' => '/posts',
    'type' => Menu::TYPE_MENU,
    'icon' => 'iconName',
]);

ๅ…ณ่”่ง’่‰ฒๅ’Œ่œๅ•

$role->giveMenuTo($menu);
$menu->assignRole($role);

ๅŒๆ—ถๅ…ณ่”ๅคšไธช่ง’่‰ฒๅ’Œ่œๅ•

$role->syncMenus($menus);
$menu->syncRoles($roles);

่Žทๅ–็”จๆˆท่œๅ•ๆ ‘

่œๅ•็ฑปๅž‹ๅˆ†ไธบ: ็›ฎๅฝ•ใ€่œๅ•ใ€ๆŒ‰้’ฎ
็›ฎๅฝ•: ๆ— ๅฏๆŸฅ็œ‹็š„้กต้ข, ไป…ๅˆ†็ฑปไฝฟ็”จ
่œๅ•: ๅฏๆŸฅ็œ‹็š„้กต้ข
ๆŒ‰้’ฎ: ๆ— ๅฏๆŸฅ็œ‹็š„้กต้ข, ไป…ๅœจ่œๅ•้กต้ขๅ†…ๆ˜พ็คบ

$user = \Auth::user();

$parentId = null; // ็ˆถ่œๅ•ID (็”จๅœจ่Žทๅ–ๆŒ‡ๅฎš่œๅ•ไธ‹็š„ๅญ่œๅ•ๆ ‘)
$showButton = false; // ๆ˜ฏๅฆๆ˜พ็คบๆŒ‰้’ฎ็ฑปๅž‹็š„่œๅ•

$user->getMenuTree($parentId, $showButton);

่ดก็Œฎ

You can contribute in one of three ways:

  1. File bug reports using the issue tracker.
  2. Answer questions or fix bugs on the issue tracker.
  3. Contribute new features or update the wiki.

The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.

License

MIT

Related Packages

gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

631,580,251 9,707
laravel/framework

The Laravel Framework.

580,311,802 34,925
laravel/tinker

Powerful REPL for the Laravel framework.

489,754,436 7,444