Skip to content

Commit aa566c8

Browse files
committed
refactor: re-archtectured Auth actions n a better way
1 parent 80e87f1 commit aa566c8

File tree

11 files changed

+128
-166
lines changed

11 files changed

+128
-166
lines changed

app/Actions/Auth/Login.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,24 @@ class Login
2727

2828
public function asController(Request $request)
2929
{
30+
if ($request->isMethod('get')) {
31+
$params = [
32+
'canRegister' => setting('allow_user_registrations'),
33+
'canResetPassword' => setting('allow_user_reset_password'),
34+
'oauth_providers' => config('system.providers') ?? []
35+
];
36+
37+
if ($request->is_demo) {
38+
$params = array_merge([
39+
'username' => config('system.defaults.demo_username'),
40+
'password' => config('system.defaults.demo_password'),
41+
'is_demo' => true
42+
], $params);
43+
}
44+
45+
return $this->generatePage('login', 'Auth/Login', $params);
46+
}
47+
3048
$this->username = $this->findUsername();
3149
$request->validate($this->loginRules(), $this->getValidationMessages());
3250

app/Actions/Auth/Pages/ForgotPassword.php

Lines changed: 0 additions & 22 deletions
This file was deleted.

app/Actions/Auth/Pages/Login.php

Lines changed: 0 additions & 34 deletions
This file was deleted.

app/Actions/Auth/Pages/Register.php

Lines changed: 0 additions & 24 deletions
This file was deleted.

app/Actions/Auth/Pages/ResetPassword.php

Lines changed: 0 additions & 23 deletions
This file was deleted.

app/Actions/Auth/Register.php

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,12 @@
22

33
namespace App\Actions\Auth;
44

5-
use App\Events\CRUDErrorOccurred;
6-
use App\Events\UserWasRegistered;
7-
use App\Http\Requests\RegisterRequest;
85
use App\Http\Resources\UserResource;
96
use App\Models\User;
107
use App\Repositories\UserRepository;
118
use App\Traits\CustomControllerResponsesTrait;
129
use App\Traits\ThemesTrait;
13-
use Exception;
1410
use Illuminate\Http\Request;
15-
use Illuminate\Support\Carbon;
16-
use Illuminate\Support\Facades\DB;
17-
use Illuminate\Support\Str;
1811
use Lorisleiva\Actions\Concerns\AsAction;
1912

2013
class Register
@@ -30,8 +23,28 @@ class Register
3023
*/
3124
protected $usersRepo;
3225

33-
public function asController(RegisterRequest $request, UserRepository $usersRepo)
26+
public function asController(Request $request, UserRepository $usersRepo)
3427
{
28+
if($request->isMethod('get')) {
29+
$params = [
30+
'canRegister' => setting('allow_user_registrations'),
31+
'oauth_providers' => config('system.providers') ?? []
32+
];
33+
34+
return $this->generatePage('login', 'Auth/Register', $params);
35+
}
36+
37+
$request->validate([
38+
'name' => 'nullable|string|max:255|unique:users,name',
39+
'email' => 'required|email|string|min:1|max:255|unique:users,email',
40+
'phone' => 'nullable|string|max:255|min:10|unique:users,phone|starts_with:+',
41+
'password' => 'required|string|confirmed|max:255',
42+
'first_name' => 'required|string|max:255',
43+
'last_name' => 'required|string|max:255',
44+
'location' => 'nullable|string|max:255|min:1',
45+
'date_of_birth' => 'nullable|date|before:today',
46+
]);
47+
3548
if (!setting('allow_user_registrations')) {
3649
return $this->respError(trans('auth.registration_closed'));
3750
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace App\Actions\Auth;
4+
5+
use App\Traits\CustomControllerResponsesTrait;
6+
use App\Traits\ThemesTrait;
7+
use Illuminate\Http\Request;
8+
use Lorisleiva\Actions\Concerns\AsAction;
9+
10+
class RequestPasswordReset
11+
{
12+
use AsAction;
13+
use ThemesTrait;
14+
use CustomControllerResponsesTrait;
15+
16+
public function asController(Request $request)
17+
{
18+
if ($request->isMethod('get')) {
19+
return $this->generatePage('forgot-password', 'Auth/ForgotPassword', [
20+
'title' => 'Request Password Reset'
21+
]);
22+
}
23+
24+
return $request->wantsJson()
25+
? response()->json([
26+
'message' => trans('Premium Feature!'),
27+
'errors' => trans('Premium Feature!'),
28+
], 422)
29+
: back()->withErrors(['email' => trans('Premium Feature!')]);
30+
}
31+
}

app/Actions/Auth/ResetPassword.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace App\Actions\Auth;
4+
5+
use App\Traits\CustomControllerResponsesTrait;
6+
use App\Traits\ThemesTrait;
7+
use Illuminate\Http\Request;
8+
use Lorisleiva\Actions\Concerns\AsAction;
9+
10+
class ResetPassword
11+
{
12+
use AsAction;
13+
use ThemesTrait;
14+
use CustomControllerResponsesTrait;
15+
16+
public function asController(Request $request, $token = null)
17+
{
18+
if ($request->isMethod('get')) {
19+
return $this->generatePage('reset-password', 'Auth/ResetPassword', [
20+
'token' => $token,
21+
'title' => trans('Reset Password')
22+
]);
23+
}
24+
25+
return $request->wantsJson()
26+
? response()->json([
27+
'message' => trans('Premium Feature!'),
28+
'errors' => trans('Premium Feature!'),
29+
], 422)
30+
: back()->withErrors(['email' => trans('Premium Feature!')]);
31+
}
32+
}

app/Http/Requests/RegisterRequest.php

Lines changed: 0 additions & 38 deletions
This file was deleted.

routes/modules/auth.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
use App\Actions\Auth\Login;
4+
use App\Actions\Auth\Logout;
5+
use App\Actions\Auth\Register;
6+
use App\Actions\Auth\RequestPasswordReset;
7+
use App\Actions\Auth\ResetPassword;
8+
9+
/*
10+
|--------------------------------------------------------------------------
11+
| Auth Routes
12+
|--------------------------------------------------------------------------
13+
*/
14+
15+
Route::get('/login', Login::class)->middleware(['guest'])->name('login');
16+
Route::post('/login', Login::class)->middleware(['guest', 'throttle:' . config('auth.limiters.login')])->name('login');
17+
Route::get('/register', Register::class)->middleware(['guest'])->name('register');
18+
Route::post('/register', Register::class)->middleware(['guest', 'throttle:' . config('auth.limiters.registration')])->name('register');
19+
Route::post('/logout', Logout::class)->middleware('auth:sanctum')->name('logout');
20+
Route::get('/forgot-password', RequestPasswordReset::class)->middleware('guest')->name('forgot-password');
21+
Route::post('/forgot-password', RequestPasswordReset::class)->middleware('guest')->name('password.email');
22+
Route::get('/reset-password/{token}', ResetPassword::class)->middleware('guest')->name('password.reset');
23+
Route::post('/reset-password', ResetPassword::class)->middleware('guest')->name('password.update');
24+

0 commit comments

Comments
 (0)