mirror of
https://github.com/Bubka/2FAuth.git
synced 2025-08-09 05:54:34 +02:00
Refactor Auth controllers : thicker, with Form requests & API resource
This commit is contained in:
@ -31,7 +31,7 @@ class LoginController extends Controller
|
||||
/**
|
||||
* Handle a login request to the application.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Http\Requests\CaseInsensitiveLogin $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
@ -61,6 +61,21 @@ class LoginController extends Controller
|
||||
return $this->sendFailedLoginResponse($request);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* log out current user
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$accessToken = Auth::user()->token();
|
||||
$accessToken->revoke();
|
||||
|
||||
return response()->json(['message' => 'signed out'], Response::HTTP_OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send the response after the user was authenticated.
|
||||
*
|
||||
@ -83,6 +98,7 @@ class LoginController extends Controller
|
||||
], Response::HTTP_OK);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the failed login response instance.
|
||||
*
|
||||
@ -93,6 +109,7 @@ class LoginController extends Controller
|
||||
{
|
||||
return response()->json(['message' => 'unauthorised'], Response::HTTP_UNAUTHORIZED);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Redirect the user after determining they are locked out.
|
||||
@ -109,6 +126,7 @@ class LoginController extends Controller
|
||||
return response()->json(['message' => Lang::get('auth.throttle', ['seconds' => $seconds])], Response::HTTP_TOO_MANY_REQUESTS);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the needed authorization credentials from the request.
|
||||
*
|
||||
|
35
app/Http/Controllers/Auth/PasswordController.php
Normal file
35
app/Http/Controllers/Auth/PasswordController.php
Normal file
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Requests\UserPatchPwdRequest;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class PasswordController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Update the user's password.
|
||||
*
|
||||
* @param \App\Http\Requests\UserPatchPwdRequest $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function update(UserPatchPwdRequest $request)
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
if (!Hash::check( $validated['currentPassword'], Auth::user()->password) ) {
|
||||
return response()->json(['message' => __('errors.wrong_current_password')], 400);
|
||||
}
|
||||
|
||||
if (!config('2fauth.config.isDemoApp') ) {
|
||||
$request->user()->update([
|
||||
'password' => bcrypt($validated['password']),
|
||||
]);
|
||||
}
|
||||
|
||||
return response()->json(['message' => __('auth.forms.password_successfully_changed')]);
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use App\Http\Requests\UserStoreRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Http\Controllers\Controller;
|
||||
@ -10,6 +11,7 @@ use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
@ -25,44 +27,24 @@ class RegisterController extends Controller
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* check if a user exists
|
||||
* @param Request $request [description]
|
||||
* @return json
|
||||
*/
|
||||
public function checkUser()
|
||||
{
|
||||
$user = DB::table('users')->first();
|
||||
|
||||
return response()->json(['username' => isset($user->name) ? $user->name : null], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a registration request for the application.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Http\Requests\UserStoreRequest $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
*/
|
||||
public function register(Request $request)
|
||||
public function register(UserStoreRequest $request)
|
||||
{
|
||||
// check if a user already exists
|
||||
if( DB::table('users')->count() > 0 ) {
|
||||
// return response()->json(['message' => __('errors.already_one_user_registered')], 400);
|
||||
throw \Illuminate\Validation\ValidationException::withMessages(['taken' => __('errors.already_one_user_registered')]);
|
||||
}
|
||||
|
||||
$this->validator($request->all())->validate();
|
||||
|
||||
event(new Registered($user = $this->create($request->all())));
|
||||
|
||||
//$this->guard()->login($user);
|
||||
$validated = $request->validated();
|
||||
event(new Registered($user = $this->create($validated)));
|
||||
|
||||
return response()->json([
|
||||
'message' => 'account created',
|
||||
'token' => $user->createToken('MyApp')->accessToken,
|
||||
'token' => $user->createToken('2FAuth')->accessToken,
|
||||
'name' => $user->name,
|
||||
]);
|
||||
], 201);
|
||||
}
|
||||
|
||||
|
||||
|
54
app/Http/Controllers/Auth/UserController.php
Normal file
54
app/Http/Controllers/Auth/UserController.php
Normal file
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use App\Http\Requests\UserUpdateRequest;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get detailed information about a user
|
||||
*
|
||||
* @return \App\Http\Resources\UserResource
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
$user = User::first();
|
||||
|
||||
return $user
|
||||
? new UserResource($user)
|
||||
: response()->json(['name' => null], 200);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Update the user's profile information.
|
||||
*
|
||||
* @param \App\Http\Requests\UserUpdateRequest $request
|
||||
* @return \App\Http\Resources\UserResource
|
||||
*/
|
||||
public function update(UserUpdateRequest $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
$validated = $request->validated();
|
||||
|
||||
if (!Hash::check( $request->password, Auth::user()->password) ) {
|
||||
return response()->json(['message' => __('errors.wrong_current_password')], 400);
|
||||
}
|
||||
|
||||
if (!config('2fauth.config.isDemoApp') ) {
|
||||
tap($user)->update([
|
||||
'name' => $validated['name'],
|
||||
'email' => $validated['email'],
|
||||
]);
|
||||
}
|
||||
|
||||
return new UserResource($user);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user