প্রোগ্রামগতভাবে ব্যবহারকারী ভূমিকা বরাদ্দ


12

আমার ওয়েবসাইটে আমার একাধিক ভূমিকা রয়েছে এবং কিছু ব্যবহারকারী যখন তারা আমার সাইটে নিবন্ধভুক্ত হন তখন আমি একটি নির্দিষ্ট ভূমিকা দিতে চাই।

নতুন ব্যবহারকারীরা তাদের নিবন্ধকরণ ফর্মগুলি জমা দেওয়ার সময় আমি কীভাবে প্রোগ্রামের জন্য নির্দিষ্ট ভূমিকা অর্পণ করতে পারি?
আমি লগইনটোবগগান, অটোসাইনগ্রোলের মতো মডিউল চেষ্টা করেছি, তবে তারা নিবন্ধের ক্ষেত্রে একটি ডিফল্ট ব্যবহারকারীর ভূমিকা সরবরাহ করে, যখন আমি নির্দিষ্ট ব্যবহারকারীদের জন্য ভূমিকা অর্পণ করতে চাই, আমার সাইটের সাইন আপ করা সমস্ত ব্যবহারকারীর জন্য নয়।

উত্তর:


10

আপনি যখন এটিকে "প্রোগ্রাম্যাটিক" হিসাবে বিবেচনা নাও করতে পারেন তবে এটি করার জন্য আপনি বিধি মডিউলটি ব্যবহার করতে পারেন ।

মডিউলটি ইনস্টল করুন এবং "একটি নতুন ব্যবহারকারীর অ্যাকাউন্ট সংরক্ষণের পরে" ইভেন্টে একটি নতুন নিয়ম তৈরি করুন। ক্রিয়াকলাপের জন্য, আপনি ব্যবহারকারীর ভূমিকাটি এবিসি-তে সেট করতে চাইবেন (যেখানে আপনি যে দায়িত্ব নির্ধারণ করতে চান এটিবিসি)।

শর্ত যুক্ত করে আপনি নির্দিষ্ট ব্যবহারকারীদের মধ্যে ভূমিকা সীমাবদ্ধ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি ব্যবহারকারী নিবন্ধকরণ ফর্মের জন্য নির্দিষ্ট মান বেছে নিয়ে থাকেন তবে কেবলমাত্র নিয়ম প্রয়োগ করতে আপনি "ডেটা তুলনা" শর্তটি ব্যবহার করতে পারেন (বিশদ উদাহরণ: কেবলমাত্র সেই ব্যবহারকারীদের মধ্যে নিয়ম সীমাবদ্ধ করুন যারা নিবন্ধকরণের ক্ষেত্রে তাদের লিঙ্গ হিসাবে "মহিলা" নির্বাচন করেন) )।

আপনি যে শর্ত / ভূমিকা সমন্বয় করতে চান তার জন্য আপনাকে একটি নিয়ম তৈরি করতে হবে। তবে, বিধিগুলি একটি বহুল ব্যবহৃত মডিউল এবং এটি আপনাকে অনেক নমনীয়তা দিয়ে ম্যানুয়ালি বা বৈশিষ্ট্যগুলি মডিউল দিয়ে রফতানি করা যায়।


13

আমরা ব্যবহারকারীর_মাল্টিপল_ক্রোল_ডিট () ফাংশনটি দিয়েও এই কাজটি সমাধান করেছি । আমাদের ব্যবহারের ক্ষেত্রে আমরা রেজিস্টার-ফর্মের উপর নয় তবে ফ্লাইতে ব্যবহারকারী তৈরি করতে একটি বিশেষ মেনু-কলব্যাকে প্রতিক্রিয়া জানাই।

প্রথম: একটি ব্যবহারকারী তৈরি করুন

$user = new stdClass();
$user->name = $name;
$user->status = 1;
user_save($user);

দ্বিতীয়: ভূমিকা ব্যবহারকারীকে বরাদ্দ করুন

$role = user_role_load_by_name("my custom role");
user_multiple_role_edit(array($user->uid), 'add_role', $role->rid);

5

এটি ডিফল্ট ভূমিকা 4,5 এবং 6 করবে:

function mymodule_form_user_register_form_alter(&$form, &$form_state, $form_id){
    $form['account']['roles']['#default_value'][] = '4';
    $form['account']['roles']['#default_value'][] = '5';
    $form['account']['roles']['#default_value'][] = '6';
}

2

আমার ক্ষেত্রে কেবলমাত্র চারটি প্রোফাইল 2 প্রোফাইল ছিল, তবে যদি ব্যক্তিটি তাদের নিবন্ধকরণ ফর্মের একটি নির্দিষ্ট মান রাখে তবে আমি তাদের একটি নতুন ভূমিকাতে যুক্ত করতে হয়েছিল। আমি যা করেছি তা এখানে:

<?php 
function MYMODULE_user_insert(&$edit, $account, $category){
  if (array_key_exists('profile_club', $account)) {
    $is_uni = FALSE;
    if ($account->profile_club['field_uni_club']['und'][0]['value'] == 1 ) {
      $is_uni = TRUE;
    }
    if ($is_uni) {
      $uid = $account->uid;
      $role_name = 'uni_club';
      if ($role = user_role_load_by_name($role_name)) {
        user_multiple_role_edit(array($uid), 'add_role', $role->rid);
      }
    }
  }
}
?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.