/** * * @param String $tag Tag name * @param String $role Role name * @param String $tagDesc Tag Description * @param String $roleDesc Role description * @param String $action Action name * @param String $actionDesc Action description * @return Action object created */ public function createAction($tag, $role = null, $action = null, $tagDesc = null, $roleDesc = null, $actionDesc = null) { if ($tag === null) { Log::debug('knock: Cannot create permission without a tag name.'); return null; } $t; $r; $a; try { $t = Tag::where('name', '=', Str::slug($tag))->firstOrFail(); } catch (ModelNotFoundException $e) { Log::debug('knock Caught exception; ' . $e->getMessage()); $t = Tag::create(['name' => Str::slug($tag), 'description' => $tagDesc === null ? $tag : $tagDesc]); $t->save(); } if ($role === null) { $role = 'default-role'; } if ($action === null) { $action = 'default-action'; } try { $r = Role::where('tag_id', '=', $t->id)->where('name', '=', Str::slug($role))->firstOrFail(); } catch (ModelNotFoundException $e) { Log::debug('knock Caught exception; ' . $e->getMessage()); $r = Role::create(['tag_id' => $t->id, 'name' => Str::slug($role), 'description' => $roleDesc === null ? $role : $roleDesc]); $t->roles()->save($r); } try { $a = Action::where('role_id', '=', $r->id)->where('name', '=', Str::slug($action))->firstOrFail(); } catch (ModelNotFoundException $e) { Log::debug('knock Caught exception; ' . $e->getMessage()); $a = Action::create(['role_id' => $r->id, 'name' => Str::slug($action), 'description' => $actionDesc === null ? $action : $actionDesc]); $r->actions()->save($a); } return $a; }