У меня в сеялке сентри есть следующее:
<?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]
?