لا يمكن إضافة مستخدم في الوضع المجهول إلى مجموعة تلقائيًا

مرحبًا بالجميع!

أنا أدير منتدى باستخدام Discourse 2.6.0beta3، وأعتقد أنني عثرت على خطأ.

أحاول إضافة مستخدمين مجهولين إلى مجموعة باسم anons، حتى أتمكن من تقييد مشاركاتهم في بعض الفئات المحددة. قمت بإعداد المجموعة anons لإضافة المستخدمين تلقائيًا بناءً على نطاق البريد الإلكتروني anon.mydomain.

عندما أدخل وضع التصفح المجهول، أجد أن حسابي المجهول لم يُضاف إلى المجموعة. ومع ذلك، إذا نقرت على زر حفظ التغييرات في /g/anons/manage/membership، يتم إضافة حسابي المجهول إلى هذه المجموعة. كل ما أريده هو إضافة المستخدم المجهول إلى هذه المجموعة عند الدخول في وضع التصفح المجهول، دون الحاجة إلى النقر يدويًا.

لقد بحثت عن هذا الخطأ ولكن لم أجد أي معلومات مفيدة. شكرًا لقراءتكم!

إعجاب واحد (1)

يمكنني تكرار ما تجده عند دخول المستخدم في الوضع المجهول. لجعل المستخدم يُضاف تلقائيًا إلى مجموعة بناءً على نطاق البريد الإلكتروني المجهول، يتعيّن عليّ الانتقال إلى صفحة إدارة المجموعة المجهولة وحفظ الإعدادات.

لا أضمن ما إذا كان من المتوقع أن يعمل إضافة المستخدمين المجهولين إلى مجموعة بناءً على نطاق البريد الإلكتروني المجهول. ومع ذلك، أرى أن وجود جميع المستخدمين المجهولين في مجموعة فكرة مفيدة. وقد تم اقتراح نهج إضافة المستخدمين المجهولين إلى مجموعة بناءً على نطاق بريدهم الإلكتروني عدة مرات على Meta. وهناك نهج بديل يتمثل في إضافة إعداد “مجموعة وضع مجهول” يقوم تلقائيًا بإضافة جميع المستخدمين المجهولين إلى مجموعة مختارة.

دعنا نرى ما إذا كانت هذه وظيفة يريد Discourse دعمها قبل تحديد ما إذا كانت عيبًا أم لا.

3 إعجابات

أعتقد أنه من المحفوف بالمخاطر الاعتماد على البريد الإلكتروني المجهول لهذه الوظيفة. أعتقد أننا يمكن أن ننظر في إنشاء مجموعة تلقائية أخرى للمستخدمين المجهولين وإضافتهم إليها تلقائيًا.

ومع ذلك، لا أعتبر هذا خللاً، لذا أعيد تصنيفه.

3 إعجابات

مرحبًا، هذا الموضوع يتعلق بمشكلة أواجهها في منتدى أساعد في إعداده وإدارته. بعض السياق: يتطلب المنتدى أن يدفع الأشخاص للانضمام ك مستخدمين يمكنهم النشر. نريد أيضًا أن يتمكن الأعضاء المدفوعون الذين يمتلكون مستوى ثقة معين من النشر بشكل مجهول عن طريق التبديل إلى وضع المجهولية. بالإضافة إلى ذلك، نريد أن يتمكن الجميع من قراءة المحتوى (باستثناء المحتوى المخصص للموظفين فقط، بالطبع).

كما أفهم، فإن المستخدمين المجهولين يُدرجون تلقائيًا ضمن مجموعة مستخدمين “الجميع”. إذا أردنا السماح للعالم كله بالنشر في المنتدى، فلن تكون هناك مشكلة في عدم قدرة المجهولين على النشر. ومع ذلك، وبما أن المنتدى مدفوع، فقد قمنا بتعيين مجموعة مستخدمين “الجميع” لتكون للقراءة فقط، بحيث يتمكن العالم من القراءة ولكن لا يمكنه النشر.

ما زلنا نرغب في تمكين المستخدمين الذين يمتلكون مستوى الثقة المطلوب من النشر بشكل مجهول. كانت الحل المقصود هو إعداد مجموعة مستخدمين مجهولين مع إذن لنشر المنشورات وإضافة الأشخاص بناءً على نطاق البريد الإلكتروني المجهول الذي نستخدمه في المنتدى. ومع ذلك، فإن الجانب التلقائي للإضافة لا يعمل — يجب على المسؤول الانتقال إلى مجموعة المستخدمين المجهولين وحفظ التغييرات ليتم إضافة المجهولين فعليًا. هذا أمر مزعج ويعطل التدفق الذي نرغب فيه، وهو أن العضو المدفوع الذي يمتلك مستوى الثقة المطلوب يمكنه التبديل إلى وضع المجهولية والنشر بشكل مجهول بحرية.

أفهم أن إضافة المستخدمين المجهولين إلى مجموعة بشكل تلقائي هي ميزة ربما يتم النظر فيها كإضافة إلى Discourse ولكنها لم تُنفذ بعد. بافتراض أن هذا هو الحال، هل توجد طريقة معقولة أخرى يمكنني من خلالها تكوين Discourse لتحقيق النتيجة التي أريدها، أم يجب أن أنتظر حتى تضيف آلهة Discourse هذه الميزة؟ شكرًا :slight_smile:

لقد كتبت إضافة لنسخ جميع مجموعات المستخدم إلى الظل الخاص به عند إنشاء الظل:

إخلاء مسؤولية: أنا جديد تمامًا في لغة Ruby، وعلى الرغم من أنها تعمل في تثبيتي، ليس لدي أي فكرة عما إذا كانت تعمل في أماكن أخرى.

إعجابَين (2)

+1 لهذه الوظيفة. هل تم تنفيذها على الإطلاق؟ لا أراها. أو ربما يعرف شخص ما عن إضافة (plugin) للقيام بذلك؟

(للعلم: وجدت هذا، والذي يبدو حلاً بديلاً لائقًا.)

قام أحد المستخدمين لدي بإنشاء إضافة لي لإضافة حسابات مجهولة تلقائيًا إلى مجموعة المنتدى. إليك نسختي على جيت هاب التي أستخدمها. GitHub - curi/cf-anon-auto-group: Discourse plugin to trigger `user.set_automatic_groups` for anons on login لقد كان يعمل بشكل جيد

نحن بحاجة إلى ذلك لمنحهم الأذونات الصحيحة حتى يتمكنوا من نشر أي شيء.

ربما يمكن للآخرين استخدام هذا الحل أو يمكن لشخص ما معرفة كيفية إنشاء إضافة رسمية أكثر أو دمج الكود.

يعمل بالاشتراك مع عضوية المجموعة التلقائية حسب البريد الإلكتروني (الذي لم ينجح بمفرده في تجربتنا):

على أي حال، لقد “حللت” هذه المشكلة على مستوى قاعدة البيانات في منتدى أديره. استخدمه فقط إذا لم تتمكن من الحصول على حلول أخرى، ذات مستوى أعلى، للعمل (هل كان هناك أي تقدم في هذا، أم يجب تمييز رد موجود على أنه “تم حله”؟). إليك كود PostgreSQL:

create or replace function anon_insert_copy_groups_to_anon_user()
  RETURNS TRIGGER
  LANGUAGE PLPGSQL
  AS $$
declare
  anon_user_id integer = new.user_id;
  master_user_id integer = new.master_user_id;
  active boolean = new.active;
  created_at timestamp = new.created_at;
  updated_at timestamp = new.updated_at;
BEGIN
  insert into group_users
        (group_id,                user_id,       created_at,        updated_at,        owner, notification_level,     first_unread_pm_at)
  select group_users.group_id, anon_user_id , current_timestamp, current_timestamp, false, 3 as notification_level, current_timestamp
  from group_users
  where group_users.user_id=master_user_id
  and   group_users.group_id not in (select group_id from group_users where group_users.user_id=anon_user_id)
  and   group_users.group_id not in (1, 2, 3); -- exlude admins, moderators and staff!

  return new;
end;
$$;

-- Create the trigger
CREATE TRIGGER anon_insert_trigger
AFTER INSERT ON anonymous_users
  FOR EACH ROW
    EXECUTE FUNCTION anon_insert_copy_groups_to_anon_user();