#php #laravel #laravel-4 #cartalyst-sentry
#php #laravel #laravel-4 #cartalyst-sentry
Вопрос:
В моем sentry seeder у меня есть следующее:
<?php
use AppModelsUser;
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' => 'admin@admin.com',
'password' => "admin@admin.com",
'first_name' => 'Kamran',
'last_name' => 'Ahmed',
'activated' => 1,
));
Sentry::getUserProvider()->create(array(
'email' => 'user@user.com',
'password' => "user@user.com",
'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('admin@admin.com');
$adminGroup = Sentry::getGroupProvider()->findByName('Admin');
$normalUser = Sentry::getUserProvider()->findByLogin('user@user.com');
$normalGroup = Sentry::getGroupProvider()->findByName('Blogger');
$adminUser->addGroup($adminGroup);
}
}
Как вы можете видеть, я определил две группы Admin
и Blogger
. Admin
имеет все разрешения, определенные blog
, в то время как blogger может только blog.add
, blog.update
, blog.trash
и blog.remove
. В моем представлении post у меня есть кнопка с именем, 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
Теперь, когда я вхожу в систему с помощью admin@admin.com
, все работает нормально, то есть кнопка удаления отображается как ожидалось, потому что у admin
есть разрешение access to blog
. Но, когда я вхожу в систему с помощью user@user.com
, кнопка не отображается. В чем причина того, что кнопка не отображается, хотя я назначил разрешение blog.remove
на user@user.com
. Также я сделал var_dump(..)
и это возвращает false
. Кто-нибудь, пожалуйста, может сказать мне, что не так с моей реализацией? Почему для user@user.com
пользователя не отображается кнопка удаления?
Комментарии:
1. глядя на ваш сеялку, вы добавляете пользователя только в группу администраторов, а не в группу blogger.
Ответ №1:
В вашем сеялке вы не назначаете пользователя в blogger
группу.
$normalUser->addGroup($normalGroup);