Skip to content

Commit df88d8d

Browse files
committed
login and register in rest api format
1 parent 99b003f commit df88d8d

File tree

4 files changed

+60
-5
lines changed

4 files changed

+60
-5
lines changed

app/Http/Controllers/AuthController.php

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,47 @@
22

33
namespace App\Http\Controllers;
44

5+
use App\Http\Requests\LoginUserRequest;
56
use App\Http\Requests\StoreUserRequest;
7+
use App\Models\User;
68
use App\Traits\HttpResponses;
79
use Illuminate\Http\Request;
10+
use Illuminate\Support\Facades\Auth;
11+
use Illuminate\Support\Facades\Hash;
812

913
class AuthController extends Controller
1014
{
1115
use HttpResponses;
1216

13-
public function login()
17+
public function login(LoginUserRequest $request)
1418
{
15-
return "login is here";
19+
$request->validated($request->all());
20+
if (!Auth::attempt($request->only("email", "password"))) {
21+
return $this->error("", "Credentials do not match", 401);
22+
}
23+
24+
$user = User::where("email", $request->email)->first();
25+
return $this->success([
26+
"user" => $user,
27+
"token" => $user->createToken("API token for " . $user->name)->plainTextToken
28+
]);
1629
}
1730

1831
public function register(StoreUserRequest $request)
1932
{
2033
$request->validated($request->all());
21-
34+
35+
$user = User::create([
36+
"name" => $request->name,
37+
"email" => $request->email,
38+
"password" => Hash::make($request->password),
39+
"username" => $request->username
40+
]);
41+
42+
return $this->success([
43+
"user" => $user,
44+
"token" => $user->createToken("API token for " . $user->name)->plainTextToken
45+
]);
2246
}
2347

2448
public function logout()
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace App\Http\Requests;
4+
5+
use Illuminate\Foundation\Http\FormRequest;
6+
7+
class LoginUserRequest extends FormRequest
8+
{
9+
/**
10+
* Determine if the user is authorized to make this request.
11+
*/
12+
public function authorize(): bool
13+
{
14+
return true;
15+
}
16+
17+
/**
18+
* Get the validation rules that apply to the request.
19+
*
20+
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
21+
*/
22+
public function rules(): array
23+
{
24+
return [
25+
"email" => ["required", "string", "email"],
26+
"password" => ["required", "min:8", "string"]
27+
];
28+
}
29+
}

app/Http/Requests/StoreUserRequest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class StoreUserRequest extends FormRequest
1111
*/
1212
public function authorize(): bool
1313
{
14-
return false;
14+
return true;
1515
}
1616

1717
/**
@@ -24,7 +24,8 @@ public function rules(): array
2424
return [
2525
"name" => ["required", "string", "max:255"],
2626
"email" => ["required", "string", "max:255", "unique:users"],
27-
"password" => ["required", "confirmed", Rules / Password::defaults()]
27+
"username" => ["required", "string", "max:255", "unique:users"],
28+
"password" => ["required", "confirmed", "min:8"],
2829
];
2930
}
3031
}

app/Models/User.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class User extends Authenticatable
2121
'name',
2222
'email',
2323
'password',
24+
"username"
2425
];
2526

2627
/**

0 commit comments

Comments
 (0)