التحقق من تأكيد البريد الإلكتروني للمستخدم عبر DataExplorer

عبر واجهة برمجة التطبيقات (API)، أحتاج إلى تحديد ما إذا كانت معرفات المستخدمين قد أكدت عناوين بريد إلكتروني أم لا. باستخدام DataExplorer، أستعلم عن جدول email_tokens، لكنني مرتبك بشأن كيفية تفسير وجود عدة صفوف لمعرف مستخدم معين. عندما تكون هناك صفوف متعددة، فإن N-1 منها تحتوي على expired = true، لكن الصف الذي يحتوي على expired = false لا يبدو أنه يعكس الحالة الحالية فيما إذا كان المستخدم قد أكد بريده الإلكتروني أم لا. على سبيل المثال، هناك مستخدمون موثّقون تظهر في صف email_tokens الخاص بهم حيث expired = false قيمة confirmed = false.

ربما أنا أتناول المسألة بالطريقة الخاطئة. أرجو التوجيه. شكرًا لك!

@ميشبس، هل من الممكن تتبع ذلك باستخدام استعلام مستكشف البيانات؟

مرحبًا ديفيد،

عندما يؤكد المستخدم البريد الإلكتروني، يتم تحديث عمود confirmed، لذا بإضافته كقيمة true في التصفية، ستعرض فقط البريد الإلكتروني المؤكد.

أتمنى أن يكون هذا مفيدًا.

SELECT 
    user,	
    email 
FROM email_tokens
WHERE 
    expired = false
    AND confirmed = true

ما الذي تحاول تحقيقه؟

@michebs - نعم. هذا هو الاستعلام الذي جربته أولاً، لكنني وجدت أن هناك مجموعة فرعية صغيرة من مستخدمينا هم مستخدمون نشطون، لكنهم لا يُرجَعون بواسطة هذا الاستعلام. ومع ذلك، عند النظر إلى أحد هؤلاء المستخدمين في صفحة “مستخدمي المسؤول”، نجد أن بريدهم الإلكتروني صالح (غير مُعلَّم بـ “غير مُتحقَّق منه”).

@pfaffman - نستخدم هذه البيانات لتحريك إحدى انتقالات الحالة في الخدمات التي نقدمها لأعضائنا، سواء على الموقع. فعندما يسجل عضو جديد ويطلب خدمات، نرغب أولاً في التأكد من قدرتنا على التواصل معه لتقديم تلك الخدمات.

لعرض مثال، مع هذا الاستعلام:

SELECT
  e.user_id,
  e.expired,
  e.confirmed,
  e.email
FROM email_tokens as e
WHERE e.user_id = 33

عند النظر إلى أحد أكثر المستخدمين نشاطًا، نلاحظ النتيجة التالية:

user_id,expired,confirmed,email
33,false,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,true,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,false,somebody@somewhere.com
33,true,true,somebody@somewhere.com

الصف الوحيد غير المنتهي الصلاحية يظهر البريد الإلكتروني غير مؤكد.

إذا كان لديك تحكم في نظامك، فقد تستخدم رابط ويب (web hook) الخاص بـ Discourse لإخطار نظامك بأن المستخدم تم تفعيله. لكنني متأكد إلى حد كبير أن الحل السهل هو التحقق من حقل active في سجل المستخدم. أنا متأكد تقريبًا من أنه لا يتم تعيينه إلا بعد أن يتحقق المستخدم من عنوان بريده الإلكتروني.

http://localhost:3000/admin/users/1/jay.json سيعطيك سجلًا مثل:

{
id: 1,
username: "jay",
name: "Jay User",
avatar_template: "/user_avatar/localhost/jay/{size}/3_2.png",
email: "jay@nowehre.invalid",
secondary_emails: [ ],
active: true,
admin: true,
moderator: false,
last_seen_at: "2020-11-04T20:13:04.240Z",
last_emailed_at: null,
created_at: "2020-10-05T21:14:52.570Z",
last_seen_age: 27.86773951,
last_emailed_age: null,
created_at_age: 2588319.53785305,
trust_level: 1,
.....
},

users.active يبدو بالضبط ما أحتاجه. شكرًا لك!