Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add new command AdminToggle #785

Merged
merged 28 commits into from
Nov 16, 2024

Conversation

Schrodinger71
Copy link
Collaborator

@Schrodinger71 Schrodinger71 commented Nov 13, 2024

Описание PR

  • Если в кратце, то введена новая команда admin_toggle для снятия и возращения прав в ручную
  • fuckrule перенесено в другую категорию прав, т.е. отключена для игроков
  • добавленно логирование на tippy и tip
  • добавлено логирование на ghostkick
  • нельзя забанить пользователя с Permission по нику
  • нельзя ghostkick прописать пользователю с Permission
  • нельзя снять права с помощью admin_toggle пользователю с Permission
  • за сущностями с HideGhostWarpComponent, нельзя следовать

Требования

  • Я прочитал(а) и следую Руководство по созданию пулл реквестов. Я понимаю, что в противном случае мой ПР может быть закрыт по усмотрению мейнтейнера.
  • Я добавил скриншоты/видео к этому пулл реквесту, демонстрирующие его изменения в игре, или этот пулл реквест не требует демонстрации в игре

Критические изменения

Чейнджлог
NO CL NO FUN

Summary by CodeRabbit

  • Новые функции

    • Добавлена команда admin_toggle для переключения административного статуса игроков.
    • Улучшена система управления привилегиями администраторов с добавлением проверок на разрешения.
    • Улучшена механика взаимодействия для призрачных сущностей в системе последователей.
  • Исправления ошибок

    • Команда ShowRulesCommand теперь проверяет права администратора перед отображением правил.
    • Команда KickHideCommand теперь предоставляет более точные сообщения об ошибках при отсутствии игрока.
  • Документация

    • Обновлены текстовые файлы с описанием и подсказками для команды admin_toggle.

@github-actions github-actions bot added the Changes: Localization Изменение локализации label Nov 13, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 13, 2024
Copy link

coderabbitai bot commented Nov 13, 2024

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

@Inconnu1337
Copy link
Contributor

@coderabbitai configuration

Copy link

coderabbitai bot commented Nov 13, 2024

CodeRabbit configuration
language: ru-RU
tone_instructions: ''
early_access: false
enable_free_tier: true
reviews:
  profile: chill
  request_changes_workflow: false
  high_level_summary: true
  high_level_summary_placeholder: '@coderabbitai summary'
  auto_title_placeholder: '@coderabbitai'
  review_status: true
  commit_status: true
  poem: true
  collapse_walkthrough: false
  sequence_diagrams: true
  changed_files_summary: true
  labeling_instructions: []
  path_filters:
    - '!**/*.png'
    - '!**/*.ogg'
  path_instructions:
    - path: '**/*.cs'
      instructions: |-
        Все изменения вне папок /ADT/
        должны быть прокомментированы
        примерно так
        //start-ADT tweak
        //end-ADT tweak
        так как изменения в официальном коде
  abort_on_close: true
  auto_review:
    enabled: false
    auto_incremental_review: false
    ignore_title_keywords: []
    labels: []
    drafts: false
    base_branches: []
  tools:
    shellcheck:
      enabled: true
    ruff:
      enabled: true
    markdownlint:
      enabled: true
    github-checks:
      enabled: true
      timeout_ms: 90000
    languagetool:
      enabled: true
      enabled_only: false
      level: default
      enabled_rules: []
      disabled_rules: []
      enabled_categories: []
      disabled_categories: []
    biome:
      enabled: true
    hadolint:
      enabled: true
    swiftlint:
      enabled: true
    phpstan:
      enabled: true
      level: default
    golangci-lint:
      enabled: true
    yamllint:
      enabled: true
    gitleaks:
      enabled: true
    checkov:
      enabled: true
    detekt:
      enabled: true
    eslint:
      enabled: true
    rubocop:
      enabled: true
    buf:
      enabled: true
    regal:
      enabled: true
    actionlint:
      enabled: true
    pmd:
      enabled: true
    cppcheck:
      enabled: true
    semgrep:
      enabled: true
    circleci:
      enabled: true
    ast-grep:
      packages: []
      rule_dirs: []
      util_dirs: []
      essential_rules: true
chat:
  auto_reply: true
knowledge_base:
  opt_out: false
  learnings:
    scope: auto
  issues:
    scope: auto
  jira:
    project_keys: []
  linear:
    team_keys: []
  pull_requests:
    scope: auto

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (2)
Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

24-27: Рекомендуется уточнить сообщения о действиях

Предлагаю сделать сообщения более информативными для пользователя.

Примените следующие изменения:

-cmd-admin_toggle-readmin = Вернуть права админу.
-cmd-admin_toggle-deadmin = Ввести в деадмин.
+cmd-admin_toggle-readmin = Административные права восстановлены.
+cmd-admin_toggle-deadmin = Административные права временно сняты.
Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

11-16: Добавьте XML документацию для класса

Класс реализован корректно, но рекомендуется добавить документацию для улучшения читаемости кода.

Предлагаю добавить:

+/// <summary>
+/// Команда для управления административными правами игроков.
+/// Позволяет временно снимать и восстанавливать права администратора.
+/// </summary>
[AdminCommand(AdminFlags.Permissions)]
public sealed class AdminToggleCommand : LocalizedCommands
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between bf88b78 and 0ab9dd4.

📒 Files selected for processing (3)
  • Content.Client/UserInterface/Systems/Info/InfoUIController.cs (1 hunks)
  • Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1 hunks)
  • Resources/Locale/ru-RU/ADT/administration/commands.ftl (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • Content.Client/UserInterface/Systems/Info/InfoUIController.cs
🧰 Additional context used
📓 Path-based instructions (1)
Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
//start-ADT tweak
//end-ADT tweak
так как изменения в официальном коде

🔇 Additional comments (2)
Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

21-23: Описание команды соответствует стандартам!

Описание команды и инструкция по использованию корректно описывают функциональность и синтаксис.

Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

1-7: ⚠️ Potential issue

Добавьте комментарии ADT tweak

Согласно руководству по написанию кода, все изменения вне папок /ADT/ должны быть обрамлены комментариями ADT tweak.

Добавьте следующие комментарии:

+//start-ADT tweak
using Content.Server.Administration.Managers;
using Content.Shared.Administration;
using Robust.Shared.Console;
using Content.Server.Administration;
using Robust.Server.Player;
using System.Linq;
+//end-ADT tweak

Likely invalid or redundant comment.

Copy link

coderabbitai bot commented Nov 13, 2024

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

В данном запросе на изменение кода было внесено несколько изменений. В классе InfoUIController в пространстве имен Content.Client.UserInterface.Systems.Info комментарий отключил регистрацию консольной команды "fuckrules". В то же время, был добавлен новый файл AdminToggleCommand.cs, который реализует команду для переключения административного статуса игроков с использованием консольного интерфейса. Также были обновлены локализации для новой команды admin_toggle, включая описание и сообщения об ошибках. Кроме того, в классе TipsSystem добавлена функциональность для логирования действий администраторов.

Changes

Файл Изменения
Content.Client/UserInterface/Systems/Info/InfoUIController.cs Закомментирована регистрация консольной команды "fuckrules" в методе Initialize.
Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs Добавлен класс AdminToggleCommand, реализующий команду "admin_toggle" для переключения статуса админа.
Resources/Locale/ru-RU/ADT/administration/commands.ftl Добавлены локализации для команды admin_toggle, включая описание, подсказки и сообщения об ошибках.
Content.Server/Tips/TipsSystem.cs Добавлена зависимость IAdminLogManager и функциональность логирования для команды tippy.
Content.Server/ADT/Administration/Commands/KickHideCommand.cs Добавлена зависимость IAdminManager и обновлена логика выполнения команды для улучшения обработки ошибок.
Content.Server/Administration/Managers/AdminManager.cs Закомментированы строки в методе Stealth, отключающие уведомления администраторов о статусе.
Content.Server/Administration/Managers/BanManager.cs Добавлена зависимость IAdminManager и проверка прав администратора в методе CreateServerBan.
Content.Server/Ghost/GhostSystem.cs Изменен импорт для компонентов Ghost с Content.Server.ADT.Ghost на Content.Shared.ADT.Ghost.
Content.Server/GhostKick/GhostKickManager.cs Добавлены зависимости IAdminManager и IAdminLogManager для улучшения функциональности команды.
Content.Server/Info/ShowRulesCommand.cs Добавлена зависимость IAdminManager и проверка прав администратора перед отправкой информации о правилах.
Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs Изменен пространство имен с Content.Server.ADT.Ghost на Content.Shared.ADT.Ghost.
Content.Shared/Follower/FollowerSystem.cs Добавлены проверки для взаимодействия с компонентами призраков в методах StartFollowingEntity и OnGetAlternativeVerbs.

Poem

В норке радости, веселья,
Команды новые, как в сказке,
Админы, будьте на чеку,
"readmin" и "deadmin" — в игру!
Мы весело играем,
С правилами теперь не скучаем! 🐇✨


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

24-24: Уточните подсказку для параметра

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

Предлагаю заменить на более информативную подсказку:

-cmd-admin_toggle-hint-duration = Значение
+cmd-admin_toggle-hint-duration = Укажите readmin для возврата прав или deadmin для их снятия
Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

1-74: Добавьте логирование административных действий

Рекомендуется добавить логирование для отслеживания изменений административного статуса:

  • Кто инициировал изменение
  • Кому изменили статус
  • Какое действие было выполнено (deadmin/readmin)
  • Временная метка

Это важно для:

  • Аудита безопасности
  • Отслеживания потенциальных злоупотреблений
  • Разрешения споров
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between bf88b78 and 0ab9dd4.

📒 Files selected for processing (3)
  • Content.Client/UserInterface/Systems/Info/InfoUIController.cs (1 hunks)
  • Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1 hunks)
  • Resources/Locale/ru-RU/ADT/administration/commands.ftl (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • Content.Client/UserInterface/Systems/Info/InfoUIController.cs
🧰 Additional context used
📓 Path-based instructions (1)
Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
//start-ADT tweak
//end-ADT tweak
так как изменения в официальном коде

🔇 Additional comments (5)
Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

21-28: Базовая реализация локализации выглядит хорошо

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

Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (4)

18-52: Исправьте ранее выявленные проблемы в методе Execute

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


54-73: Исправьте ранее выявленные проблемы в методе GetCompletion

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


1-13: ⚠️ Potential issue

Добавьте маркеры ADT для измененного кода

Согласно правилам кодирования, весь код вне папок /ADT/ должен быть обрамлен специальными комментариями.

Добавьте следующие маркеры в начало и конец файла:

+//start-ADT tweak
using Content.Server.Administration.Managers;
using Content.Shared.Administration;
...
public sealed class AdminToggleCommand : LocalizedCommands
{
...
}
+//end-ADT tweak

Likely invalid or redundant comment.


14-16: Проверьте регистрацию зависимостей

Зависимости помечены корректно, но необходимо убедиться, что они зарегистрированы в IoC контейнере.

✅ Verification successful

Зависимости зарегистрированы корректно

Проверка показала, что:

  • IPlayerLocator зарегистрирован в ServerContentIoC.cs
  • IPlayerManager является частью базового движка и доступен через стандартную регистрацию зависимостей
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Проверяем регистрацию IPlayerLocator и IPlayerManager
rg -A 5 "IPlayerLocator|IPlayerManager" | grep -i "register"

Length of output: 677


Script:

#!/bin/bash
# Проверяем регистрацию IPlayerManager
rg "IPlayerManager" Content.Server/IoC/ServerContentIoC.cs -A 5

Length of output: 63


Script:

#!/bin/bash
# Поиск регистрации IPlayerManager в других файлах
rg -g "*.cs" "IPlayerManager.*Register" -A 5

# Поиск реализации IPlayerManager
ast-grep --pattern 'class $_ : IPlayerManager'

Length of output: 95


Script:

#!/bin/bash
# Поиск файлов, связанных с PlayerManager
fd -e cs "PlayerManager"

# Поиск использования IPlayerManager в базовом движке
rg "IPlayerManager" -g "*.cs" -l

Length of output: 12510

@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 13, 2024
@Schrodinger71 Schrodinger71 added the In progress В процессе выполнения label Nov 14, 2024
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Outside diff range and nitpick comments (7)
Content.Server/ADT/Administration/Commands/KickHideCommand.cs (2)

Line range hint 13-16: Проверьте комментарии в коде

Комментарии содержат опечатку и неформальную лексику. Рекомендуется исправить текст комментария на более профессиональный.

-// Данная команда предназначена для глав проекта "Время Приключений" и позволяет тихо какать разрывая соединение пользователя.
+// Данная команда предназначена для администраторов проекта "Время Приключений" и позволяет тихо отключать пользователей.

Based on the analysis of the codebase, I can now provide a final response regarding the security concern about the kick_hide command:

Команда требует дополнительной проверки прав администратора

Текущая реализация проверяет только флаг AdminFlags.Permissions, но этого недостаточно для безопасного использования команды. Необходимо добавить проверку, что цель кика не имеет флага AdminFlags.Permissions, чтобы предотвратить использование команды против администраторов с высоким уровнем доступа.

Рекомендуемые изменения:

        if (!_playerManager.TryGetSessionByUsername(target, out var player))
        {
            shell.WriteError($"Unable to find player: '{target}'.");
            return;
        }
+       if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
+       {
+           shell.WriteError(Loc.GetString("cmd-kick_hide-admin-error"));
+           return;
+       }
        _ghostKickManager.DoDisconnect(player.Channel, "Smitten.");
🔗 Analysis chain

Line range hint 1-58: Проверка безопасности команды

Необходимо убедиться, что команда не может быть использована против администраторов с высоким уровнем доступа.

Рекомендуется добавить проверку уровня доступа цели перед выполнением кика:

         if (!_playerManager.TryGetSessionByUsername(target, out var player))
         {
             shell.WriteError(Loc.GetString("cmd-kick_hide-player-not-found", ("username", target)));
             return;
         }
+        if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
+        {
+            shell.WriteError(Loc.GetString("cmd-kick_hide-admin-error"));
+            return;
+        }
         _ghostKickManager.DoDisconnect(player.Channel, "Smitten.");

Запустим проверку использования команды:


Let me check the content of the localization file and look for any additional security measures in related admin commands:


Let me check one more thing about admin commands and permissions:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск всех мест использования команды kick_hide
rg -l "kick_hide" 

# Проверка наличия тестов
fd -e cs -e yaml "test.*kick.*hide"

Length of output: 172


Script:

#!/bin/bash
# Check localization file content
cat Resources/Locale/ru-RU/ADT/administration/commands.ftl

# Look for similar admin commands implementation
ast-grep --pattern 'class $_ : LocalizedCommands
{
    $$$
    Execute($$$)
    {
        $$$
        _adminManager$$$
        $$$
    }
}'

# Check GhostKickManager implementation
rg -A 5 "class GhostKickManager"

Length of output: 2587


Script:

#!/bin/bash
# Check for similar kick/ban commands implementation
rg -A 10 "\[AdminCommand\(AdminFlags" 

# Look for admin flags definition
rg "AdminFlags\." -A 3

Length of output: 338127

Content.Server/Info/ShowRulesCommand.cs (2)

19-19: Добавьте комментарии ADT-Tweak для новой зависимости

В соответствии с требованиями к кодированию, добавление новой зависимости должно быть обрамлено комментариями ADT-Tweak.

+    // ADT-Tweak-Start
     [Dependency] private readonly IAdminManager _adminManager = default!;
+    // ADT-Tweak-End

Обнаружено несоответствие в использовании флагов AdminFlags

В файле ShowRulesCommand.cs используются два разных флага:

  • Атрибут команды использует [AdminCommand(AdminFlags.Admin)]
  • Проверка в коде использует AdminFlags.Permissions

Рекомендуется использовать AdminFlags.Permissions в атрибуте команды, так как:

  • Этот флаг используется в других командах администрирования, связанных с управлением правами и разрешениями
  • Команды OpenPermissionsCommand, PlayTimeCommands, AdminToggleCommand и другие подобные используют именно этот флаг
  • Проверка в коде уже использует AdminFlags.Permissions
🔗 Analysis chain

Line range hint 13-13: Проверьте соответствие флага AdminFlags.Admin

Текущий атрибут [AdminCommand(AdminFlags.Admin)] использует флаг Admin, но в проверке используется флаг Permissions. Рекомендуется использовать одинаковые флаги для консистентности.


Let me generate additional verification to check the usage of AdminFlags.Admin:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск других использований AdminFlags.Permissions
rg "AdminFlags\.Permissions" -A 2 -B 2

Length of output: 4187


Script:

#!/bin/bash
# Поиск использований AdminFlags.Admin
rg "AdminFlags\.Admin" -A 2 -B 2

Length of output: 33541

Content.Server/GhostKick/GhostKickManager.cs (2)

78-89: Исправить грамматическую ошибку в сообщении об ошибке

В сообщении об ошибке есть грамматическая ошибка. Также рекомендуется использовать более формальный стиль для логирования.

Предлагаемые изменения:

- shell.WriteError($"You not permission for kick '{playerName}'.");
+ shell.WriteError($"You don't have permission to kick '{playerName}'.");

- $"[АДМИНАБУЗ] {shell.Player?.Name} used the command ghostkick on '{playerName}'."
+ $"{shell.Player?.Name} выполнил команду ghostkick для пользователя '{playerName}'."

78-89: Проверить использование ADT-Tweak маркеров

Маркеры ADT-Tweak корректно добавлены, но рекомендуется добавить более подробный комментарий о внесенных изменениях.

Предлагаемые изменения:

- // ADT-Tweak-start
+ // ADT-Tweak-start: Добавлена проверка прав администратора и логирование
Content.Server/Administration/Managers/BanManager.cs (1)

Line range hint 284-284: Удалить избыточный return

Оператор return в конце метода void является избыточным и может быть удален без изменения функциональности.

-        return; //ADT Tweak
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 52617ac and 65057f3.

📒 Files selected for processing (9)
  • Content.Server/ADT/Administration/Commands/KickHideCommand.cs (3 hunks)
  • Content.Server/Administration/Managers/AdminManager.cs (1 hunks)
  • Content.Server/Administration/Managers/BanManager.cs (3 hunks)
  • Content.Server/Ghost/GhostSystem.cs (1 hunks)
  • Content.Server/GhostKick/GhostKickManager.cs (3 hunks)
  • Content.Server/Info/ShowRulesCommand.cs (3 hunks)
  • Content.Server/Tips/TipsSystem.cs (3 hunks)
  • Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs (1 hunks)
  • Content.Shared/Follower/FollowerSystem.cs (2 hunks)
✅ Files skipped from review due to trivial changes (3)
  • Content.Server/Administration/Managers/AdminManager.cs
  • Content.Server/Ghost/GhostSystem.cs
  • Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs
🚧 Files skipped from review as they are similar to previous changes (1)
  • Content.Server/Tips/TipsSystem.cs
🧰 Additional context used
📓 Path-based instructions (5)
Content.Server/ADT/Administration/Commands/KickHideCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Administration/Managers/BanManager.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/GhostKick/GhostKickManager.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Info/ShowRulesCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Shared/Follower/FollowerSystem.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

🔇 Additional comments (5)
Content.Server/ADT/Administration/Commands/KickHideCommand.cs (1)

7-7: Добавление IAdminManager для управления правами

Добавление зависимости IAdminManager улучшает контроль над правами администраторов, что соответствует требованиям безопасности.

Also applies to: 20-20

Content.Server/GhostKick/GhostKickManager.cs (2)

8-10: LGTM: Корректное добавление необходимых зависимостей

Импорты для IAdminManager и IAdminLogManager логично дополняют функционал.


53-54: LGTM: Правильное внедрение зависимостей

Зависимости корректно внедрены с использованием атрибута [Dependency].

Content.Shared/Follower/FollowerSystem.cs (1)

20-21: Добавление необходимой зависимости

Добавление пространства имен для работы с HideGhostWarpComponent соответствует требованиям PR.

Content.Server/Administration/Managers/BanManager.cs (1)

43-43: Корректное добавление зависимости

Зависимость IAdminManager добавлена согласно существующему паттерну внедрения зависимостей в классе.

Content.Server/Info/ShowRulesCommand.cs Show resolved Hide resolved
Content.Shared/Follower/FollowerSystem.cs Show resolved Hide resolved
Comment on lines 139 to 145
// ADT-Tweak-Start
if (targetUsername != null && _playerManager.TryGetSessionByUsername(targetUsername, out var player))
{
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
return;
}
// ADT-Tweak-End
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Необходимо добавить логирование при попытке бана администратора

Текущая реализация тихо прерывает выполнение при попытке забанить пользователя с флагом Permissions. Рекомендуется добавить логирование такой попытки для целей аудита.

Предлагаемые изменения:

 // ADT-Tweak-Start
 if (targetUsername != null && _playerManager.TryGetSessionByUsername(targetUsername, out var player))
 {
     if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
+    {
+        _sawmill.Warning($"Attempted to ban user {targetUsername} with Permissions flag by {banningAdmin}");
         return;
+    }
 }
 // ADT-Tweak-End
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// ADT-Tweak-Start
if (targetUsername != null && _playerManager.TryGetSessionByUsername(targetUsername, out var player))
{
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
return;
}
// ADT-Tweak-End
// ADT-Tweak-Start
if (targetUsername != null && _playerManager.TryGetSessionByUsername(targetUsername, out var player))
{
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
_sawmill.Warning($"Attempted to ban user {targetUsername} with Permissions flag by {banningAdmin}");
return;
}
}
// ADT-Tweak-End

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Outside diff range and nitpick comments (6)
Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

25-26: Добавить сообщения об успешном выполнении

Рекомендуется добавить сообщения, подтверждающие успешное выполнение команды.

cmd-admin_toggle-readmin = Вернуть права админу.
cmd-admin_toggle-deadmin = Ввести в деадмин.
+cmd-admin_toggle-success-readmin = Права администратора успешно возвращены для {$user}.
+cmd-admin_toggle-success-deadmin = Пользователь {$user} успешно переведен в деадмин.
Content.Server/ADT/Administration/Commands/KickHideCommand.cs (1)

Line range hint 1-63: Добавьте маркеры ADT-Tweak

Согласно правилам кодирования, все изменения вне папок /ADT/ должны быть обрамлены комментариями ADT-Tweak.

Добавьте следующие комментарии в начало и конец измененных участков кода:

+ // ADT-Tweak-Start
 [Dependency] private readonly IAdminManager _adminManager = default!;
+ // ADT-Tweak-End

...

+ // ADT-Tweak-Start
 var players = IoCManager.Resolve<IPlayerManager>();
 if (!players.TryGetSessionByUsername(target, out var player))
 {
     shell.WriteError($"Unable to find player: '{target}'.");
     return;
 }
 _ghostKickManager.DoDisconnect(player.Channel, "Smitten.");
+ // ADT-Tweak-End
Content.Server/Administration/Managers/BanManager.cs (1)

140-144: Улучшить проверку прав администратора

Текущая реализация может быть улучшена для большей надежности и читаемости.

Предлагаемые изменения:

 if (targetUsername != null && _playerManager.TryGetSessionByUsername(targetUsername, out var player))
 {
-    if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
+    if (player != null && _adminManager.HasAdminFlag(player, AdminFlags.Permissions))
+    {
         return;
+    }
 }
Content.Server/Ghost/GhostSystem.cs (3)

39-39: Изменение пространства имен для Ghost компонентов

Перенос компонентов из Server в Shared пространство имен улучшает архитектуру, делая компоненты доступными как для сервера, так и для клиента.


Line range hint 300-303: Добавлена защита от преследования призраками

Реализована проверка на наличие HideGhostWarpComponent, которая предотвращает телепортацию призраков к защищенным сущностям. Комментарий в коде указывает на намерение ограничить возможности призраков.

Предлагаю улучшить читаемость кода:

-if (HasComp<HideGhostWarpComponent>(target)) return;    // ADT TWEAK: НАХЕР ГОСТОВ ЗАЕБАЛИ,
-                                                    // не сможет тепнуться к нему так как вышли из функции
-                                                    // если цель "target" имеет HideGhostWarp Comp
+// Prevent ghosts from warping to protected entities
+if (HasComp<HideGhostWarpComponent>(target))
+    return;

Line range hint 589-593: Добавлена кастомизация типа урона при попытке стать призраком

Реализована возможность настройки типа урона через компонент OnGhostAttemtpDamageComponent. Комментарий указывает на специфичность этого изменения.

Предлагаю исправить опечатку в названии компонента и улучшить комментарий:

-// START-ADT-TWeak: Это блять ебучий щиткод для ХорниМух, Котька не кусай меня пожажуста >~<
-if (TryComp<OnGhostAttemtpDamageComponent>(playerEntity, out var damageComp))
+// Customizable damage type for specific entities when attempting to ghost
+if (TryComp<OnGhostAttemptDamageComponent>(playerEntity, out var damageComp))
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 8b1c3bc and 65057f3.

📒 Files selected for processing (12)
  • Content.Client/UserInterface/Systems/Info/InfoUIController.cs (1 hunks)
  • Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1 hunks)
  • Content.Server/ADT/Administration/Commands/KickHideCommand.cs (3 hunks)
  • Content.Server/Administration/Managers/AdminManager.cs (1 hunks)
  • Content.Server/Administration/Managers/BanManager.cs (3 hunks)
  • Content.Server/Ghost/GhostSystem.cs (1 hunks)
  • Content.Server/GhostKick/GhostKickManager.cs (3 hunks)
  • Content.Server/Info/ShowRulesCommand.cs (3 hunks)
  • Content.Server/Tips/TipsSystem.cs (3 hunks)
  • Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs (1 hunks)
  • Content.Shared/Follower/FollowerSystem.cs (2 hunks)
  • Resources/Locale/ru-RU/ADT/administration/commands.ftl (1 hunks)
🧰 Additional context used
📓 Path-based instructions (11)
Content.Client/UserInterface/Systems/Info/InfoUIController.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/ADT/Administration/Commands/KickHideCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Administration/Managers/AdminManager.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Administration/Managers/BanManager.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Ghost/GhostSystem.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/GhostKick/GhostKickManager.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Info/ShowRulesCommand.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Server/Tips/TipsSystem.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

Content.Shared/Follower/FollowerSystem.cs (1)

Pattern **/*.cs: Все изменения вне папок /ADT/
должны быть прокомментированы
примерно так
// ADT-Tweak-Start
// ADT-Tweak-End
так как изменения в официальном коде

🔇 Additional comments (18)
Content.Shared/ADT/Ghost/HideGhostWarpComponent.cs (1)

Line range hint 1-10: Изменения выглядят корректно!

Перенос компонента в пространство имен Shared логичен, так как функциональность должна быть доступна как на сервере, так и на клиенте. Документация и реализация компонента соответствуют требованиям.

Давайте проверим использование компонента в кодовой базе:

Resources/Locale/ru-RU/ADT/administration/commands.ftl (1)

27-28: ⚠️ Potential issue

Добавить сообщения для всех случаев ошибок

Отсутствуют сообщения об ошибках для случаев недостаточных прав и попытки отзыва прав у защищенных пользователей.

cmd-admin_toggle-error-args = Указанный пользователь не найден.
+cmd-admin_toggle-error-protected = Невозможно отозвать права у пользователя с особыми разрешениями.
+cmd-admin_toggle-error-no-permission = У вас недостаточно прав для использования этой команды.
+cmd-admin_toggle-error-invalid-action = Неверное действие. Используйте readmin или deadmin.

Likely invalid or redundant comment.

Content.Server/ADT/Administration/Commands/KickHideCommand.cs (1)

41-47: Предыдущий комментарий всё ещё актуален

Проблемы с повторным разрешением IPlayerManager и нелокализованным сообщением об ошибке, отмеченные в предыдущем обзоре, всё ещё присутствуют.

Content.Server/Info/ShowRulesCommand.cs (2)

9-9: LGTM: Добавление зависимости IAdminManager

Корректное внедрение зависимости для проверки прав администратора.

Also applies to: 19-19


62-66: Предыдущий комментарий всё ещё актуален

Проблемы с логикой проверки прав администратора и отсутствием маркеров ADT-Tweak были отмечены в предыдущем обзоре кода и до сих пор не исправлены.

Content.Server/ADT/Administration/Commands/AdminToggleCommand.cs (4)

1-17: Корректное объявление класса и зависимостей!

Структура класса и зависимости определены правильно, следуя стандартному шаблону административных команд.


18-52: Предыдущие замечания по методу Execute все еще актуальны

Необходимо исправить проблемы, указанные в предыдущем обзоре кода.


54-73: Предыдущие замечания по методу GetCompletion все еще актуальны

Необходимо исправить проблемы, указанные в предыдущем обзоре кода.


1-75: Файл соответствует требованиям ADT

Поскольку файл находится в директории ADT, маркеры ADT-Tweak не требуются.

Content.Server/GhostKick/GhostKickManager.cs (2)

8-10: Корректное добавление зависимостей!

Зависимости для управления администраторами и логирования добавлены правильно.


84-88: Предыдущий комментарий о null-обработке все еще актуален

Content.Server/Tips/TipsSystem.cs (2)

15-16: Корректное добавление директив using!

Добавленные директивы необходимы для работы с системой логирования административных действий.


33-33: Правильное внедрение зависимости для логирования!

Зависимость IAdminLogManager добавлена в соответствии с существующим паттерном внедрения зависимостей.

Content.Shared/Follower/FollowerSystem.cs (2)

20-21: Импорты корректны!

Добавленные пространства имен необходимы для работы с HideGhostWarpComponent и TimedDespawnComponent.


154-161: Предыдущие замечания по реализации все еще актуальны

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

Content.Server/Administration/Managers/BanManager.cs (1)

139-139: Корректное использование ADT-Tweak маркеров

Маркеры правильно обрамляют изменения в соответствии с требованиями руководства по написанию кода.

Also applies to: 145-145

Content.Server/Administration/Managers/AdminManager.cs (1)

115-118: ⚠️ Potential issue

Проверьте влияние отключения уведомлений о входе в скрытый режим

Отключение уведомлений о входе администратора в скрытый режим может негативно повлиять на прозрачность действий администраторов и их подотчетность. Рекомендуется:

  1. Сохранить хотя бы уведомление для самого администратора
  2. Рассмотреть добавление логирования этих действий
Content.Server/Ghost/GhostSystem.cs (1)

Line range hint 498-506: Добавлена логика создания полтергейста

Реализована специальная обработка для сущностей с компонентом PotentialPoltergeistComponent, которые превращаются в полтергейст вместо обычного призрака.

Давайте проверим использование прототипа "ADTMobPoltergeist":

✅ Verification successful

Let's examine the poltergeist prototype content and related code to verify the implementation.


Let's check the specific implementation of poltergeist-related logic in GhostSystem:


Логика создания полтергейста подтверждена и корректно реализована

Проверка показала, что:

  • Прототип ADTMobPoltergeist существует и правильно сконфигурирован
  • В GhostSystem реализована специальная обработка для сущностей с PotentialPoltergeistComponent
  • При попытке стать призраком, сущность с этим компонентом превращается в полтергейст вместо обычного призрака
  • Полтергейст имеет все необходимые компоненты и системы для корректной работы
🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if the poltergeist prototype exists and its configuration
rg -l "ADTMobPoltergeist" --type yaml

Length of output: 99


Script:

#!/bin/bash
# Check the poltergeist prototype content
cat Resources/Prototypes/ADT/Entities/Mobs/Player/poltergeist.yml

# Search for PotentialPoltergeistComponent usage
rg -g "*.cs" "PotentialPoltergeistComponent"

# Search for poltergeist-related logic in GhostSystem
ast-grep --pattern 'public bool OnGhostAttempt($$$) { $$$ }'

Length of output: 2133


Script:

#!/bin/bash
# Check the GhostSystem implementation around poltergeist logic
rg -g "*.cs" -B 5 -A 10 "PotentialPoltergeistComponent"

# Check PoltergeistSystem implementation
cat Content.Server/ADT/Poltergeist/Systems/PoltergeistSystem.cs

Length of output: 11980

Comment on lines 79 to 83
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
shell.WriteError($"You not permission for kick '{playerName}'.");
return;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Исправьте грамматику в сообщении об ошибке

Текущее сообщение содержит грамматические ошибки.

Предлагаю следующие изменения:

-            shell.WriteError($"You not permission for kick '{playerName}'.");
+            shell.WriteError($"У вас нет прав для кика пользователя '{playerName}'.");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
shell.WriteError($"You not permission for kick '{playerName}'.");
return;
}
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
shell.WriteError($"У вас нет прав для кика пользователя '{playerName}'.");
return;
}

Comment on lines 78 to 89
// ADT-Tweak-start
if (_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
shell.WriteError($"You not permission for kick '{playerName}'.");
return;
}
_adminLogger.Add(
LogType.AdminMessage,
LogImpact.Low,
$"[АДМИНАБУЗ] {shell.Player?.Name} used the command ghostkick on '{playerName}'."
);
// ADT-Tweak-end
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Обнаружено некорректное использование проверки прав

Проверка AdminFlags.Permissions в файле GhostKickManager.cs используется неправильно - она запрещает действие при наличии прав вместо их требования. Это противоречит логике работы других административных команд в кодовой базе.

  • В файле Content.Server/GhostKick/GhostKickManager.cs проверка прав должна быть инвертирована:
if (!_adminManager.HasAdminFlag(player, AdminFlags.Permissions))
{
    shell.WriteError($"You not permission for kick '{playerName}'.");
    return;
}
🔗 Analysis chain

Проверьте согласованность проверок прав

Необходимо убедиться, что аналогичные административные команды используют согласованный подход к проверке прав.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Поиск похожих административных команд и их проверок прав
ast-grep --pattern 'AdminCommand(AdminFlags.$_)
public sealed class $_Command : IConsoleCommand
{
  $$$
  _adminManager.HasAdminFlag($_, AdminFlags.$_)
  $$$
}'

Length of output: 162


Script:

#!/bin/bash
# Search for admin command classes and their permission checks
rg -U "AdminCommand.*AdminFlags\." -A 5

# Search for HasAdminFlag usage patterns
rg "_adminManager\.HasAdminFlag" -A 2 -B 2

# Search for other ghost-related commands
rg "class.*Command.*ghost" -A 5

Length of output: 139095


Script:

#!/bin/bash
# Search for ghost-related commands and their permission checks
rg -U "class.*GhostKick.*Command" -A 10 -B 2

# Search for similar permission checks in admin commands
rg "HasAdminFlag.*Permissions" -A 2 -B 2

# Search for admin flag declarations
rg "AdminFlags\.Permissions" -A 2 -B 2

Length of output: 6731

Comment on lines 37 to 43
// _consoleHost.RegisterCommand("fuckrules", // ADT COmment
// "",
// "",
// (_, _, _) =>
// {
// OnAcceptPressed();
// });
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Требуется добавить комментарии ADT-Tweak

Отключение команды "fuckrules" соответствует целям PR. Однако, согласно руководству по кодированию, изменения вне папок /ADT/ должны быть обрамлены специальными комментариями.

Примените следующие изменения:

+        // ADT-Tweak-Start
         // _consoleHost.RegisterCommand("fuckrules", // ADT COmment
         //     "",
         //     "",
         //     (_, _, _) =>
         // {
         //     OnAcceptPressed();
         // });
+        // ADT-Tweak-End
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// _consoleHost.RegisterCommand("fuckrules", // ADT COmment
// "",
// "",
// (_, _, _) =>
// {
// OnAcceptPressed();
// });
// ADT-Tweak-Start
// _consoleHost.RegisterCommand("fuckrules", // ADT COmment
// "",
// "",
// (_, _, _) =>
// {
// OnAcceptPressed();
// });
// ADT-Tweak-End

Content.Server/Tips/TipsSystem.cs Show resolved Hide resolved
Comment on lines 115 to 118
// ADT Tweak commented
// _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-stealthed-message"));
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-de-admin-message", ("exAdminName", session.Name)), AdminFlags.Stealth);
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-enable-stealth", ("stealthAdminName", session.Name)), flagWhitelist: AdminFlags.Stealth);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Добавьте маркеры ADT-Tweak

Согласно правилам кодирования, изменения вне папок ADT должны быть обрамлены маркерами ADT-Tweak.

Примените следующие изменения:

+            // ADT-Tweak-Start
             // ADT Tweak commented
             // _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-stealthed-message"));
             // _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-de-admin-message", ("exAdminName", session.Name)), AdminFlags.Stealth);
             // _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-enable-stealth", ("stealthAdminName", session.Name)), flagWhitelist: AdminFlags.Stealth);
+            // ADT-Tweak-End
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// ADT Tweak commented
// _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-stealthed-message"));
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-de-admin-message", ("exAdminName", session.Name)), AdminFlags.Stealth);
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-enable-stealth", ("stealthAdminName", session.Name)), flagWhitelist: AdminFlags.Stealth);
// ADT-Tweak-Start
// ADT Tweak commented
// _chat.DispatchServerMessage(session, Loc.GetString("admin-manager-stealthed-message"));
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-de-admin-message", ("exAdminName", session.Name)), AdminFlags.Stealth);
// _chat.SendAdminAnnouncement(Loc.GetString("admin-manager-self-enable-stealth", ("stealthAdminName", session.Name)), flagWhitelist: AdminFlags.Stealth);
// ADT-Tweak-End

@Schrodinger71
Copy link
Collaborator Author

            {
                var dbData = await _dbManager.GetAdminDataForAsync(session.UserId);

                if (dbData == null)
                {
                    // Not an admin!
                    return null;
                }

                var flags = AdminFlags.None;

                if (dbData.AdminRank != null)
                {
                    flags = AdminFlagsHelper.NamesToFlags(dbData.AdminRank.Flags.Select(p => p.Flag));
                }

                foreach (var dbFlag in dbData.Flags)
                {
                    var flag = AdminFlagsHelper.NameToFlag(dbFlag.Flag);
                    if (dbFlag.Negative)
                    {
                        flags &= ~flag;
                    }
                    else
                    {
                        flags |= flag;
                    }
                }

                var data = new AdminData
                {
                    Flags = flags
                };

                if (dbData.Title != null  && _cfg.GetCVar(CCVars.AdminUseCustomNamesAdminRank))
                {
                    data.Title = dbData.Title;
                }
                else if (dbData.AdminRank != null)
                {
                    data.Title = dbData.AdminRank.Name;
                }

                return (data, dbData.AdminRankId, false);
            }
            ```

Copy link
Collaborator

@FaDeOkno FaDeOkno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Убирать fuckrules я смысла не вижу
  • Нельзя забанить человека с правами? Что-то мне не очень такое нравится

@Schrodinger71
Copy link
Collaborator Author

Schrodinger71 commented Nov 15, 2024

  • Убирать fuckrules я смысла не вижу
  • Нельзя забанить человека с правами? Что-то мне не очень такое нравится

Факрул
Просили давно убрать все, от игроков

Да. Permission права укрепляются. 1984. Для обеспечения безопасности

@Schrodinger71
Copy link
Collaborator Author

@jungarikjan хочет безопасности от чрезвычайных случаев
Да и я считаю для подстраховки такое неплохо

@Schrodinger71 Schrodinger71 dismissed FaDeOkno’s stale review November 15, 2024 10:48

Не оправдано

@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@AdventureTimeSS14 AdventureTimeSS14 deleted a comment from coderabbitai bot Nov 15, 2024
@jungarikjan
Copy link
Contributor

@FaDeOkno нельзя банить Петра, Эйдана, Кураторов и Пангу
я думаю это важно, ибо они основа сервера, считай
и если недоброжелатель забанит всех игроков и админов, то хоть их оставит
помимо хоста

@Schrodinger71
Copy link
Collaborator Author

Schrodinger71 commented Nov 15, 2024

@FaDeOkno нельзя банить Петра, Эйдана, Кураторов и Пангу
я думаю это важно, ибо они основа сервера, считай
и если недоброжелатель забанит всех игроков и админов, то хоть их оставит
помимо хоста

Плюс добавлю, что голосование за бан пользователя я ни трогал, им можно забанить в любом случае

@Schrodinger71 Schrodinger71 merged commit a013142 into AdventureTimeSS14:master Nov 16, 2024
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: Localization Изменение локализации In progress В процессе выполнения
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants