eqeqwan21

ods_admin.php

Jul 19th, 2025
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.14 KB | None | 0 0
  1. <?php
  2.  
  3. class ods_admin
  4. {
  5.     private $pdo;
  6.  
  7.     public function __construct(PDO $pdo)
  8.     {
  9.         $this->pdo = $pdo;
  10.     }
  11.  
  12.     public function createUser(array $data)
  13.     {
  14.         $login = trim($data['login'] ?? '');
  15.         $pass = $data['pass'] ?? '';
  16.         $role = $data['role'] ?? 'user';
  17.  
  18.         if ($login === '' || $pass === '') {
  19.             throw new Exception('empty');
  20.         }
  21.  
  22.         $hash = password_hash($pass, PASSWORD_DEFAULT);
  23.  
  24.         $sql = 'INSERT INTO user (login, password_hash, role) VALUES (?,?,?)';
  25.         $this->pdo->prepare($sql)->execute([$login, $hash, $role]);
  26.     }
  27.  
  28.     public function resetIp(int $uid): void
  29.     {
  30.         $this->pdo->prepare('UPDATE user SET legit_ips="[]" WHERE id=?')->execute([$uid]);
  31.     }
  32.  
  33.     public function resetDevice(int $uid): void
  34.     {
  35.         $this->pdo->prepare('UPDATE user SET dev_token=NULL WHERE id=?')->execute([$uid]);
  36.     }
  37.  
  38.     public function listUsers(): array
  39.     {
  40.         $rows = $this->pdo->query(
  41.             'SELECT id, login, role,
  42.                JSON_UNQUOTE(JSON_EXTRACT(legit_ips, "$"))   AS ip_json,
  43.                dev_token
  44.         FROM   user
  45.         ORDER  BY login'
  46.         )->fetchAll();
  47.  
  48.         foreach ($rows as &$r) {
  49.             $ips = json_decode($r['ip_json'] ?: '[]', true);
  50.             $r['ip_list'] = $ips ? implode(", ", $ips) : "-";
  51.             unset($r['ip_json']);
  52.         }
  53.         return $rows;
  54.     }
  55.  
  56.     public function deleteUser(int $uid): void
  57.     {
  58.         $this->pdo->prepare('DELETE FROM user WHERE id = ?')->execute([$uid]);
  59.     }
  60.  
  61.     public function lockIps(int $uid): void
  62.     {
  63.         $stmt = $this->pdo->prepare('SELECT legit_ips FROM user WHERE id = ?');
  64.         $stmt->execute([$uid]);
  65.         $raw = $stmt->fetchColumn();
  66.  
  67.         $ips = $raw ? json_decode($raw, true) : [];
  68.  
  69.         if (!$ips) {
  70.             return;
  71.         }
  72.  
  73.         while (count($ips) < 10) {
  74.             $ips[] = $ips[0];
  75.         }
  76.  
  77.         $this->pdo
  78.             ->prepare('UPDATE user SET legit_ips = ? WHERE id = ?')
  79.             ->execute([json_encode($ips, JSON_UNESCAPED_UNICODE), $uid]);
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment