diff --git a/app/Http/Controllers/API/AuthController.php b/app/Http/Controllers/API/AuthController.php new file mode 100644 index 0000000..a038d97 --- /dev/null +++ b/app/Http/Controllers/API/AuthController.php @@ -0,0 +1,61 @@ +all(), [ + 'name' => 'required', + 'email' => 'required|email|unique:users', + 'password' => 'required', + ]); + + if ($validator->fails()) { + return response()->json($validator->errors(), 422); + } + + $user = User::create([ + 'name' => $request->name, + 'email' => $request->email, + 'password' => bcrypt($request->password), + ]); + + $token = $user->createToken('auth_token')->plainTextToken; + + return response()->json([ + 'user' => $user, + 'token' => $token, + ]); + } + + public function login(Request $request) + { + if (!Auth::attempt($request->only('email', 'password'))) { + return response()->json(['message' => 'Invalid login details'], 401); + } + + $user = User::where('email', $request['email'])->firstOrFail(); + + $token = $user->createToken('auth_token')->plainTextToken; + + return response()->json([ + 'user' => $user, + 'token' => $token, + ]); + } + + public function logout(Request $request) + { + $request->user()->currentAccessToken()->delete(); + + return response()->json(['message' => 'Logged out']); + } +} diff --git a/resources/App.vue b/resources/App.vue index 6a87148..d3ae563 100644 --- a/resources/App.vue +++ b/resources/App.vue @@ -31,8 +31,9 @@ :class="menuOpen ? 'mt-2 mb-2 pa-2' : 'mt-10 mb-3 pa-5'" >