diff --git a/catch/permissions/model/Permissions.php b/catch/permissions/model/Permissions.php index add09a2..9e1a4f8 100644 --- a/catch/permissions/model/Permissions.php +++ b/catch/permissions/model/Permissions.php @@ -87,12 +87,18 @@ class Permissions extends CatchModel */ public static function onAfterInsert(Model $model) { + $restful = intval($model->getData('restful')); + $model = self::where('id', $model->id)->find(); if ($model && $model->parent_id) { $parent = self::where('id', $model->parent_id)->find(); + $level = $parent->level ? $parent->level . '-' . $parent->id : $parent->id; - return $model->where('id', $model->id)->update([ + + $restful && self::createRestful($model, $level); + + return $model->updateBy('id', [ 'level' => $level ]); } @@ -101,6 +107,40 @@ class Permissions extends CatchModel } + /** + * 创建 restful 菜单 + * + * @time 2021年04月20日 + * @param Model $model + * @param $level + * @return void + */ + protected static function createRestful(Model $model, $level) + { + $restful = [ + 'index' => '列表', + 'save' => '保存', + 'update' => '更新', + 'delete' => '删除', + ]; + + foreach ($restful as $k => $r) { + self::insert([ + 'parent_id' => $model->id, + 'permission_name' => $r, + 'level' => $level . '-' . $model->id, + 'module' => $model->getData('module'), + 'creator_id' => $model->getData('creator_id'), + 'permission_mark' => $model->getData('permission_mark') . '@' . $k, + 'type' => self::BTN_TYPE, + 'created_at' => time(), + 'updated_at' => time(), + 'sort' => 1, + ]); + } + } + + public function show($id) { $permission = $this->findBy($id); diff --git a/catch/permissions/tables/Role.php b/catch/permissions/tables/Role.php index 770ea79..a2ef123 100644 --- a/catch/permissions/tables/Role.php +++ b/catch/permissions/tables/Role.php @@ -15,8 +15,8 @@ class Role extends CatchTable // TODO: Implement table() method. return $this->getTable('role') ->header([ - HeaderItem::label('角色名称')->prop('role_name')->width(150), - HeaderItem::label('角色标识')->prop('identify')->width(150), + HeaderItem::label('角色名称')->prop('role_name')->width(300), + HeaderItem::label('角色标识')->prop('identify')->width(300), HeaderItem::label('角色描述')->prop('description'), HeaderItem::label('创建时间')->prop('created_at'), HeaderItem::label('操作')->width(250)->actions([ diff --git a/catch/permissions/tables/forms/Permission.php b/catch/permissions/tables/forms/Permission.php index 8e46b56..123cecc 100644 --- a/catch/permissions/tables/forms/Permission.php +++ b/catch/permissions/tables/forms/Permission.php @@ -66,7 +66,11 @@ class Permission extends Form self::radio('hidden', 'Hidden')->value(1)->options( self::options()->add('显示', 1)->add('隐藏', 2)->render() - )->col(12) + )->col(12), + + self::radio('restful', 'Restful 路由')->value(0)->options( + self::options()->add('生成', 1)->add('不生成', 0)->render() + )->col(12) ] ) ->appendControl( 2,