wire postgres session repo, migrations, seed, and dev serve
This commit is contained in:
parent
02effe761a
commit
89b63cb9e9
8 changed files with 235 additions and 2 deletions
64
backend/app/Auth/PostgresSessionRepository.php
Normal file
64
backend/app/Auth/PostgresSessionRepository.php
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
|
||||
namespace App\Auth;
|
||||
|
||||
use App\Database\SessionModel;
|
||||
use App\Shared\ValueObject\EmailAddress;
|
||||
use App\User\User;
|
||||
|
||||
class PostgresSessionRepository implements SessionRepository
|
||||
{
|
||||
public function create(CreateSessionDto $dto): Session
|
||||
{
|
||||
$record = SessionModel::create([
|
||||
'token' => $dto->token,
|
||||
'user_id' => $dto->user->getId(),
|
||||
'created_at' => $dto->createdAt->format('Y-m-d H:i:s'),
|
||||
'expires_at' => $dto->expiresAt->format('Y-m-d H:i:s'),
|
||||
]);
|
||||
|
||||
return new Session(
|
||||
token: $record->token,
|
||||
user: $dto->user,
|
||||
createdAt: $dto->createdAt,
|
||||
expiresAt: $dto->expiresAt,
|
||||
);
|
||||
}
|
||||
|
||||
public function findByToken(string $token): ?Session
|
||||
{
|
||||
$record = SessionModel::where('token', $token)->first();
|
||||
|
||||
if ($record === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$userRecord = $record->user;
|
||||
|
||||
if ($userRecord === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$user = new User(
|
||||
id: $userRecord->id,
|
||||
email: new EmailAddress($userRecord->email),
|
||||
passwordHash: $userRecord->password_hash,
|
||||
);
|
||||
|
||||
return new Session(
|
||||
token: $record->token,
|
||||
user: $user,
|
||||
createdAt: $record->created_at instanceof \DateTimeImmutable
|
||||
? $record->created_at
|
||||
: new \DateTimeImmutable($record->created_at->format('Y-m-d H:i:s')),
|
||||
expiresAt: $record->expires_at instanceof \DateTimeImmutable
|
||||
? $record->expires_at
|
||||
: new \DateTimeImmutable($record->expires_at->format('Y-m-d H:i:s')),
|
||||
);
|
||||
}
|
||||
|
||||
public function deleteByToken(string $token): void
|
||||
{
|
||||
SessionModel::where('token', $token)->delete();
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue