منح دور دروبال لجميع المستخدمين الذين لديهم دور معين

StackOverflow https://stackoverflow.com/questions/1669785

  •  13-09-2019
  •  | 
  •  

سؤال

أحتاج إلى تطبيق دور، دور X، لجميع مستخدمي Drupal الذين منحوا دورا منفصلا، دور Y. بمعنى آخر، أتمنى أن يكون دور X مجموعة فرعية من الدور Y. كيف يمكنني القيام بذلك؟

هل كانت مفيدة؟

المحلول

يمكنك تنفيذها hook_user() في وحدة مخصصة. على إجراء "إدراج" و / أو "تحديث"، ستحقق من الدور ذ في $account->roles مجموعة مصفوفة. إذا كان الحاضر، أضف دور X إذا لم يكن هناك بالفعل هناك. هذا من شأنه أن يضمن أن تعقد حكمك في كل مرة يتم فيها إنشاء حساب مستخدم و / أو تغييره.

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

INSERT INTO users_roles (uid, rid)
  SELECT uid, [roleX_ID] AS rid FROM users_roles
    WHERE uid IN
      (SELECT uid FROM users_roles WHERE rid = [roleY_ID])
    AND uid NOT IN
      (SELECT uid FROM users_roles WHERE rid = [roleX_ID])
;

نصائح أخرى

وأنا أتفق مع Henrik Opel على استخدام Hook_User في وحدة مخصصة سيكون حلا جيدا للحفاظ على المستخدمين وتأكد من أنهم محدثون طوال الوقت.

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

بدلا من ذلك، يمكنك استخدام واجهة مسؤول المستخدم Drupal. أعتقد في الواقع أنه في هذه الحالة، هو أسهل طريقة للقيام بما تريد. ببساطة تصفية جميع المستخدمين الذين هم الطلاب. انقر فوق جميع المستخدمين ومنحهم دور العضو. يتم ذلك بنقرات قليلة في أي وقت من الأوقات، وأمان للغاية لأن Drupal سوف يتعامل مع كل SQL لك.

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

تتيح لك وحدة LDAP تعيين الأدوار بشكل حيوي بناء على DN. اضطررت في الواقع إلى كتابة الوحدة النمطية الخاصة بي المصممة خصيصا لنظامنا، وإلا فسأكون أكثر من سعيدة لمشاركتها.

رابط النص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top