use Psecio\Gatekeeper\Gatekeeper as g;
$app->group('/permission', function () use($app, $view) {
    $app->get('/', function () use($app, $view) {
        $permissions = g::findPermissions();
        $perms = [];
        foreach ($permissions as $permission) {
            $perm = $permission->toArray();
            $perm['expired'] = $permission->isExpired();
            $perms[] = $perm;
        }
        $view->render('json.php', $perms);
    });
    $app->post('/', function () use($app, $view) {
        $post = json_decode($app->request->getBody(true));
        $data = ['result' => g::createPermission(['name' => $post->name, 'description' => $post->description])];
        $view->render('json.php', $data);
    });
    $app->group('/:id', function () use($app, $view) {
        $app->get('/', function ($id) use($app, $view) {
            $perm = is_numeric($id) ? g::findPermissionById($id) : g::findPermissionByName($id);
            $view->render('json.php', $perm->toArray());
        });
        $app->delete('/', function ($id) use($app, $view) {
            $perm = is_numeric($id) ? g::findPermissionById($id) : g::findPermissionByName($id);
            $ds = g::getDatasource();
            $ds->delete($perm);
            $view->render('json.php', $perm->toArray());
        });
        $app->get('/group', function ($id) use($app, $view) {
            $groups = g::findPermissionById($id)->groups;