Laravel 4.で構築されているサイトで、カルタリストセントリー2を使用しようとしています。基本的に、権限の実装方法がわかりません。
グループのアクセス許可について私が見た例では、例として次のように指定しています。
{
"name" : "Administrator",
"permissions" :
{
"user.create" : 1,
"user.delete" : 1,
"user.view" : 1,
"user.update" : 1
}
}
したがって、これは管理者グループの権限を設定しています。しかし、これらの権限はどこに設定されていますか?
テーブル「グループ」には、テキストフィールドである権限と呼ばれるフィールドがあります-それらはそこに設定されています-もしそうなら、どのようにですか?または、これらはモデルまたはコントローラーに設定されていますか?
laravel 4アプリでの使用方法について、段階的に誰かに教えてもらえますか?私は、関数を経由するサポートドキュメントを読みましたが、設定方法がわからないだけです関数を機能させるためのデータ。
基本的には..
グループを作成する
Sentry::getGroupProvider()->create([
'name' => 'Super Administrators',
'permissions' => [
'system' => 1,
],
]);
Sentry::getGroupProvider()->create([
'name' => 'Managers',
'permissions' => [
'system.products' => 1,
'system.store' => 1,
'system.profile' => 1,
],
]);
グループを特定のユーザーに設定します。この場合、マネージャーは現在ログインしているユーザーに設定されます
Sentry::getUser()->addGroup( Sentry::getGroupProvider()->findByName('Managers') );
ユーザーに特定のアクセス権があるかどうかを確認する
if ( Sentry::getUser()->hasAnyAccess(['system','system.products']) )
{
// Will be able to do a thing
}
ユーザーが特権管理者であるかどうかを確認します(このグループにのみ「システム」アクセス権があります)
if ( Sentry::getUser()->hasAnyAccess(['system']) )
{
// Will be able to do a thing
}
特定のユーザーからすべてのグループを取得する
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.';
}
groups
テーブルで、JSONを使用して権限を設定します。
次の列があります。
id | name | permissions
そして行:
1 | admin | {"admin":1, "create_news": 1}
テーブルusers_groups
を使用してユーザーをグループに割り当てます
これで、次の例を使用して、ユーザーが特定の権限を持っているかどうかを確認できます。
$user = Sentry::getUser();
if ($user->hasAccess('create_news')) {
echo "You can create a news item";
}
else {
echo "You can't create a news item";
}