achais/laravel-permission

๐Ÿ“š ๅŸบไบŽ spatie/laravel-permission ไบŒๆฌกๅผ€ๅ‘็š„ๆŒ‰้’ฎ็บงๆƒ้™็ฎก็† Laravel ๆ‰ฉๅฑ•ๅŒ…ใ€‚(่ง’่‰ฒใ€ๆƒ้™ใ€่œๅ•ใ€ๆŒ‰้’ฎ)

Downloads

113

Stars

11

Version

laravel-permission

๐Ÿ“š ๅŸบไบŽ spatie/laravel-permission ไบŒๆฌกๅผ€ๅ‘็š„ๆŒ‰้’ฎ็บงๆƒ้™็ฎก็† Laravel ๆ‰ฉๅฑ•ๅŒ…ใ€‚(่ง’่‰ฒใ€ๆƒ้™ใ€่œๅ•ใ€ๆŒ‰้’ฎ)

็Žฏๅขƒ

  • "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

achais

Author

achais