2014-10-09 4 views
0

Я пытаюсь обернуть голову вокруг разрешений и массивов в Sentry. Я их работаю, когда я их жестко программирую, это легко, но назначение их из формы доказывает очень ... Разочарование, если не сказать больше. Вот функция, которая обрабатывает его:Laravel/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.* из них работают хорошо, но так как я call array_push($permissions, array($name => 1)); Я делаю $permissions многомерным массивом (следовательно, почему мы видим "0":1 в базе данных, он смотрит на индекс. Но я не уверен на 100%, как исправить это ...

Таким образом, было бы полезно проанализировать управление массивами и разрешения на блокировку. Пока я буду стараться.

Заранее благодарен!

ответ

1

Я идиот ... Это очень простой ответ. Заменить:

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

с (и я не могу поверить, насколько просто это)

$permissions[$name] = 1; 

избежать многомерного массива вопрос. Le Sigh.

Смежные вопросы