Laravel / Sentry从表单中分配组权限

时间:2014-10-09 14:48:54

标签: php arrays laravel cartalyst-sentry

我正试图围绕Sentry中的权限和数组。当我对它们进行硬编码时,我让它们正常工作,这很容易,但从表格中分配它们证明是非常......至少可以说是令人沮丧。这是处理它的函数:

public function postGroup(){
    $name = Input::get('name');
    $inputs = Input::except('name');
    $permissions = array("self.view" => 1, "self.update" => 1);
    foreach($inputs as $key => $value)
    {
        $raw_name = $key;
        $name = str_replace('_', '.', $raw_name);
        array_push($permissions, array($name => 1)); // The issue is here. 
    }
...

基本上,我们现在为表格传递的每个权限都有一个$permissions数组[user.create] => 1, [user.view] => 1等。接下来,使用Sentry::createGroup我需要根据此数组设置权限。

//Create the group
        $group = Sentry::createGroup(array(
         'name'        => $name,
         'permissions' => $permissions //Doesn't work.

));

当我检查我的数据库时,我看到了:

{"self.view":1,"self.update":1,"0":1,"1":1} 

它应该是这样的:

{"self.view":1,"self.update":1,"user.create":1,"user.view":1}

所以我们可以看到self.*的工作正常,但是因为我正在调用array_push($permissions, array($name => 1));我正在使$permissions成为一个多维数组(因此我们看到"0":1在数据库中;它正在查看索引。但我不是100%确定如何解决这个问题......

因此,任何对数组处理和Sentry权限的深入了解都会有所帮助。我会继续尝试。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我是个白痴......这是一个非常简单的答案。替换:

array_push($permissions, array($name => 1)); // The issue is here.

with(我简直不敢相信这是多么简单)

$permissions[$name] = 1;

避免多维数组问题。 Le Sigh。