«Альтернативное» имя пользователя или псевдоним?

Не уверен, что это лучшая категория, извините, если нет.

Наши пользователи выдвинули довольно необычную просьбу, с которой я раньше не сталкивался. По сути, они хотят иметь специальные категории для проведения конкурсов написания текстов. Они хотят создавать «алиасы» или альтернативные имена пользователей, которые автоматически используются при публикации в теме, а в определённый момент эти альтернативные имена «раскрываются», показывая их «родительское» имя пользователя после срабатывания триггера (вручную или по истечении определённого времени/даты). Я знаю, что у администраторов есть возможность имперсонифицировать пользователей (в некотором роде), а система может автоматически создавать анонимные имена пользователей, так что, похоже, есть хотя бы намёки на поддержку подобной функциональности? Пользователи могут выбрать вход в анонимный режим, а что насчёт выбора публикации от имени своего «другого» имени пользователя?

Почему пользователи не могут зарегистрировать новые альтернативные аккаунты? Не знаю. Я задал тот же вопрос. Я просто спрашиваю вас, что спросили меня. Думаю, они считают этот дополнительный шаг регистрации нового альтернативного аккаунта (поскольку для каждого конкурса они должны публиковаться от имени другого пользователя на протяжении всего конкурса) раздражающим. Они не хотят иметь дело с несколькими входами в систему. :man_shrugging:

1 лайк

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

Остальные функции, судя по всему, очень специфичны для вашего сайта, поэтому мы, вероятно, не будем их реализовывать. Вам потребуется создать собственный плагин.

4 лайка

Да, я в курсе анонимного режима, но пользователи отвергли его как вариант. Они хотят иметь возможность выбирать определённые категории, где все их посты автоматически публикуются под их «псевдонимом» или альтернативным именем пользователя. Они хотят создавать такие псевдонимы, потому что им нравится придумывать забавные имена и так далее.

Похоже, логика для этого где-то есть в базе кода, я просто не знаю где. Думаю, мне нужно найти часть Discourse, отвечающую за создание имён пользователей, и сделать её доступной как опцию в настройках профиля, предоставив пользователям возможность задать псевдоним (по аналогии с тем, как они могут указать своё имя или никнейм). Затем, когда они находятся в определённых категориях, все их посты будут отображаться как написанные этим псевдонимом.

1 лайк

Обходным путем могло бы стать добавление возможности вводить «полное имя» для вашего «анонимного аккаунта». Скорее всего, «anon123» — это никнейм. Если бы можно было добавить поле для полного имени в настройках, которое можно было бы менять, это решило бы вашу задачу. Вам нужно будет убедить команду внедрить такую функцию или найти кого-то, кто сможет сделать это за вас (возможно, через плагин?).

Или, что ещё проще: ваши пользователи уже представляют себе решение. Но если вам удастся убедить их, что они всё ещё могут выбрать имя и использовать его для подписи своего сообщения (внутри самого сообщения) и/или разместить имя в начале поста, то анонимный режим будет работать так, как задумано.

1 лайк

Если вас не беспокоит, что люди могут жульничать, просматривая содержимое JavaScript, то теоретически это можно реализовать с помощью компонента темы. Вам нужно будет просто настроить его так, чтобы он скрывал информацию об именах пользователей в этой теме во время игры. Однако люди всё равно смогут посмотреть загрузку JSON и узнать, кто есть кто.

1 лайк

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

2 лайка

Да, это сработает. Читерство не будет проблемой. Как бы вы это сделали?

1 лайк

Что-то вроде этого:

.category-support .topic-meta-data {
    display: none;
}

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

1 лайк

А, понятно. Но это не решает проблему разрешения пользователям создавать свои собственные псевдонимы.

3 лайка

Нет, это сделало бы всех анонимными до момента разоблачения.

Чтобы дать людям альтернативное эго, всё было бы сложнее. Я полагаю, можно было бы использовать пользовательское поле и, возможно, вставлять их туда? Или, возможно, для этого потребуется плагин.

2 лайка

Я думаю, что решение может заключаться в создании отдельного поля, как это реализовано для «Реального имени», а затем при публикации скрывать всё, кроме этого элемента. Но, surely, это нужно включать как плагин, чтобы можно было контролировать, в каких категориях применять такое поведение?

EDIT: ну, нет, можно использовать CSS, чтобы скрыть всё, кроме псевдонима?

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

2 лайка

@dmitry_fedyuk, что вы думаете по этому поводу? Похоже, вы были близки к решению, когда писали плагин «Real Name».

1 лайк

Так что это сработает для нас при текущей реализации анонимного режима, если пользователи смогут менять своё имя профиля. Но, похоже, при входе в анонимный режим изменить имя профиля нельзя. Кто-нибудь знает, как это исправить?

РЕДАКТИРОВАНИЕ:
Хорошо, похоже, анонимные пользователи РАНЬШЕ могли это делать, но это было «исправлено» здесь:

Есть ли где-то локальная настройка или файл, который я могу изменить? Поиск файла ‘user_guardian.rb’ выдаёт кучу Docker-материалов:

leigh@ip-10-0-1-36:/var/discourse$ sudo find / -name user_guardian.rb 
/var/lib/docker/overlay2/f62c3c9258dac2925fbc591af67f3bcd3518fb96e668a3ffc94e7fd4fca35f39/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/563d960aacb7f28cec7c4b9886236f8f247591d5f73d5f92e265f9d77f2a5445/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/ecc385f4fb621a8a3c3008a351c217b5a91ec420b80db237c8c14ba2e241d038/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/eeb535fc00ee34dcc9f7e4fb4047e7d8a23141ac4c8f6468cdbdbf3d14d3a1ad/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/bb114e9baa39415ec62c47e933c8eab85c1e278d79f072949584abfd0040f45a/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/673e87a4d858d683f27c06edaf729bca82e6e042e0318bb15190fb330f4d8031/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/e1b2c1576c7154af9291434dfb8dad195d997cd3aadd5c67ef545096311c7107/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/ea0d7890bdcd81546dcae4353d2f0af63a01f50e2f385db5e624a48602b39879/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/e9ef214eafac6b3a32379100fb36a3698a590390e32cf16c4155ea82cc8d8841/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/d23bb55087cbe07d9f9dc4632fa2525c3c9d1ebb4f51f1b1c4f843bf8dec37b5/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/259256e9a8215361c8d471f64a949958e628edba94d2e6591d7ef8abc75c927a/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/d1411fa7a8680d0cc5d40aa3075c5ac7d5950e82e7dea0a534110190b860e849/merged/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/1234accbd49100b334889bc47b23ac0c64dab34c4985101c3e0e269e823babd7/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/7962d862842f2a8c2925c863a1533d5920db238e160c234de0251d3f9665a5d2/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/dab289af1e1cb737816ca9159f527c32c967b37005b610c9a6a0203ea1c608d8/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/bc09dc89afd8921a5f0d5e5986d912827c73358b570a3c8c3da72fa2b58198b0/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/282f26acb8ef45bdee1d3decfa7e17e4c88aa9072c19aa976e4c33f5d9caad03/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/d5f9c17847317ee6b4a1702946fe4efd9b369385afcdc0deafff2a256c733c8f/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/becf6ebe2a176238f8ab7ae735e6b07e32103d3e9144121c13597e5a3021248c/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/55dc00aca76400b4c6d7642e2c991994da5b98e8abc39d8e4763ce03ee897219/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/f35b9cc8f45c891dfe7f895e60706d6037780498a85c663f4f9ab93126c310ae/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/8af8eca6f96f76652ca557dff3fb98e5644b842d02a650b26aebe2415c839687/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/78b2656a2b932c19c926feb1ae737fe8460e15854bfac6d036e0ec3a2316b38a/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/87b4eff503dba027e92d09544d9dea603fd4bafcf15f7bb08b41ed4a4f4f58e5/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/d12aa1b6fba07aaeb889379338a87644cabd74f31a48d6650834065d9993b7cf/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/742ef3325b4e8768587c1fd4ba6b0c578ed2373a0a29a758bf96cd8165b9f855/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/7d28921013c9077d83b8b92a9181617a4dab4648f5fc4df700afd20642b41332/diff/var/www/discourse/lib/guardian/user_guardian.rb
/var/lib/docker/overlay2/c376b69b3f312c28d6521271c6cb74b120060547aabfbbb1b451df30f82caea5/diff/var/www/discourse/lib/guardian/user_guardian.rb

Думаю, я мог бы форкнуть ядро, внести эти изменения самостоятельно и затем выполнить собственную установку…? Surely surely должен быть более простой способ?

В идеале администратор мог бы отметить/снять отметку с опции, разрешающей или запрещающей анонимным пользователям изменять эти значения. @maja, у тебя есть какие-то мысли по этому поводу?

1 лайк

Сколько у вас категорий, где пользователям захочется использовать альтернативные персонажи?

1 лайк

Пару штук?
Режим анонимности подойдет для этой цели, мне только нужно разобраться, как разрешить пользователям редактировать своё имя профиля с «anonymous123» на то, которое они хотят. Я нашёл коммит, где это было изменено, и это настройка в файле user_guardian.rb, но я не уверен, как переопределить или изменить её, не форкая ядро. В идеале это должно быть реализовано либо через плагин, либо через настройку конфигурации.

2 лайка