Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class ods_admin
- {
- private $pdo;
- public function __construct(PDO $pdo)
- {
- $this->pdo = $pdo;
- }
- public function createUser(array $data)
- {
- $login = trim($data['login'] ?? '');
- $pass = $data['pass'] ?? '';
- $role = $data['role'] ?? 'user';
- if ($login === '' || $pass === '') {
- throw new Exception('empty');
- }
- $hash = password_hash($pass, PASSWORD_DEFAULT);
- $sql = 'INSERT INTO user (login, password_hash, role) VALUES (?,?,?)';
- $this->pdo->prepare($sql)->execute([$login, $hash, $role]);
- }
- public function resetIp(int $uid): void
- {
- $this->pdo->prepare('UPDATE user SET legit_ips="[]" WHERE id=?')->execute([$uid]);
- }
- public function resetDevice(int $uid): void
- {
- $this->pdo->prepare('UPDATE user SET dev_token=NULL WHERE id=?')->execute([$uid]);
- }
- public function listUsers(): array
- {
- $rows = $this->pdo->query(
- 'SELECT id, login, role,
- JSON_UNQUOTE(JSON_EXTRACT(legit_ips, "$")) AS ip_json,
- dev_token
- FROM user
- ORDER BY login'
- )->fetchAll();
- foreach ($rows as &$r) {
- $ips = json_decode($r['ip_json'] ?: '[]', true);
- $r['ip_list'] = $ips ? implode(", ", $ips) : "-";
- unset($r['ip_json']);
- }
- return $rows;
- }
- public function deleteUser(int $uid): void
- {
- $this->pdo->prepare('DELETE FROM user WHERE id = ?')->execute([$uid]);
- }
- public function lockIps(int $uid): void
- {
- $stmt = $this->pdo->prepare('SELECT legit_ips FROM user WHERE id = ?');
- $stmt->execute([$uid]);
- $raw = $stmt->fetchColumn();
- $ips = $raw ? json_decode($raw, true) : [];
- if (!$ips) {
- return;
- }
- while (count($ips) < 10) {
- $ips[] = $ips[0];
- }
- $this->pdo
- ->prepare('UPDATE user SET legit_ips = ? WHERE id = ?')
- ->execute([json_encode($ips, JSON_UNESCAPED_UNICODE), $uid]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment