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}