UserController.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. * @return Response
  17. */
  18. public function index(Request $request)
  19. {
  20. return User::paginate($request->query('per_page') ?? 50);
  21. }
  22. /**
  23. * Display the specified resource.
  24. *
  25. * @param int $id
  26. * @return User
  27. */
  28. public function show(int $id)
  29. {
  30. $discordUser = DiscordUser::find($id);
  31. return $discordUser ? $discordUser->user : User::findOrFail($id);
  32. }
  33. /**
  34. * Update the specified resource in storage.
  35. *
  36. * @param Request $request
  37. * @param int $id
  38. * @return User
  39. */
  40. public function update(Request $request, int $id)
  41. {
  42. $discordUser = DiscordUser::find($id);
  43. $user = $discordUser ? $discordUser->user : User::findOrFail($id);
  44. $request->validate([
  45. "name" => "sometimes|string|min:4|max:30",
  46. "email" => "sometimes|string|email",
  47. "credits" => "sometimes|numeric|min:0|max:1000000",
  48. "server_limit" => "sometimes|numeric|min:0|max:1000000",
  49. "role" => ['sometimes', Rule::in(['admin', 'mod', 'client', 'member'])],
  50. ]);
  51. $user->update($request->all());
  52. return $user;
  53. }
  54. /**
  55. * Remove the specified resource from storage.
  56. *
  57. * @param int $id
  58. * @return Application|ResponseFactory|Response|void
  59. */
  60. public function destroy(int $id)
  61. {
  62. $discordUser = DiscordUser::find($id);
  63. $user = $discordUser ? $discordUser->user : User::findOrFail($id);
  64. $user->delete();
  65. return response($user, 200);
  66. }
  67. }