Примечание: этот текст переведён на русский язык с помощью ИИ. Возможны неточности в формулировках или технической терминологии.
Здравствуйте, команда Remnawave!
Я хотел бы предложить добавить возможность изменять имя пользователя после его создания.
Это может быть полезно в следующих ситуациях:
- Для исправления опечатки в имени пользователя.
- Для замены временного имени, которое было указано при создании пользователя в спешке.
- При изменении имени или системы именования клиентов.
В настоящее время Panel предупреждает, что имя пользователя нельзя изменить позднее, а в форме редактирования пользователя отсутствует соответствующая возможность.
Техническое наблюдение
Это только предложение, и я мог не учесть какую-либо внутреннюю зависимость или требование совместимости. Однако после изучения текущего кода Panel и backend версии v3.4.1 мне кажется, что изменение имени пользователя больше не должно влиять на учёт трафика или аутентификацию прокси-подключений.
Насколько я понимаю:
- Числовой ID пользователя теперь используется как идентификатор пользователя в Xray/Node для учёта трафика.
- Данные об использовании трафика и связи в базе данных привязаны к числовому ID пользователя.
- URL подписки связан с shortUuid.
- Подключения VLESS, Trojan, Shadowsocks и Hysteria2 используют соответствующие UUID или пароли.
- Значение username, по всей видимости, используется главным образом для отображения, поиска, запросов API, шаблонов, уведомлений и других административных задач.
Переход от учёта трафика по имени пользователя к учёту по числовому ID также виден в следующем коммите backend:
Поскольку числовой ID останется неизменным, кажется, что переименование пользователя с user1 на user2 может просто обновить существующее поле username, не изменяя:
- ID пользователя.
- Существующую статистику и историю использования трафика.
- URL подписки или shortUuid.
- Учётные данные протоколов.
- Существующие VPN-подключения.
Пожалуйста, поправьте меня, если существует другая внутренняя причина, по которой имя пользователя должно оставаться неизменяемым.
Предлагаемое поведение
Администратор мог бы изменять имя пользователя в существующем окне редактирования пользователя.
Например:
Текущее имя пользователя: user1
Новое имя пользователя: user2
После сохранения:
- Та же запись пользователя будет иметь имя user2.
- Поиск пользователя по имени user2 будет работать.
- Поиск по старому имени user1 больше не будет находить этого пользователя.
- Все остальные идентификаторы, учётные данные и информация о трафике останутся неизменными.
Дополнительный столбец в базе данных, например newUsername, не потребуется. Должно обновляться только существующее значение username.
Имя пользователя по-прежнему должно оставаться уникальным, поскольку Remnawave поддерживает поиск пользователей по имени. Предлагается убрать только неизменяемость имени пользователя, но не требование его уникальности. Существующие правила проверки длины, допустимых символов и уникальности можно сохранить.
Поскольку текущий API обновления позволяет идентифицировать пользователя по его числовому ID, одним из возможных вариантов реализации может быть поиск изменяемого пользователя по ID с последующим обновлением существующего поля username. Однако окончательный вариант API и внутренней реализации, разумеется, остаётся на усмотрение разработчиков.
Также, возможно, стоит предупреждать администраторов о том, что внешним ботам или интеграциям, которые сохраняют старое имя пользователя, потребуется обновить соответствующую ссылку после переименования.
Спасибо за рассмотрение этого предложения.