Я пытаюсь обернуть голову вокруг разрешений и массивов в 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%, как исправить это ...
Таким образом, было бы полезно проанализировать управление массивами и разрешения на блокировку. Пока я буду стараться.
Заранее благодарен!