Предложение: разрешить изменение имени пользователя после его создания

Примечание: этот текст переведён на русский язык с помощью ИИ. Возможны неточности в формулировках или технической терминологии.

Здравствуйте, команда 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 и внутренней реализации, разумеется, остаётся на усмотрение разработчиков.

Также, возможно, стоит предупреждать администраторов о том, что внешним ботам или интеграциям, которые сохраняют старое имя пользователя, потребуется обновить соответствующую ссылку после переименования.

Спасибо за рассмотрение этого предложения.

5 лайков