Php 检查后端用户是否属于OctoberCMS Laravel的组?

Php 检查后端用户是否属于OctoberCMS Laravel的组?,php,laravel,laravel-5,octobercms,Php,Laravel,Laravel 5,Octobercms,我用的是基于拉威尔的 我有一个后端用户,Matt分组所有者,管理员 如何检查用户是否属于特定组以允许身份验证 有人告诉我需要传递一个组对象,但我不知道那是什么 use Auth; use BackendAuth; use Backend\Models\User; if (BackendAuth::check()) { // get current backend user $backend_user = BackendAuth::getUser(); // get

我用的是基于拉威尔的

我有一个后端用户,
Matt
分组
所有者
管理员

如何检查用户是否属于特定组以允许身份验证

有人告诉我需要传递一个组对象,但我不知道那是什么

use Auth;
use BackendAuth;
use Backend\Models\User;

if (BackendAuth::check()) {

    // get current backend user
    $backend_user = BackendAuth::getUser();

    // get current backend user's groups
    $backend_user_groups = Backend::getUser()->groups;

    // authenticate
    if ($backend_user->inGroup('administrators') {

    }
}
错误

我试过的另一种方法

if (User::inGroup('administrators') {

} 
错误

不应静态调用非静态方法十月\Rain\Auth\Models\User::inGroup()

文件


可能有一些辅助功能,但您也可以使用:

$backend_user->groups()->whereName('administrators')->exists();

您还可以扩展后端用户模型,并向其添加帮助器方法以检查角色。在插件的
boot()
方法中执行以下操作:

use Backend\Models\User as BackendUser;

public function boot()
{
    BackendUser::extend(function($model) {

        $model->addDynamicMethod('hasRole', function($role) use ($model) {
            return $model->groups()->whereName($role)->exists();
        });

        $model->addDynamicMethod('isAdmin', function() use ($model) {
            return $model->hasRole('administrators');
        });

    }
}

我认为在执行
permissions部分之前,首先应该尝试理解错误

公共函数组($group)

对字符串调用成员函数getKey()

您是否查看了
inGroup()
函数的作用?此方法不希望字符串作为参数

以下是完整的函数:

 /**
 * See if the user is in the given group.
 * @param Group $group
 * @return bool
 */
public function inGroup($group)
{
    foreach ($this->getGroups() as $_group) {
        if ($_group->getKey() == $group->getKey()) <<== Call to a member function getKey() on string
        { 
            return true;
        }
    }

    return false;
}

你检查组而不是权限有什么原因吗?@dragontree在OctoberCMS中我创建了具有一组权限的后端用户组。我向管理员或版主添加一个用户,然后在php中检查当前用户的组以允许访问某个功能。我应该换一种方式吗?您应该使用
hasAccess
hasapermission()
函数来实现这一点。这里有文档记录:我正在使用我制作的自定义组件上的身份验证组,我不确定我是否知道如何设置该组件的权限。
registerPermissions()
函数示例在文档的同一页上给出。在您注册这样的权限后,它们将显示在“后端组”页面中,然后您可以在其中添加或从组或用户中删除。我认为这可能会起作用,我正在做一些测试,我会很快回复您。这可以用于检测组。下一步我要做权限,谢谢。
 /**
 * See if the user is in the given group.
 * @param Group $group
 * @return bool
 */
public function inGroup($group)
{
    foreach ($this->getGroups() as $_group) {
        if ($_group->getKey() == $group->getKey()) <<== Call to a member function getKey() on string
        { 
            return true;
        }
    }

    return false;
}
(new User)->someMethod()