Skip to content

Commit 7ac3fcc

Browse files
committed
feat: add token expiration handling and update login request validation
1 parent 4af3793 commit 7ac3fcc

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

contexts/Authorization/Application/Coordinators/AuthenticationCoordinator.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Contexts\Authorization\Application\Coordinators;
66

77
use Contexts\Authorization\Application\DTOs\Authentication\LoginDTO;
8+
use Contexts\Authorization\Domain\Policies\TokenExpirationPolicy;
89
use Contexts\Authorization\Domain\Repositories\UserRepository;
910
use Contexts\Shared\Application\BaseCoordinator;
1011

@@ -19,7 +20,8 @@ public function login(LoginDTO $dto)
1920
$user = $this->userRepository->getByEmailOrThrowAuthFailure($dto->email);
2021
$user->authenticate($dto->password);
2122

22-
$token = $this->userRepository->generateLoginToken($user);
23+
$expiresAt = TokenExpirationPolicy::resolveExpiration($dto->remember);
24+
$token = $this->userRepository->generateLoginToken($user, $expiresAt);
2325

2426
$this->dispatchDomainEvents($user);
2527

contexts/Authorization/Application/DTOs/Authentication/LoginDTO.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ class LoginDTO
99
public function __construct(
1010
public readonly string $email,
1111
public readonly string $password,
12+
public readonly bool $remember,
1213
) {}
1314

1415
public static function fromRequest(array $data): self
1516
{
1617
return new self(
1718
$data['email'],
1819
$data['password'],
20+
$data['remember'] ?? false,
1921
);
2022
}
2123
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Contexts\Authorization\Domain\Policies;
6+
7+
use Carbon\CarbonImmutable;
8+
9+
class TokenExpirationPolicy
10+
{
11+
public static function resolveExpiration(bool $remember): CarbonImmutable
12+
{
13+
return $remember ?
14+
CarbonImmutable::now()->addWeeks(2) :
15+
CarbonImmutable::now()->addDay();
16+
}
17+
}

contexts/Authorization/Presentation/Requests/Authentication/LoginRequest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public function rules(): array
1313
return [
1414
'email' => ['required', 'email', 'max:255'],
1515
'password' => ['required', 'string', 'max:255'],
16+
'remember' => ['boolean'],
1617
];
1718
}
1819
}

0 commit comments

Comments
 (0)