forked from SimplesIP/pabx-app
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.
68 lines
2.2 KiB
68 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"); |
|
} |
|
}
|
|
|