43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php
|
|
namespace WorkbloomERP\Module\Auth\DTO;
|
|
|
|
use InvalidArgumentException;
|
|
|
|
class LoginDTO {
|
|
public function __construct(
|
|
public readonly string $login,
|
|
public readonly string $senha
|
|
) {}
|
|
|
|
/**
|
|
* Instancia e valida a partir dos dados da requisição.
|
|
*
|
|
* @param array $data
|
|
* @return self
|
|
* @throws InvalidArgumentException
|
|
*/
|
|
public static function fromArray(array $data): self {
|
|
$login = trim((string)($data['login'] ?? $data['email'] ?? $data['nome_usuario'] ?? ''));
|
|
$senha = (string)($data['senha'] ?? $data['password'] ?? '');
|
|
|
|
$errors = [];
|
|
|
|
if ($login === '') {
|
|
$errors['login'] = 'O campo login (e-mail ou nome de usuário) é obrigatório.';
|
|
}
|
|
|
|
if ($senha === '') {
|
|
$errors['senha'] = 'O campo senha é obrigatório.';
|
|
}
|
|
|
|
if (!empty($errors)) {
|
|
throw new InvalidArgumentException(json_encode($errors, JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
return new self(
|
|
login: $login,
|
|
senha: $senha
|
|
);
|
|
}
|
|
}
|