Skip to content

Commit

Permalink
fix authentication module
Browse files Browse the repository at this point in the history
  • Loading branch information
mazfreelance committed Jan 22, 2023
1 parent 60a7e3a commit 54164ee
Show file tree
Hide file tree
Showing 16 changed files with 131 additions and 233 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
use App\Containers\v1\Notification\Notifications\ActionUpdate;
use App\Containers\v1\User\Enums\{UserStatus, UserVerifyStatus};
use App\Containers\v1\User\Models\User;
use App\Ship\Mail\SendEmailTest;
use App\Ship\Mail\SendEmailVerification;
use App\Ship\Support\Facades\Helper;
use Illuminate\Support\Facades\{DB, Hash, Mail};
Expand Down
27 changes: 13 additions & 14 deletions app/Containers/v1/Authentication/Controllers/Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace App\Containers\v1\Authentication\Controllers;

use App\Containers\v1\Authentication\DTO\{EmailVerificationDTO, ForgotPasswordDTO, LoginDTO, RefreshTokenDTO, RegisterDTO, ResendEmailVerificationDTO, ResetPasswordDTO};
use App\Containers\v1\Authentication\Requests\{EmailVerificationRequest, ForgotPasswordRequest, LoginRequest, RegisterRequest, ResendEmailVerificationRequest, ResetPasswordRequest};
use App\Ship\Controllers\Controller as BaseController;
use App\Ship\Support\Facades\{Executor, Responder};
use Illuminate\Http\Request;
Expand All @@ -29,9 +28,9 @@ public function __construct()
*
* @return \Illuminate\Http\JsonResponse
*/
public function login(LoginRequest $request)
public function login(Request $request)
{
$loginDTO = LoginDTO::fromRequest($request);
$loginDTO = LoginDTO::from($request);
$tokenData = Executor::run('Authentication@LoginAction', $loginDTO);

return Responder::success($tokenData, __('message.success_login'));
Expand All @@ -48,9 +47,9 @@ public function login(LoginRequest $request)
*
* @return \Illuminate\Http\JsonResponse
*/
public function register(RegisterRequest $request)
public function register(Request $request)
{
$registerDTO = RegisterDTO::fromRequest($request);
$registerDTO = RegisterDTO::from($request);
Executor::run('Authentication@RegisterAction', $registerDTO);

return Responder::success([], __('message.success_register'));
Expand All @@ -63,9 +62,9 @@ public function register(RegisterRequest $request)
*
* @return \Illuminate\Http\JsonResponse
*/
public function emailVerification(EmailVerificationRequest $request)
public function emailVerification(Request $request)
{
$emailVerificationDTO = EmailVerificationDTO::fromRequest($request);
$emailVerificationDTO = EmailVerificationDTO::from($request);
Executor::run('Authentication@EmailVerificationAction', $emailVerificationDTO);

return Responder::success([], __('message.success_verify'));
Expand All @@ -79,9 +78,9 @@ public function emailVerification(EmailVerificationRequest $request)
* @return \Illuminate\Http\JsonResponse
*/

public function forgotPassword(ForgotPasswordRequest $request)
public function forgotPassword(Request $request)
{
$forgotPasswordDTO = ForgotPasswordDTO::fromRequest($request);
$forgotPasswordDTO = ForgotPasswordDTO::from($request);
Executor::run('Authentication@ForgotPasswordAction', $forgotPasswordDTO);

return Responder::success([], __('message.success_sent'));
Expand All @@ -97,9 +96,9 @@ public function forgotPassword(ForgotPasswordRequest $request)
* @return \Illuminate\Http\JsonResponse
*/

public function resetPassword(ResetPasswordRequest $request)
public function resetPassword(Request $request)
{
$resetPasswordByEmailDTO = ResetPasswordDTO::fromRequest($request);
$resetPasswordByEmailDTO = ResetPasswordDTO::from($request);
Executor::run('Authentication@ResetPasswordAction', $resetPasswordByEmailDTO);

return Responder::success([], __('message.success_update'));
Expand All @@ -114,7 +113,7 @@ public function resetPassword(ResetPasswordRequest $request)
*/
public function refreshToken(Request $request)
{
$refreshTokenDTO = RefreshTokenDTO::fromRequest($request);
$refreshTokenDTO = RefreshTokenDTO::from($request);
$tokenData = Executor::run('Authentication@RefreshTokenAction', $refreshTokenDTO);

return Responder::success($tokenData, __('message.success_refresh'));
Expand Down Expand Up @@ -142,9 +141,9 @@ public function logout()
*
* @return \Illuminate\Http\JsonResponse
*/
public function resendEmailVerification(ResendEmailVerificationRequest $request)
public function resendEmailVerification(Request $request)
{
$resendEmailVerificationDTO = ResendEmailVerificationDTO::fromRequest($request);
$resendEmailVerificationDTO = ResendEmailVerificationDTO::from($request);
$email = Executor::run('Authentication@ResendEmailVerificationAction', $resendEmailVerificationDTO);

return Responder::success([], __('message.success_verify_sent', ['email' => $email]));
Expand Down
25 changes: 17 additions & 8 deletions app/Containers/v1/Authentication/DTO/EmailVerificationDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,26 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Spatie\LaravelData\Data;

class EmailVerificationDTO extends DataTransferObject
/**
* @reference https://github.com/spatie/data-transfer-object
*/
class EmailVerificationDTO extends Data
{
public $token;
public function __construct(
public string $token
) {}

public static function fromRequest(Request $request)
/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'token' => $request->token
]);
return [
'token' => 'required|string|max:255|exists:users,verification_token|bail'
];
}
}
23 changes: 14 additions & 9 deletions app/Containers/v1/Authentication/DTO/ForgotPasswordDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,26 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Spatie\LaravelData\Data;

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class ForgotPasswordDTO extends DataTransferObject
class ForgotPasswordDTO extends Data
{
public $email;
public function __construct(
public string $email
) {}

public static function fromRequest(Request $request): self
/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'email' => $request->email,
]);
return [
'email' => 'required|email:filter|max:125|bail'
];
}

}
41 changes: 23 additions & 18 deletions app/Containers/v1/Authentication/DTO/LoginDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,32 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Illuminate\Validation\Rule;
use Spatie\LaravelData\Data;

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class LoginDTO extends DataTransferObject
class LoginDTO extends Data
{
public $email;
public function __construct(
public string $email,
public string $password,
public ?bool $force = false
) {}

public $password;

public $force;

public static function fromRequest(Request $request): self
/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'email' => $request->email,
'password' => $request->password,
'force' => $request->force ?? false
]);
return [
'email' => 'required|email|bail',
'password' => 'required|string|bail',
'force' => [
Rule::requiredIf(!config('app.allow_login_multiple_token')),
'boolean',
'bail'
]
];
}

}
17 changes: 5 additions & 12 deletions app/Containers/v1/Authentication/DTO/RefreshTokenDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,14 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Spatie\LaravelData\Data;

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class RefreshTokenDTO extends DataTransferObject
class RefreshTokenDTO extends Data
{
public $refresh_token;

public static function fromRequest(Request $request): self
{
return new self([
'refresh_token' => $request->refresh_token,
]);
}

public function __construct(
public string $refresh_token
) {}
}
41 changes: 22 additions & 19 deletions app/Containers/v1/Authentication/DTO/RegisterDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,33 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Attributes\{MapInputName, MapOutputName};

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class RegisterDTO extends DataTransferObject
class RegisterDTO extends Data
{
public $name;

public $email;

public $password;

public $agree_term;

public static function fromRequest(Request $request): self
public function __construct(
public string $name,
public string $email,
public string $password,
public bool $agree_term
) {}

/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'name' => $request->name,
'email' => $request->email,
'password' => $request->password,
'agree_term' => $request->agree_term,
]);
return [
'name' => 'required|string|max:125|bail',
'email' => 'required|email|unique:users|max:100|bail',
'password' => 'required|string|confirmed|min:6|bail',
'agree_term' => 'required|accepted|bail'
];
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,28 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Illuminate\Support\Facades\Auth;
use Spatie\LaravelData\Data;

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class ResendEmailVerificationDTO extends DataTransferObject
class ResendEmailVerificationDTO extends Data
{
public $email;
public function __construct(
public ?string $email
) {}

public static function fromRequest(Request $request): self
/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'email' => $request->email,
]);
$userId = Auth::id();
return [
"email" => ["nullable", "email:filter", "max:125", "unique:users,email,{$userId}", "bail"],
];
}

}
28 changes: 16 additions & 12 deletions app/Containers/v1/Authentication/DTO/ResetPasswordDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,28 @@

namespace App\Containers\v1\Authentication\DTO;

use Illuminate\Http\Request;
use Spatie\DataTransferObject\DataTransferObject;
use Spatie\LaravelData\Data;

/**
* @reference https://github.com/spatie/data-transfer-object
*/
class ResetPasswordDTO extends DataTransferObject
class ResetPasswordDTO extends Data
{
public $token;
public function __construct(
public string $token,
public string $password
) {}

public $password;

public static function fromRequest(Request $request): self
/**
* to construct a custom rule object
*
* @reference https://laravel.com/docs/9.x/validation
*/
public static function rules(): array
{
return new self([
'token' => $request->token,
'password' => $request->password,
]);
return [
'token' => 'required|string|exists:password_resets,token|bail',
'password' => 'required|alpha_num|confirmed|min:8|max:12|bail'
];
}

}

This file was deleted.

Loading

0 comments on commit 54164ee

Please sign in to comment.