V1Controller.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace App\Http\Controllers\Api\Client;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Validator;
  6. class V1Controller extends Controller
  7. {
  8. public function __construct()
  9. {
  10. $this->middleware('auth:api', ['except' => ['login', 'register']]);
  11. auth()->shouldUse('api');
  12. }
  13. public function login(Request $request)
  14. {
  15. $validator = Validator::make($request->all(), [
  16. 'email' => 'required|email',
  17. 'password' => 'required|string|min:6',
  18. ]);
  19. if ($validator->fails()) {
  20. return response()->json($validator->errors(), 422);
  21. }
  22. if (! $token = auth()->attempt($validator->validated())) {
  23. return response()->json(['error' => 'Unauthorized'], 401);
  24. }
  25. return $this->createNewToken($token);
  26. }
  27. public function register(Request $request)
  28. {
  29. $validator = Validator::make($request->all(), [
  30. 'name' => 'required|string|between:2,100',
  31. 'email' => 'required|string|email|max:100|unique:users',
  32. 'password' => 'required|string|confirmed|min:6',
  33. ]);
  34. if ($validator->fails()) {
  35. return response()->json($validator->errors()->toJson(), 400);
  36. }
  37. $user = User::create(array_merge(
  38. $validator->validated(),
  39. ['password' => $request->password]
  40. ));
  41. return response()->json([
  42. 'message' => 'User successfully registered',
  43. 'user' => $user,
  44. ], 201);
  45. }
  46. public function logout()
  47. {
  48. auth()->logout();
  49. return response()->json(['message' => 'User successfully signed out']);
  50. }
  51. public function refresh()
  52. {
  53. return $this->createNewToken(auth()->refresh());
  54. }
  55. public function userProfile()
  56. {
  57. return response()->json(auth()->user());
  58. }
  59. public function nodeList()
  60. {
  61. return response()->json(auth()->user()->userAccessNodes());
  62. }
  63. protected function createNewToken($token)
  64. {
  65. return response()->json([
  66. 'access_token' => $token,
  67. 'token_type' => 'bearer',
  68. 'expires_in' => auth()->factory()->getTTL() * 60,
  69. 'user' => auth()->user(),
  70. ]);
  71. }
  72. }