أنا أدير منتدى باستخدام Discourse 2.6.0beta3، وأعتقد أنني عثرت على خطأ.
أحاول إضافة مستخدمين مجهولين إلى مجموعة باسم anons، حتى أتمكن من تقييد مشاركاتهم في بعض الفئات المحددة. قمت بإعداد المجموعة anons لإضافة المستخدمين تلقائيًا بناءً على نطاق البريد الإلكتروني anon.mydomain.
عندما أدخل وضع التصفح المجهول، أجد أن حسابي المجهول لم يُضاف إلى المجموعة. ومع ذلك، إذا نقرت على زر حفظ التغييرات في /g/anons/manage/membership، يتم إضافة حسابي المجهول إلى هذه المجموعة. كل ما أريده هو إضافة المستخدم المجهول إلى هذه المجموعة عند الدخول في وضع التصفح المجهول، دون الحاجة إلى النقر يدويًا.
لقد بحثت عن هذا الخطأ ولكن لم أجد أي معلومات مفيدة. شكرًا لقراءتكم!
يمكنني تكرار ما تجده عند دخول المستخدم في الوضع المجهول. لجعل المستخدم يُضاف تلقائيًا إلى مجموعة بناءً على نطاق البريد الإلكتروني المجهول، يتعيّن عليّ الانتقال إلى صفحة إدارة المجموعة المجهولة وحفظ الإعدادات.
لا أضمن ما إذا كان من المتوقع أن يعمل إضافة المستخدمين المجهولين إلى مجموعة بناءً على نطاق البريد الإلكتروني المجهول. ومع ذلك، أرى أن وجود جميع المستخدمين المجهولين في مجموعة فكرة مفيدة. وقد تم اقتراح نهج إضافة المستخدمين المجهولين إلى مجموعة بناءً على نطاق بريدهم الإلكتروني عدة مرات على Meta. وهناك نهج بديل يتمثل في إضافة إعداد “مجموعة وضع مجهول” يقوم تلقائيًا بإضافة جميع المستخدمين المجهولين إلى مجموعة مختارة.
دعنا نرى ما إذا كانت هذه وظيفة يريد Discourse دعمها قبل تحديد ما إذا كانت عيبًا أم لا.
أعتقد أنه من المحفوف بالمخاطر الاعتماد على البريد الإلكتروني المجهول لهذه الوظيفة. أعتقد أننا يمكن أن ننظر في إنشاء مجموعة تلقائية أخرى للمستخدمين المجهولين وإضافتهم إليها تلقائيًا.
مرحبًا، هذا الموضوع يتعلق بمشكلة أواجهها في منتدى أساعد في إعداده وإدارته. بعض السياق: يتطلب المنتدى أن يدفع الأشخاص للانضمام ك مستخدمين يمكنهم النشر. نريد أيضًا أن يتمكن الأعضاء المدفوعون الذين يمتلكون مستوى ثقة معين من النشر بشكل مجهول عن طريق التبديل إلى وضع المجهولية. بالإضافة إلى ذلك، نريد أن يتمكن الجميع من قراءة المحتوى (باستثناء المحتوى المخصص للموظفين فقط، بالطبع).
كما أفهم، فإن المستخدمين المجهولين يُدرجون تلقائيًا ضمن مجموعة مستخدمين “الجميع”. إذا أردنا السماح للعالم كله بالنشر في المنتدى، فلن تكون هناك مشكلة في عدم قدرة المجهولين على النشر. ومع ذلك، وبما أن المنتدى مدفوع، فقد قمنا بتعيين مجموعة مستخدمين “الجميع” لتكون للقراءة فقط، بحيث يتمكن العالم من القراءة ولكن لا يمكنه النشر.
ما زلنا نرغب في تمكين المستخدمين الذين يمتلكون مستوى الثقة المطلوب من النشر بشكل مجهول. كانت الحل المقصود هو إعداد مجموعة مستخدمين مجهولين مع إذن لنشر المنشورات وإضافة الأشخاص بناءً على نطاق البريد الإلكتروني المجهول الذي نستخدمه في المنتدى. ومع ذلك، فإن الجانب التلقائي للإضافة لا يعمل — يجب على المسؤول الانتقال إلى مجموعة المستخدمين المجهولين وحفظ التغييرات ليتم إضافة المجهولين فعليًا. هذا أمر مزعج ويعطل التدفق الذي نرغب فيه، وهو أن العضو المدفوع الذي يمتلك مستوى الثقة المطلوب يمكنه التبديل إلى وضع المجهولية والنشر بشكل مجهول بحرية.
أفهم أن إضافة المستخدمين المجهولين إلى مجموعة بشكل تلقائي هي ميزة ربما يتم النظر فيها كإضافة إلى Discourse ولكنها لم تُنفذ بعد. بافتراض أن هذا هو الحال، هل توجد طريقة معقولة أخرى يمكنني من خلالها تكوين Discourse لتحقيق النتيجة التي أريدها، أم يجب أن أنتظر حتى تضيف آلهة Discourse هذه الميزة؟ شكرًا
على أي حال، لقد “حللت” هذه المشكلة على مستوى قاعدة البيانات في منتدى أديره. استخدمه فقط إذا لم تتمكن من الحصول على حلول أخرى، ذات مستوى أعلى، للعمل (هل كان هناك أي تقدم في هذا، أم يجب تمييز رد موجود على أنه “تم حله”؟). إليك كود 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();