Laravel: разрешения Sentry не работают должным образом

У меня в сеялке сентри есть следующее:

<?php

use App\Models\User;

class SentrySeeder extends Seeder {

    public function run()
    {
        DB::table('users')->delete();
        DB::table('groups')->delete();
        DB::table('users_groups')->delete();

        Sentry::getUserProvider()->create(array(
            'email'       => '[email protected]',
            'password'    => "[email protected]",
            'first_name'  => 'Kamran',
            'last_name'   => 'Ahmed',
            'activated'   => 1,
        ));

        Sentry::getUserProvider()->create(array(
            'email'       => '[email protected]',
            'password'    => "[email protected]",
            'first_name'  => 'New',
            'last_name'   => 'User',
            'activated'   => 1,
        ));

        Sentry::getGroupProvider()->create(array(
            'name'        => 'Admin',
            'permissions' => array(
                'blog' => 1
            ),
        ));

        Sentry::getGroupProvider()->create(array(
            'name'        => 'Blogger',
            'permissions' => array(
                'blog.add' => 1,
                'blog.update' => 1,
                'blog.trash' => 1,
                'blog.remove' => 1
            ),
        ));

        // Assign user permissions
        $adminUser  = Sentry::getUserProvider()->findByLogin('[email protected]');
        $adminGroup = Sentry::getGroupProvider()->findByName('Admin');

        $normalUser  = Sentry::getUserProvider()->findByLogin('[email protected]');
        $normalGroup = Sentry::getGroupProvider()->findByName('Blogger');

        $adminUser->addGroup($adminGroup);
    }

}

Как видите, я определил две группы Admin и Blogger. Admin имеет все разрешения, определенные blog, а blogger может только blog.add, blog.update, blog.trash и blog.remove. В моем представлении сообщения у меня есть кнопка с именем Delete Permanently, для которой я использовал разрешение blog.remove. Я хочу показывать эту кнопку, только если Sentry::getUser()->hasAnyAccess(array('blog', 'blog.remove')):

@if (Sentry::getUser()->hasAnyAccess(array('blog', 'blog.remove')))
    <a class="btn btn-danger" href="{{URL::to('post/delete/' . $post->id)}}">Delete Permanently</a>
@endif

Теперь, когда я вхожу в систему, используя [email protected], все работает нормально, кнопка удаления отображается, как и ожидалось, потому что admin имеет доступ к разрешению blog. Но когда я вхожу в систему с помощью [email protected], кнопка не отображается. По какой причине кнопка не отображается, хотя я назначил разрешение blog.remove для [email protected]. Также я сделал var_dump(..) и вернул false. Может ли кто-нибудь сказать мне, что не так с моей реализацией? Почему кнопка удаления не отображается для пользователя [email protected]?


person Kamran Ahmed    schedule 06.07.2014    source источник
comment
Глядя на ваш сидер, вы добавляете пользователя только в группу администраторов, а не в группу блоггеров.   -  person Jeemusu    schedule 06.07.2014


Ответы (1)


В вашем сеялке вы не назначаете пользователя в группу blogger.

$normalUser->addGroup($normalGroup);
person Jeemusu    schedule 06.07.2014