From 2fb367d876e90d94da14e304fcb00fdd7473c34a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AE=A1=E5=AE=9C=E5=B0=A7?= Date: Fri, 22 Mar 2019 14:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=B8=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=88=86=E9=85=8D=E7=94=A8=E6=88=B7=E7=BB=84=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E7=AE=80=E5=8C=96=E6=96=B0=E5=91=98=E5=B7=A5?= =?UTF-8?q?=E5=85=A5=E8=81=8C=E6=97=B6=EF=BC=8C=E6=9D=83=E9=99=90=E5=88=86?= =?UTF-8?q?=E9=85=8D=E7=9A=84=E5=B7=A5=E4=BD=9C=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/GroupController.php | 6 +- app/Http/Controllers/UserController.php | 52 ++++- readme.md | 2 +- resources/views/user/user.blade.php | 283 ++++++++++++++--------- routes/web.php | 1 + 5 files changed, 225 insertions(+), 119 deletions(-) diff --git a/app/Http/Controllers/GroupController.php b/app/Http/Controllers/GroupController.php index b2c51ecd..92aaa1e0 100644 --- a/app/Http/Controllers/GroupController.php +++ b/app/Http/Controllers/GroupController.php @@ -116,7 +116,11 @@ public function removeUser(Request $request, $id, $user_id) $this->alertSuccess(__('common.operation_success')); - return redirect(wzRoute('admin:groups:view', ['id' => $id, 'tab' => 'member'])); + $origin = $request->input('origin', 'admin:groups:view'); + $originTab = $request->input('origin_tab', 'member'); + $originId = $request->input('origin_id', null); + + return redirect(wzRoute($origin, ['id' => $originId ?? $id, 'tab' => $originTab])); } /** diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index d6e842ee..7f0b1a58 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -11,6 +11,7 @@ use App\Exceptions\ValidationException; use App\Http\Controllers\Auth\UserActivateChannel; +use App\Repositories\Group; use App\Repositories\User; use Illuminate\Http\Request; @@ -36,15 +37,25 @@ public function users(Request $request) /** * 用户信息查看 * - * @param int $id + * @param Request $request + * @param $id * * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function user($id) + public function user(Request $request, $id) { + /** @var User $user */ + $user = User::where('id', $id)->firstOrFail(); + $subQuery = function ($query) use ($user) { + $query->where('user_id', $user->id); + }; + $groupForSelect = Group::whereDoesntHave('users', $subQuery)->get(); + return view('user.user', [ - 'user' => User::where('id', $id)->firstOrFail(), - 'op' => 'users', + 'user' => $user, + 'op' => 'users', + 'group_for_select' => $groupForSelect, + 'tab' => $request->input('tab'), ]); } @@ -57,9 +68,10 @@ public function user($id) */ public function basic(Request $request) { + $user = \Auth::user(); return view('user.basic', [ 'op' => 'basic', - 'user' => \Auth::user(), + 'user' => $user, ]); } @@ -245,4 +257,34 @@ public function sendActivateEmail(Request $request) return redirect()->back(); } + + /** + * 用户批量加入用户组 + * + * @param Request $request + * @param $id + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function joinGroup(Request $request, $id) + { + $this->validate( + $request, + [ + 'groups' => 'required|array', + ], + [ + 'groups.required' => '您没有选择要加入的用户组', + ] + ); + + $groups = $request->input('groups'); + + $user = User::where('id', $id)->firstOrFail(); + $user->groups()->attach($groups); + + $this->alertSuccess(__('common.operation_success')); + + return redirect(wzRoute('admin:user', ['id' => $id, 'tab' => 'user-group'])); + } } \ No newline at end of file diff --git a/readme.md b/readme.md index 754213a3..df8e8e68 100644 --- a/readme.md +++ b/readme.md @@ -149,7 +149,7 @@ Wizard是基于Laravel开发框架开发的一款开源项目(API)文档管 * [x] 用户分组管理 * [x] 管理员管理分组 * [x] 分组基础数据结构支持 - * [ ] **用户管理页面,增加为用户分配用户组的功能,简化新员工入职时,权限分配的工作量** + * [x] 用户管理页面,增加为用户分配用户组的功能,简化新员工入职时,权限分配的工作量 * [ ] **LDAP支持** * [ ] 统计信息查看 * [x] 用户数量统计 diff --git a/resources/views/user/user.blade.php b/resources/views/user/user.blade.php index 626bbb0b..44156575 100644 --- a/resources/views/user/user.blade.php +++ b/resources/views/user/user.blade.php @@ -10,138 +10,197 @@ @endsection @section('admin-content') -
-
编辑用户信息
-
- @if($user->id == Auth::user()->id) - - @endif -
- {{ csrf_field() }} -
- - -
-
- - id == Auth::user()->id ? 'readonly':'' }}> -
+ +
+
+
+
+ @if($user->id == Auth::user()->id) + + @endif -
- -
- - + + {{ csrf_field() }} +
+ + +
+
+ + id == Auth::user()->id ? 'readonly':'' }}> +
- @if($user->id == 1) - - @endif -
-
+
+ +
+ + -
- - -
+ @if($user->id == 1) + + @endif +
+
-
- - 返回 +
+ + +
+ +
+ + 返回 +
+
- +
-
-
-
已加入的用户组
- - - - - - - - - - - @forelse($user->groups()->withCount('projects')->get() as $group) +
+ +
+
加入用户组
+
+
+ {{ csrf_field() }} +
+ +
+ +
+ +
+ +
+
+ +
+
已加入的用户组
+
#用户组名称项目数操作
+ - - - - + + + + - @empty + + + @forelse($user->groups()->withCount('projects')->get() as $group) + + + + + + + @empty + + + + @endforelse + +
{{ $group->id }}{{ $group->name }}{{ $group->projects_count }} -
- {{ method_field('DELETE') }}{{ csrf_field() }} -
- - remove_circle_outline - -
#用户组名称项目数操作
{{ $group->id }}{{ $group->name }}{{ $group->projects_count }} +
+ {{ method_field('DELETE') }}{{ csrf_field() }} +
+ + remove_circle_outline + +
没有符合条件的信息!
+
+
+
+
+
创建的项目
+ + - + + + + - @endforelse - -
没有符合条件的信息!#项目名称文档数创建时间
-
- -
-
创建的项目
- - - - - - - - - - - @forelse($user->projects()->with('catalog')->withCount('pages')->get() as $proj) - - - - - - - @empty - - - - @endforelse - -
#项目名称文档数创建时间
{{ $proj->id }} - {{ $proj->name }} - @if(!empty($proj->catalog_id)) - #{{ $proj->catalog->name ?? '' }} - @endif - {{ $proj->pages_count }}{{ $proj->created_at }}
没有符合条件的信息!
+ + + @forelse($user->projects()->with('catalog')->withCount('pages')->get() as $proj) + + {{ $proj->id }} + + {{ $proj->name }} + @if(!empty($proj->catalog_id)) + #{{ $proj->catalog->name ?? '' }} + @endif + + {{ $proj->pages_count }} + {{ $proj->created_at }} + + @empty + + 没有符合条件的信息! + + @endforelse + + +
+
@endsection +@push('stylesheet') + + +@endpush + @push('script') - + @endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index cdb5d5c0..0586e887 100644 --- a/routes/web.php +++ b/routes/web.php @@ -80,6 +80,7 @@ Route::get('/users', 'UserController@users')->name('users'); Route::get('/users/{id}', 'UserController@user')->name('user'); Route::post('/users/{id}', 'UserController@updateUser')->name('user:update'); + Route::post('/users/{id}/groups', 'UserController@joinGroup')->name('user:join-group'); // 项目目录管理 Route::get('/catalogs', 'CatalogController@catalogs')->name('catalogs');