From 22064c61788d4ceb503afaaa008ed9175ec474cc Mon Sep 17 00:00:00 2001 From: wuyanwen Date: Wed, 11 Dec 2019 20:59:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permissions/PermissionsMiddleware.php | 1 + .../permissions/view/permissions/create.html | 26 + .../permissions/view/permissions/edit.html | 25 + .../permissions/view/permissions/index.html | 178 +++++ catchAdmin/permissions/view/roles/edit.html | 10 + catchAdmin/user/controller/User.php | 40 +- catchAdmin/user/model/Users.php | 8 +- catchAdmin/user/request/CreateRequest.php | 4 +- catchAdmin/user/request/UpdateRequest.php | 4 +- catchAdmin/user/route.php | 1 + catchAdmin/user/validate/CreateValidate.php | 17 - catchAdmin/user/validate/UpdateValidate.php | 18 - catchAdmin/user/view/create.html | 22 +- catchAdmin/user/view/edit.html | 18 +- extend/catcher/Tree.php | 1 + ...BaseController.php => CatchController.php} | 0 .../base/{BaseModel.php => CatchModel.php} | 0 .../{BaseRequest.php => CatchRequest.php} | 0 .../{BaseValidate.php => CatchValidate.php} | 0 extend/catcher/exceptions/FailedException.php | 1 + .../assets/module/authtree/authtree.js | 731 ++++++++++++++++++ .../tree_themes/auth-skin-default.css | 108 +++ .../tree_themes/auth-skin-universal.css | 127 +++ .../module/authtree/tree_themes/template.css | 16 + .../assets/module/treetable-lay/treetable.css | 18 - .../assets/module/treetable-lay/treetable.js | 206 ----- 26 files changed, 1306 insertions(+), 274 deletions(-) create mode 100644 catchAdmin/permissions/PermissionsMiddleware.php create mode 100644 catchAdmin/permissions/view/permissions/create.html create mode 100644 catchAdmin/permissions/view/permissions/edit.html create mode 100644 catchAdmin/permissions/view/permissions/index.html create mode 100644 catchAdmin/permissions/view/roles/edit.html delete mode 100644 catchAdmin/user/validate/CreateValidate.php delete mode 100644 catchAdmin/user/validate/UpdateValidate.php create mode 100644 extend/catcher/Tree.php rename extend/catcher/base/{BaseController.php => CatchController.php} (100%) rename extend/catcher/base/{BaseModel.php => CatchModel.php} (100%) rename extend/catcher/base/{BaseRequest.php => CatchRequest.php} (100%) rename extend/catcher/base/{BaseValidate.php => CatchValidate.php} (100%) create mode 100644 extend/catcher/exceptions/FailedException.php create mode 100755 public/catch-admin/assets/module/authtree/authtree.js create mode 100755 public/catch-admin/assets/module/authtree/tree_themes/auth-skin-default.css create mode 100755 public/catch-admin/assets/module/authtree/tree_themes/auth-skin-universal.css create mode 100755 public/catch-admin/assets/module/authtree/tree_themes/template.css delete mode 100755 public/catch-admin/assets/module/treetable-lay/treetable.css delete mode 100755 public/catch-admin/assets/module/treetable-lay/treetable.js diff --git a/catchAdmin/permissions/PermissionsMiddleware.php b/catchAdmin/permissions/PermissionsMiddleware.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/catchAdmin/permissions/PermissionsMiddleware.php @@ -0,0 +1 @@ + + layui.use(['layer', 'form', 'admin', 'formX'], function () { + var $ = layui.jquery; + var layer = layui.layer; + var form = layui.form; + var admin = layui.admin; + var mUser = admin.getLayerData('#role'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可 + // 回显数据 + form.val('role', mUser); + // 表单提交事件 + form.on('submit(submitRole)', function (data) { + admin.req('{:url("role")}', data.field, function (response) { + layer.closeAll('loading'); + if (response.code === 10000) { + layer.msg(response.msg, {icon: 1}); + admin.putLayerData('formOk', true, '#role'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可 + admin.closeDialog('#role'); // 关闭页面层弹窗 + } else { + layer.msg(response.msg, {icon: 2}); + } + }, 'post'); + return false; + }); + }); + \ No newline at end of file diff --git a/catchAdmin/permissions/view/permissions/edit.html b/catchAdmin/permissions/view/permissions/edit.html new file mode 100644 index 0000000..d8669bc --- /dev/null +++ b/catchAdmin/permissions/view/permissions/edit.html @@ -0,0 +1,25 @@ +{$form|raw} + \ No newline at end of file diff --git a/catchAdmin/permissions/view/permissions/index.html b/catchAdmin/permissions/view/permissions/index.html new file mode 100644 index 0000000..938e029 --- /dev/null +++ b/catchAdmin/permissions/view/permissions/index.html @@ -0,0 +1,178 @@ +{extend name="../../../view/layout"} +{block name="title"}角色管理{/block} +{block name="search"} +
+
+ + + +
+
+{/block} +{block name="table"} +
+ + +{/block} +{block name="script"} + +{/block} \ No newline at end of file diff --git a/catchAdmin/permissions/view/roles/edit.html b/catchAdmin/permissions/view/roles/edit.html new file mode 100644 index 0000000..566549b --- /dev/null +++ b/catchAdmin/permissions/view/roles/edit.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file diff --git a/catchAdmin/user/controller/User.php b/catchAdmin/user/controller/User.php index 0f570ca..6fe2b42 100644 --- a/catchAdmin/user/controller/User.php +++ b/catchAdmin/user/controller/User.php @@ -2,14 +2,16 @@ namespace catchAdmin\user\controller; use app\Request; +use catchAdmin\permissions\model\Roles; use catchAdmin\user\model\Users; use catchAdmin\user\request\CreateRequest; use catchAdmin\user\request\UpdateRequest; -use catcher\base\BaseController; +use catcher\base\CatchController; use catcher\CatchForm; use catcher\CatchResponse; +use catcher\Tree; -class User extends BaseController +class User extends CatchController { protected $user; @@ -49,6 +51,7 @@ class User extends BaseController $form->text('email', '邮箱')->verify('email')->placeholder('请输入邮箱'); $form->password('password', '密码')->id('pwd')->verify('required|psw')->placeholder('请输入密码'); $form->password('passwordConfirm', '确认密码')->verify('required|equalTo', ['pwd', '两次密码输入不一致'])->placeholder('请再次输入密码'); + $form->dom('
', '角色'); $form->formBtn('submitUser'); return $this->fetch([ @@ -64,7 +67,12 @@ class User extends BaseController */ public function save(CreateRequest $request) { - return CatchResponse::success($this->user->storeBy($request->post())); + $uid = $this->user->storeBy($request->post()); + + if (!empty($request->param('roleids'))) { + $this->user->attach($request->param('roleids')); + } + return CatchResponse::success(); } /** @@ -88,6 +96,7 @@ class User extends BaseController $form->text('email', '邮箱')->verify('email')->default($user->email)->placeholder('请输入邮箱'); $form->password('password', '密码')->id('pwd')->placeholder('请输入密码'); $form->password('passwordConfirm', '确认密码')->verify('equalTo', ['pwd', '两次密码输入不一致'])->placeholder('请再次输入密码'); + $form->dom('
', '角色'); $form->formBtn('submitUser'); return $this->fetch([ @@ -152,4 +161,29 @@ class User extends BaseController return CatchResponse::success($this->user->recover($id)); } + + /** + * + * @time 2019年12月11日 + * @param Request $request + * @param Roles $roles + * @return \think\response\Json + */ + public function getRoles(Request $request, Roles $roles): \think\response\Json + { + $roles = Tree::done($roles->getList()); + + $roleIds = []; + if ($request->param('uid')) { + $userHasRoles = $this->user->findBy($request->param('uid'))->getRoles(); + foreach ($userHasRoles as $role) { + $roleIds[] = $role->pivot->role_id; + } + } + + return CatchResponse::success([ + 'roles' => $roles, + 'hasRoles' => $roleIds, + ]); + } } \ No newline at end of file diff --git a/catchAdmin/user/model/Users.php b/catchAdmin/user/model/Users.php index db2b8f0..1d6b3d7 100644 --- a/catchAdmin/user/model/Users.php +++ b/catchAdmin/user/model/Users.php @@ -2,9 +2,9 @@ namespace catchAdmin\user\model; use catchAdmin\permissions\model\HasRolesTrait; -use catcher\base\BaseModel; +use catcher\base\CatchModel; -class Users extends BaseModel +class Users extends CatchModel { use HasRolesTrait; @@ -46,7 +46,9 @@ class Users extends BaseModel */ public function getList($search): \think\Paginator { - return (($search['trash'] ?? false) ? static::onlyTrashed() : $this)->when($search['username'] ?? false, function ($query) use ($search){ + return (($search['trash'] ?? false) ? static::onlyTrashed() : $this) + ->field(['id', 'username', 'email', 'status','last_login_time','last_login_ip', 'created_at', 'updated_at']) + ->when($search['username'] ?? false, function ($query) use ($search){ return $query->whereLike('username', $search['username']); }) ->when($search['email'] ?? false, function ($query) use ($search){ diff --git a/catchAdmin/user/request/CreateRequest.php b/catchAdmin/user/request/CreateRequest.php index 89b6f7a..23abb95 100644 --- a/catchAdmin/user/request/CreateRequest.php +++ b/catchAdmin/user/request/CreateRequest.php @@ -2,9 +2,9 @@ namespace catchAdmin\user\request; use catchAdmin\user\model\Users; -use catcher\base\BaseRequest; +use catcher\base\CatchRequest; -class CreateRequest extends BaseRequest +class CreateRequest extends CatchRequest { protected function rules(): array diff --git a/catchAdmin/user/request/UpdateRequest.php b/catchAdmin/user/request/UpdateRequest.php index 992720e..b82758b 100644 --- a/catchAdmin/user/request/UpdateRequest.php +++ b/catchAdmin/user/request/UpdateRequest.php @@ -2,9 +2,9 @@ namespace catchAdmin\user\request; use catchAdmin\user\model\Users; -use catcher\base\BaseRequest; +use catcher\base\CatchRequest; -class UpdateRequest extends BaseRequest +class UpdateRequest extends CatchRequest { protected function rules(): array { diff --git a/catchAdmin/user/route.php b/catchAdmin/user/route.php index 0dc963b..cf9137a 100644 --- a/catchAdmin/user/route.php +++ b/catchAdmin/user/route.php @@ -6,3 +6,4 @@ $router->get('users', '\catchAdmin\user\controller\User/list'); // 切换状态 $router->put('user/switch/status/', '\catchAdmin\user\controller\User/switchStatus'); $router->put('user/recover/', '\catchAdmin\user\controller\User/recover'); +$router->get('user/get/roles', '\catchAdmin\user\controller\User/getRoles'); diff --git a/catchAdmin/user/validate/CreateValidate.php b/catchAdmin/user/validate/CreateValidate.php deleted file mode 100644 index 59b1666..0000000 --- a/catchAdmin/user/validate/CreateValidate.php +++ /dev/null @@ -1,17 +0,0 @@ - 'require|max:20', - 'password|密码' => 'require|max:20', - 'email|邮箱' => 'require|email' - ]; - } -} diff --git a/catchAdmin/user/validate/UpdateValidate.php b/catchAdmin/user/validate/UpdateValidate.php deleted file mode 100644 index c7b7d78..0000000 --- a/catchAdmin/user/validate/UpdateValidate.php +++ /dev/null @@ -1,18 +0,0 @@ - 'require|max:20', - 'password|密码' => 'require|max:20', - 'email|邮箱' => 'require|email|unique:'.Users::class.',email,'.request()->route('user').',id', - ]; - } -} diff --git a/catchAdmin/user/view/create.html b/catchAdmin/user/view/create.html index 0f2bdb1..a0a6480 100644 --- a/catchAdmin/user/view/create.html +++ b/catchAdmin/user/view/create.html @@ -1,28 +1,42 @@ {$form|raw} \ No newline at end of file diff --git a/catchAdmin/user/view/edit.html b/catchAdmin/user/view/edit.html index c709ea9..1aafbe0 100644 --- a/catchAdmin/user/view/edit.html +++ b/catchAdmin/user/view/edit.html @@ -1,14 +1,30 @@ {$form|raw}