Skip to content

Commit 026ea7b

Browse files
committed
API auth - login
1 parent 7d767ca commit 026ea7b

File tree

6 files changed

+206
-1
lines changed

6 files changed

+206
-1
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\API\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
7+
use App\Models\User;
8+
use Illuminate\Http\Request;
9+
use Illuminate\Support\Facades\Auth;
10+
use Illuminate\Support\Facades\Hash;
11+
use Illuminate\Validation\ValidationException;
12+
13+
class _Auth extends Controller
14+
{
15+
public function login(Request $request)
16+
{
17+
try {
18+
$request->validate([
19+
'email' => 'required|email',
20+
'password' => 'required',
21+
]);
22+
23+
$user = User::where('email', $request->email)->first();
24+
25+
if (! $user || ! Hash::check($request->password, $user->password)) {
26+
// throw ValidationException::withMessages([
27+
// 'email' => ['The provided credentials are incorrect.'],
28+
// ]);
29+
return response()->json([
30+
'code'=> 201,
31+
'type' => 'error',
32+
'title' => 'Feedback 👋',
33+
'message' => '❌ The provided credentials are incorrect'
34+
]);
35+
}
36+
37+
return [
38+
'user' => $user,
39+
'token' => $user->createToken('login-token')->plainTextToken
40+
];
41+
} catch (\Throwable $th) {
42+
return response()->json([
43+
'code'=> 500,
44+
'type' => 'error',
45+
'title' => 'Feedback 👋',
46+
'message' => '❌ Internal server error'
47+
]);
48+
}
49+
}
50+
}

app/Models/User.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
use Illuminate\Database\Eloquent\Factories\HasFactory;
77
use Illuminate\Foundation\Auth\User as Authenticatable;
88
use Illuminate\Notifications\Notifiable;
9+
use Laravel\Sanctum\HasApiTokens;
910

1011
class User extends Authenticatable
1112
{
12-
use HasFactory, Notifiable;
13+
use HasApiTokens, HasFactory, Notifiable;
1314

1415
/**
1516
* The attributes that are mass assignable.

database/seeders/DatabaseSeeder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use App\Models\User;
66
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
77
use Illuminate\Database\Seeder;
8+
use Illuminate\Support\Facades\Hash;
89

910
class DatabaseSeeder extends Seeder
1011
{
@@ -18,6 +19,7 @@ public function run(): void
1819
User::factory()->create([
1920
'name' => 'Test User',
2021
'email' => '[email protected]',
22+
'password' => Hash::make('password'),
2123
]);
2224
}
2325
}

0 commit comments

Comments
 (0)