Skip to content

Commit 2d26577

Browse files
committed
fix(control): 获取用户与角色功能完成
1 parent 2890203 commit 2d26577

File tree

5 files changed

+97
-16
lines changed

5 files changed

+97
-16
lines changed

laravel/app/Http/Controllers/Api/RoleController.php

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,14 @@ public function edit($id)
115115
* @param int $id
116116
* @return \Illuminate\Http\Response
117117
*/
118-
public function update(Update $request)
118+
public function update(Update $request, $id)
119119
{
120-
$id = 3;
121120
$role = Role::findOrFail($id); // 通过给定id获取角色
122121
// 验证 name 和 permission 字段
123-
$this->validate($request, [
124-
'name' => 'required|max:10|unique:roles,name,'.$id,
125-
'permissions' => 'required',
126-
]);
122+
// $this->validate($request, [
123+
// 'name' => 'required|max:10|unique:roles,name,'.$id,
124+
// 'permissions' => 'required',
125+
// ]);
127126

128127
$input = $request->only(['name']);
129128
$permissions = $request['checkedPermissions'];

laravel/app/Http/Controllers/Api/UserController.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
namespace App\Http\Controllers\Api;
44

55
use App\Http\Repository\UserRepository;
6-
use App\Http\Requests\StoreUserRequest;
6+
use App\Http\Requests\User\Store;
7+
use App\Http\Requests\User\Update;
78
use App\Role;
89
use App\User;
910
use Illuminate\Http\Request;
@@ -53,18 +54,18 @@ public function create()
5354
* Store a newly created resource in storage.
5455
* 新增入库操作
5556
*
56-
* @param StoreUserRequest $request
57+
* @param Store $request
5758
* @return \Illuminate\Http\Response
5859
*/
59-
public function store(StoreUserRequest $request)
60+
public function store(Store $request)
6061
{
6162
// 会出现 Unknown column 'guid' in 'field list' 不存在的字段入库报错问题
6263
// $rs = User::insert($request->all());
6364
$input = $request->all();
6465
$model = new User($input);
6566
if ($model->save()) {
6667

67-
$roles = $request['roles']; // 获取输入的角色字段
68+
$roles = $request['checkedRoles']; // 获取输入的角色字段
6869
// 检查是否某个角色被选中
6970
if (isset($roles)) {
7071
foreach ($roles as $role) {
@@ -114,23 +115,26 @@ public function edit($id)
114115
* Update the specified resource in storage.
115116
* 更新数据
116117
*
117-
* @param StoreUserRequest $request
118+
* @param Update $request
118119
* @param int $id
119120
*
120121
* @return \Illuminate\Http\Response
121122
*/
122-
public function update(StoreUserRequest $request, $id)
123+
public function update(Update $request, $id)
123124
{
124125
$user = User::findOrFail($id);
125126
// 新增角色操作
126127
$input = $request->only(['name', 'email', 'password']); // 获取 name, email 和 password 字段
127-
$roles = $request['roles']; // 获取所有角色
128+
if (empty($input['password'])) {
129+
unset($input['password']);
130+
}
131+
$roles = $request['checkedRoles']; // 获取所有角色
128132

129133
if ($user->fill($input)->save()) {
130134
if (isset($roles)) {
131135
$user->roles()->sync($roles); // 如果有角色选中与用户关联则更新用户角色
132136
} else {
133-
$user->roles()->detach(); // 如果没有选择任何与用户关联的角色则将之前关联角色解除
137+
$user->roles()->detach(\Auth::id()); // 如果没有选择任何与用户关联的角色则将之前关联角色解除
134138
}
135139

136140
return $this->out(200, ['data' => ['id' => $id]]);

laravel/app/Http/Requests/StoreUserRequest.php renamed to laravel/app/Http/Requests/User/Store.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<?php
22

3-
namespace App\Http\Requests;
3+
namespace App\Http\Requests\User;
44

55
use Illuminate\Foundation\Http\FormRequest;
66

7-
class StoreUserRequest extends FormRequest
7+
class Store extends FormRequest
88
{
99
/**
1010
* Determine if the user is authorized to make this request.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
namespace App\Http\Requests\User;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class Update extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*
12+
* @return bool
13+
*/
14+
public function authorize()
15+
{
16+
return true;
17+
}
18+
19+
/**
20+
* 获取适用于请求的验证规则
21+
*
22+
* @return array
23+
*/
24+
public function rules()
25+
{
26+
return [
27+
'name' => 'required|between:5,80',
28+
'email' => 'email|max:255',
29+
'password' => 'max:80',
30+
];
31+
}
32+
33+
/**
34+
* 中文错误提示
35+
*
36+
* @return array
37+
*/
38+
public function messages()
39+
{
40+
return [
41+
'name.required' => '名称不能为空',
42+
'name.between' => '名称输入有误',
43+
'email.email' => '邮箱格式有误',
44+
'email.max' => 'cid 输入有误',
45+
'password.between' => '密码输入有误',
46+
];
47+
}
48+
}

laravel/app/Role.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,34 @@ public function revokePermissionTo($permission)
3232
{
3333
return $this->permissions()->delete($permission);
3434
}
35+
36+
/**
37+
* 用户增加角色
38+
*
39+
* @param $roles
40+
*
41+
* @return bool
42+
*/
43+
public function sync($roles)
44+
{
45+
$flag = true;
46+
foreach ($roles as $role) {
47+
if ($this->save($role)) {
48+
$flag = false;
49+
}
50+
}
51+
return $flag;
52+
}
53+
54+
/**
55+
* 用户删除角色
56+
*
57+
* @param $user_id
58+
*
59+
* @return mixed
60+
*/
61+
public function detach($user_id)
62+
{
63+
return $this->where('user_id', $user_id)->delete();
64+
}
3565
}

0 commit comments

Comments
 (0)