UserController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\User\AdminUpdateRequest;
  5. use App\Http\Requests\API\User\BatchCreateRequest;
  6. use App\Http\Requests\API\User\CreateRequest;
  7. use App\Http\Requests\API\User\UpdateRequest;
  8. use App\Http\Resources\API\UserInfoResource;
  9. use App\Models\Enums\RequirementStatus;
  10. use App\Models\Role;
  11. use App\Models\User;
  12. use Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\Auth;
  14. use Illuminate\Support\Facades\DB;
  15. use Illuminate\Support\Facades\Hash;
  16. class UserController extends Controller
  17. {
  18. public function info()
  19. {
  20. $user = Auth::user();
  21. return new UserInfoResource($user);
  22. }
  23. public function assignRole(Request $request, string $id)
  24. {
  25. $user = User::query()->findOrFail($id);
  26. $roleName = $request->get('role_name');
  27. if ($roleName) {
  28. $role = Role::query()->where("guard_name", "api")->where('name', $roleName)->firstOrFail();
  29. $user->role_id = $role->id;
  30. $user->save();
  31. }
  32. $roles = $roleName ? [$roleName] : [];
  33. $user->syncRoles($roles);
  34. return $this->noContent();
  35. }
  36. public function index(){
  37. $user = User::all();
  38. return UserInfoResource::collection($user);
  39. }
  40. /**
  41. * add a new User
  42. * @return \Illuminate\Http\Response
  43. */
  44. public function store(CreateRequest $request){
  45. $password = Hash::make($request->password);
  46. $user=$request->all();
  47. $user['password']=$password;
  48. User::create([
  49. ...$user,
  50. 'created_by' => Auth::id(),
  51. ]);
  52. // TODO:发送邮箱给目标用户
  53. return $this->created();
  54. }
  55. /**
  56. * batchCreate User,为ditto时参考上一条
  57. * @return \Illuminate\Http\Response
  58. */
  59. public function batchStore(BatchCreateRequest $request){
  60. $userData = $request->all();
  61. DB::transaction(function () use ($userData) {
  62. foreach ($userData as $k => $data) {
  63. $user = new User();
  64. if ($k != 0) {
  65. $userData[$k]["department_id"] = $userData[$k]["department_id"] == 'ditto' ? $userData[$k - 1]["department_id"] : $userData[$k]["department_id"];
  66. $userData[$k]["role_id"] = $userData[$k]["role_id"] == 'ditto' ? $userData[$k - 1]["role_id"] : $userData[$k]["role_id"];
  67. }
  68. $userData[$k]['password'] = Hash::make($userData[$k]['password']);
  69. $user->fill([
  70. ...$userData[$k],
  71. 'created_by' => Auth::id(),
  72. ]);
  73. // TODO:发送邮箱给目标用户
  74. $user->save();
  75. }
  76. });
  77. // TODO:发送邮箱给目标用户
  78. return $this->created();
  79. }
  80. /**
  81. * enable or ban users 启用或禁用用户
  82. * @param Request $request
  83. * @return \Illuminate\Http\Response
  84. */
  85. public function status(Request $request,string $status){
  86. //只能删除自己公司的;超管除外
  87. if (Auth::user()->super_admin){
  88. User::whereIn('id', $request->user_id)->update(['status' => $status]);
  89. }
  90. else{
  91. User::whereIn('id', $request->user_id)->where('company_id',Auth::user()->company_id)->update(['status' => $status]);
  92. }
  93. return $this->created();
  94. }
  95. public function destroy(string $id)
  96. {
  97. $user = User::query()->findOrFail($id);
  98. $user->delete();
  99. return $this->noContent();
  100. }
  101. public function show(string $id)
  102. {
  103. $user = User::query()->findOrFail($id);
  104. return new UserInfoResource($user);
  105. }
  106. public function update(UpdateRequest $request,string $id)
  107. {
  108. $user = User::findOrFail($id);
  109. if(Auth::user()->super_admin){
  110. $user->fill([
  111. ...$request->all()
  112. ]);
  113. $user->save();
  114. return $this->noContent();
  115. }
  116. $user->fill([
  117. ...$request->except(['role_id','department_id','company_id'])
  118. ]);
  119. $user->save();
  120. return $this->noContent();
  121. // }
  122. // /**
  123. // * @param CreateRequest $request
  124. // * @return \Illuminate\Http\Response
  125. // * 修改个人信息
  126. // */
  127. // public function updateInfo(UpdateRequest $request)
  128. // {
  129. // $user = User::findOrFail(Auth::user()->id);
  130. // $user->fill([
  131. // ...$request->except(['username','role_id','department_id','company_id'])
  132. // ]);
  133. // $user->save();
  134. // return $this->noContent();
  135. // }
  136. //
  137. // /**
  138. // * @param AdminUpdateRequest $request 修改主体
  139. // * @param string $id 用户id
  140. // * @return \Illuminate\Http\Response
  141. // * 超管修改用户的信息
  142. // */
  143. // public function updateUserInfo(AdminUpdateRequest $request, string $id)
  144. // {
  145. // $user = User::findOrFail($id);
  146. // $user->fill([
  147. // ...$request->all()
  148. // ]);
  149. // $user->save();
  150. // return $this->noContent();
  151. //
  152. // }
  153. }