UserController.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Http\Controllers\API;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\API\User\BatchCreateRequest;
  5. use App\Http\Requests\API\User\CreateOrUpdateRequest;
  6. use App\Http\Resources\API\UserInfoResource;
  7. use App\Models\Enums\RequirementStatus;
  8. use App\Models\Role;
  9. use App\Models\User;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\Support\Facades\DB;
  13. use Illuminate\Support\Facades\Hash;
  14. class UserController extends Controller
  15. {
  16. public function info()
  17. {
  18. $user = Auth::user();
  19. return new UserInfoResource($user);
  20. }
  21. public function assignRole(Request $request, string $id)
  22. {
  23. $user = User::query()->findOrFail($id);
  24. $roleName = $request->get('role_name');
  25. if ($roleName) {
  26. $role = Role::query()->where("guard_name", "api")->where('name', $roleName)->firstOrFail();
  27. $user->role_id = $role->id;
  28. $user->save();
  29. }
  30. $roles = $roleName ? [$roleName] : [];
  31. $user->syncRoles($roles);
  32. return $this->noContent();
  33. }
  34. public function index(){
  35. $user = User::all();
  36. return UserInfoResource::collection($user);
  37. }
  38. /**
  39. * add a new User
  40. * @return \Illuminate\Http\Response
  41. */
  42. public function store(CreateOrUpdateRequest $request){
  43. $password = Hash::make($request->password);
  44. $user=$request->all();
  45. $user['password']=$password;
  46. User::create([
  47. ...$user,
  48. 'created_by' => Auth::id(),
  49. ]);
  50. // TODO:发送邮箱给目标用户
  51. return $this->created();
  52. }
  53. /**
  54. * batchCreate User,为ditto时参考上一条
  55. * @return \Illuminate\Http\Response
  56. */
  57. public function batchStore(BatchCreateRequest $request){
  58. $userData = $request->all();
  59. DB::transaction(function () use ($userData) {
  60. foreach ($userData as $k => $data) {
  61. $user = new User();
  62. if ($k != 0) {
  63. $userData[$k]["department_id"] = $userData[$k]["department_id"] == 'ditto' ? $userData[$k - 1]["department_id"] : $userData[$k]["department_id"];
  64. $userData[$k]["role_id"] = $userData[$k]["role_id"] == 'ditto' ? $userData[$k - 1]["role_id"] : $userData[$k]["role_id"];
  65. }
  66. $userData[$k]['password'] = Hash::make($userData[$k]['password']);
  67. $user->fill([
  68. ...$userData[$k],
  69. 'created_by' => Auth::id(),
  70. ]);
  71. // TODO:发送邮箱给目标用户
  72. $user->save();
  73. }
  74. });
  75. // TODO:发送邮箱给目标用户
  76. return $this->created();
  77. }
  78. public function destroy(string $id)
  79. {
  80. }
  81. public function show(string $id)
  82. {
  83. }
  84. public function update(CreateOrUpdateRequest $request, string $id)
  85. {
  86. }
  87. }