How to: implement sentry 2 permissions with Laravel 4?

前端 未结 2 826
误落风尘
误落风尘 2020-12-24 07:16

I\'m trying to use cartalyst sentry 2 in my site being built with Laravel 4. Basically I don\'t understand how to implement permissions.

The examples I\'ve seen for

相关标签:
2条回答
  • 2020-12-24 07:42

    Basically you have to..

    Create your groups

    Sentry::getGroupProvider()->create([
        'name' => 'Super Administrators',
        'permissions' => [
            'system' => 1,
        ],
    ]);
    
    Sentry::getGroupProvider()->create([
        'name' => 'Managers',
        'permissions' => [
            'system.products' => 1,
            'system.store' => 1,
            'system.profile' => 1,
        ],
    ]);
    

    Set a group to a particular user, in this case it is setting Managers to the current logged user

    Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Managers') );
    

    Check if a user has a particular access

    if ( Sentry::getUser()->hasAnyAccess(['system','system.products']) )
    {
        // Will be able to do a thing
    }
    

    Check if a user is Super Administrator (only this group has the 'system' access)

    if ( Sentry::getUser()->hasAnyAccess(['system']) )
    {
        // Will be able to do a thing
    }
    

    Get all groups from a particular user

    try
    {
        // Find the user using the user id
        $user = Sentry::getUserProvider()->findById(1);
    
        // Get the user groups
        $groups = $user->getGroups();
    }
    catch (Cartalyst\Sentry\Users\UserNotFoundException $e)
    {
        echo 'User was not found.';
    }
    
    0 讨论(0)
  • 2020-12-24 07:44

    In your groups table you set the permissions using JSON.

    I have the following columns:

    id | name | permissions

    And a row:

    1 | admin | {"admin":1, "create_news": 1}

    Assign a user to a group using the table users_groups

    Now you can use the following example to check if a user have a given permission:

    $user = Sentry::getUser();
    if ($user->hasAccess('create_news')) {
        echo "You can create a news item";
    }
    else {
        echo "You can't create a news item";
    }
    
    0 讨论(0)
提交回复
热议问题