Я пытаюсь обернуть голову вокруг разрешений и массивов в 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 Permissions было бы полезно. Я буду продолжать пытаться в то же время.
Заранее спасибо!
Я идиот … Это действительно простой ответ. Заменить:
array_push($permissions, array($name => 1)); // The issue is here.
с (и я не могу поверить, как это просто)
$permissions[$name] = 1;
чтобы избежать проблемы многомерного массива. Ле Вздох
Других решений пока нет …