1

我正在使用 Laravel 4.1 和 Sentry 2 作为授权和身份验证包来构建我的项目。
我已经设法让用户登录、注册并分配适当的用户组。
我有 3 个用户组:

  • 行政人员
  • 主持人
  • 挂号的

我想实现两件事:

  1. 管理员演示者可以访问管理面板。用户没有。
  2. 限制演示者管理面板中的视图。我希望他们只看到很少的视图(链接),例如只有Schedule

我以前从未使用过角色,这是我第一次使用 Sentry 2。这就是我想寻求帮助的原因。一些点,如何开始。我怎样才能实现两者?

4

3 回答 3

4

对于更一般的权限检查,我会查看inGroup()助手:

// Find the user using the user id
$user = Sentry::findUserByID(1);

// Find the Administrator group
$admin = Sentry::findGroupByName('Administrator');

// Check if the user is in the administrator group
if ($user->inGroup($admin)) {
    // User is in Administrator group
} else {
    // User is not in Administrator group
}
于 2014-02-08T15:24:35.030 回答
1

定义所有组的权限。

检查本教程https://cartalyst.com/manual/sentry/users/helpers

并专注于hasAccess($permission)hasAnyAccess($permissions)

于 2014-01-29T19:48:13.390 回答
0

在过滤器.php

/**
* hasAcces filter (permissions)
*
* Check if the user has permission (group/user)
*/
Route::filter('hasAccess', function($route, $request, $value)
{
    try {
        $user = Sentry::getUser();
        if( ! $user->hasAccess($value)) {
            if(Sentry::check())
                return Redirect::to('portal')->with('message', 'No Access.');
            else
                return Redirect::to('registration#login')->with('message', 'No Access.');
        }
    } catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
        if(Sentry::check())
            return Redirect::to('portal')->with('message', 'User not found.');
        else
            return Redirect::to('registration#login')->with('message', 'User not found.');
    }
});

/**
* InGroup filter
*
* Check if the user belongs to a group
*/
Route::filter('inGroup', function($route, $request, $value) {
    try {
        $user = Sentry::getUser();
        $group = Sentry::findGroupByName($value);
        if( ! $user->inGroup($group)) {
            if(Sentry::check())
                return Redirect::to('portal')->with('message', 'No Access.');
            else
                return Redirect::to('registration#login')->with('message', 'No Access.');
        }
    } catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
        if(Sentry::check())
            return Redirect::to('portal')->with('message', 'User not found.');
        else
            return Redirect::to('registration#login')->with('message', 'User not found.');
    } catch (Cartalyst\Sentry\Groups\GroupNotFoundException $e) {
        if(Sentry::check())
            return Redirect::to('portal')->with('message', 'Group not found.');
        else
            return Redirect::to('registration#login')->with('message', 'Group not found.');
    }
});

路线 ->

Route::group(array( 'before' => 'Sentry|inGroup:Administrators'), function() {
    Route::get('manageusers', array('as' => 'manageusers', 'uses' => 'UserController@viewUsersList'));
});
于 2015-02-23T14:44:17.470 回答