UserController.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\DiscordUser;
  5. use App\Models\User;
  6. use Illuminate\Contracts\Foundation\Application;
  7. use Illuminate\Contracts\Routing\ResponseFactory;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Http\Response;
  10. use Illuminate\Validation\Rule;
  11. class UserController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @param Request $request
  17. * @return Response
  18. */
  19. public function index(Request $request)
  20. {
  21. return User::paginate($request->query('per_page') ?? 50);
  22. }
  23. /**
  24. * Display the specified resource.
  25. *
  26. * @param int $id
  27. * @return User
  28. */
  29. public function show(int $id)
  30. {
  31. $discordUser = DiscordUser::find($id);
  32. return $discordUser ? $discordUser->user : User::findOrFail($id);
  33. }
  34. /**
  35. * Update the specified resource in storage.
  36. *
  37. * @param Request $request
  38. * @param int $id
  39. * @return User
  40. */
  41. public function update(Request $request, int $id)
  42. {
  43. $discordUser = DiscordUser::find($id);
  44. $user = $discordUser ? $discordUser->user : User::findOrFail($id);
  45. $request->validate([
  46. "name" => "sometimes|string|min:4|max:30",
  47. "email" => "sometimes|string|email",
  48. "credits" => "sometimes|numeric|min:0|max:1000000",
  49. "server_limit" => "sometimes|numeric|min:0|max:1000000",
  50. "role" => ['sometimes', Rule::in(['admin', 'mod', 'client', 'member'])],
  51. ]);
  52. $user->update($request->all());
  53. return $user;
  54. }
  55. /**
  56. * Remove the specified resource from storage.
  57. *
  58. * @param int $id
  59. * @return Application|ResponseFactory|Response|void
  60. */
  61. public function destroy(int $id)
  62. {
  63. $discordUser = DiscordUser::find($id);
  64. $user = $discordUser ? $discordUser->user : User::findOrFail($id);
  65. $user->delete();
  66. return response($user, 200);
  67. }
  68. }