PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
2.2 KiB

<?php
declare(strict_types=1);
namespace app\Repositories;
use app\core\Repository;
// Repository class with static methods related to authentication
class Usuario extends Repository
{
//protected static string $table = 'pbx_usuarios';
public static function getUser(string $email): array|bool
{
$query = "SELECT id, nome, apelido, email, senha
FROM pbx_usuarios
WHERE email = :email";
$data = ["email" => $email];
return self::query($query, $data, 'one');
}
public static function getTokenByUserId(string $id): array|bool
{
$query = "SELECT * FROM pbx_tokens WHERE id_usuario = :id";
$data = ["id" => $id];
return self::query($query, $data, 'one');
}
public static function deleteTokenById(string $id): int|bool
{
if (empty($id)) {
return ["status" => "error", "mensage" => "ERROR! Delete method must have parameters!"];
}
$query = "DELETE from pbx_tokens WHERE id = :id";
$data = ["id" => $id];
return self::query($query, $data, 'count');
}
public static function createToken(array $data): int|bool
{
$query = "INSERT INTO pbx_tokens (" . implode(', ', array_keys($data)) . ")
VALUES (:" . implode(',:', array_keys($data)) . ')';
return self::query($query, $data, 'count');
}
public static function getOrgIdByUserId(string $userId): array
{
$query = "SELECT id_organizacao FROM pbx_organizacao_usuarios WHERE id_usuario = :user_id";
$data = ["user_id" => $userId];
return self::query($query, $data, 'one');
}
public static function verifyTokenByOrg(string $token, string $orgId)
{
$query = "SELECT pu.id as user_id, t.id as token_id, pou.id_organizacao, t.token, t.expired_at
FROM pbx_usuarios pu
INNER JOIN pbx_tokens t ON t.id_usuario = pu.id
INNER JOIN pbx_organizacao_usuarios pou ON pou.id_usuario = pu.id
WHERE t.token = :token AND id_organizacao = :org_id;";
$params = ["token" => $token, "org_id" => $orgId];
return self::query($query, $params, "one");
}
}