Перейти к содержанию

Управление админкой

Хранение данных админки рядом с VPN бекендом

админка: 10.99.87.64

бд админки: 10.99.87.62

\ Сейчас используются УЗ:

operator@shivavpn.io
admin@shivavpn.io

\ Пример записи УЗ админа в БД MySQL

*************************** 2. row ***************************
                id: 0xB06C0052DBD311EE968A0242AC110002
           account: operator@shivavpn.io
        created_at: 2024-03-06 16:07:53.951282
         device_id: NULL
          password: $2a$10$q0Dv6nS2./Wwct9DhhdYSO1tkduwZkzKWBa7Mma0Z5zHEtsP1VPiW
              role: ADMIN
       permissions: ["readServers", "readProxyServers", "readAccounts", "editAccounts", "readPayments", "editPayments", "readSubscriptions", "editSubscriptions", "readPromoCodes", "editPromoCodes"]
          limit_ip: 0
          valid_to: NULL
        pay_status: ADMIN
        deleted_at: NULL
stripe_customer_id: NULL
         yandex_id: NULL

Допустимые доступы

readServers / editServers
readProxyServers / editProxyServers
readAccounts / editAccounts
readPayments / editPayments
readSubscriptions / editSubscriptions
readPromoCodes / editPromoCodes

Для разработчика достаточно следующих прав:

["readServers", "readAccounts", "readPayments", "readSubscriptions", "readPromoCodes", "editAccounts"]

SQL команда чтобы добавить аккаунт:

INSERT INTO vpn.account (
        id,
        account,
        created_at,
        device_id,
        password,
        role,
        permissions,
        limit_ip,
        valid_to,
        pay_status,
        deleted_at,
        stripe_customer_id,
        yandex_id
    )
VALUES (
        UUID_TO_BIN(UUID()),-- id: генерируем уникальный бинарный PK
        '<MAIL>',-- account
        NOW(),-- created_at: текущая дата/время
        null,-- device_id: пример UUID
        '<ПАРОЛЬ в bcrypt>',-- password: bcrypt-хеш
        'ADMIN',-- role
        '<нужные доступы>',-- permissions, например, через запятую
        '0',-- limit_ip: допустимый IP
        null,-- valid_to: дата окончания
        'ADMIN',-- pay_status
        NULL,-- deleted_at: NULL если не удалён
        null,-- stripe_customer_id
        null -- yandex_id
    );

\ Создать пароль для записи в БД можно с помощью скрипта:

https://git.karmann.tech/devops/shiva-ansible

Инструкция как пользоваться описана в readme.md

См. также: DevOps скрипты → audit_account · Маппинг аккаунтов · Репозитории