Skip to content

Commit 10d5fb6

Browse files
committed
Develop Authenticaion
1 parent 5343223 commit 10d5fb6

File tree

2 files changed

+104
-3
lines changed

2 files changed

+104
-3
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\API;
4+
5+
use App\Http\Controllers\Controller;
6+
use App\Models\User;
7+
use Illuminate\Http\Request;
8+
use Illuminate\Support\Facades\Hash;
9+
use Illuminate\Validation\ValidationException;
10+
11+
class AuthenticationController extends Controller
12+
{
13+
14+
public function register(Request $request)
15+
{
16+
try {
17+
// Validate request
18+
$validatedData = $request->validate([
19+
'name' => 'required',
20+
'email' => 'required|email|unique:users',
21+
'password' => 'required|min:8'
22+
]);
23+
24+
// Create user
25+
User::create([
26+
'name' => $validatedData['name'],
27+
'email' => $validatedData['email'],
28+
'password' => Hash::make($validatedData['password'])
29+
]);
30+
31+
// Return response
32+
return response()->json([
33+
'message' => 'User registered successfully'
34+
], 201);
35+
36+
} catch (ValidationException $e) {
37+
// Validation errors
38+
return response()->json([
39+
'message' => 'Validation failed, please check your input',
40+
'errors' => $e->errors()
41+
], 422);
42+
43+
} catch (\Exception $e) {
44+
return response()->json([
45+
'message' => 'An error occurred during registration, try again later',
46+
'error' => $e->getMessage()
47+
], 500);
48+
}
49+
}
50+
51+
52+
public function login(Request $request)
53+
{
54+
try {
55+
$request->validate([
56+
'email' => 'required|email',
57+
'password' => 'required'
58+
]);
59+
60+
$user = User::where('email', $request->email)->first();
61+
62+
if (!$user || !Hash::check($request->password, $user->password)) {
63+
return response()->json([
64+
'message' => 'Invalid Email or Password'
65+
], 401);
66+
}
67+
68+
// Create token
69+
$token = $user->createToken('API Token')->plainTextToken;
70+
71+
// Return response
72+
return response()->json([
73+
'message' => 'Login successful',
74+
'user' => $user,
75+
'token' => $token
76+
], 200);
77+
78+
79+
} catch (ValidationException $e) {
80+
return response()->json([
81+
'message' => 'Validation failed, please check your input',
82+
'errors' => $e->errors()
83+
], 422);
84+
85+
} catch (\Exception $e) {
86+
return response()->json([
87+
'message' => 'An error occurred during login, try again later',
88+
'error' => $e->getMessage()
89+
], 500);
90+
}
91+
}
92+
93+
94+
}

routes/api.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
<?php
22

3+
use App\Http\Controllers\API\AuthenticationController;
34
use Illuminate\Http\Request;
45
use Illuminate\Support\Facades\Route;
56

6-
Route::get('/user', function (Request $request) {
7-
return $request->user();
8-
})->middleware('auth:sanctum');
7+
// Route::get('/user', function (Request $request) {
8+
// return $request->user();
9+
// })->middleware('auth:sanctum');
10+
11+
Route::post('register',
12+
[AuthenticationController::class, 'register'])->name('register');
13+
14+
Route::post('/login',
15+
[AuthenticationController::class, 'login'])->name('login');

0 commit comments

Comments
 (0)