বর্তমানে লগ-ইন করা ব্যবহারকারীকে লগ আউট না করে প্রোগ্রামিয়ালি অন্য ব্যবহারকারীকে নকল করে


9

কোনও ত্রুটি ঘটলে কোনও মডিউল কীভাবে গ্লোবালের মান পরিবর্তন করতে $userপারে, তার নিজস্ব কোডটি চালায় এবং $userবর্তমান ব্যবহারকারীকে লগ আউট না করে এর মূল মানটি পুনরুদ্ধার করা উচিত?


এটি সম্পর্কে একটি পুরানো সমস্যা খোলা রয়েছে, যা এমন একটি ফাংশন যুক্ত করে যা এটি একাধিকবার বলা হলেও সঠিকভাবে পরিচালনা করতে পারে। Drupal.org/node/287292 দেখুন । দয়া করে সেখানে প্যাচটি পর্যালোচনা করুন এবং পরীক্ষা করুন।
বার্ডির

1
একটি কমিউনিটি ডকুমেন্টেশন তৈরি হয়েছে যা দ্রুপাল on, দ্রুপাল and এবং দ্রুপাল ৮ এর জন্য অন্য ব্যবহারকারীকে দ্রুপাল.আর্গ: অন্য কোনও ব্যবহারকারীকে নিরাপদে ছদ্মবেশে ছদ্মবেশ ধারণ করার সমাধান রয়েছে ।
iStryker

উত্তর:


18

Drupal_cron_run () ফাংশন ঠিক এই জন্য একটি নিখুঁত উদাহরণ দেয়, যেহেতু এটি যখনই ক্রন চালানো হয় বেনামী বর্তমান ব্যবহারকারী পরিবর্তন, তারপর এটি সম্পন্ন করা হয় ফিরে পরিবর্তন করা হয়।

// Prevent session information from being saved while doing funky stuff.
$original_session_state = drupal_save_session();
drupal_save_session(FALSE);

// Force the current user to anonymous to ensure consistent permissions on
// funky stuff runs.
$original_user = $GLOBALS['user'];
$GLOBALS['user'] = drupal_anonymous_user(); // Or use user_load() for a non-anonymous user.

// Do funky stuff here...

// Restore the user.
$GLOBALS['user'] = $original_user;
drupal_save_session($original_session_state);

লক্ষণীয় যে আপনি বর্তমান ব্যবহারকারীর অবজেক্টটি কোথাও দূরে রাখতে পারবেন ( $GLOBALSনিরাপদে রক্ষার জন্য বা কেবলমাত্র অন্য কোনও পরিবর্তনশীল) এবং যে কোনও ব্যবহারকারীর সাথে এগুলি লোড করে স্যুইচ করতে পারেন user_load()। যা আপনাকে কোনও নির্দিষ্ট প্রক্রিয়া সম্পাদনের জন্য নির্দিষ্ট অনুমতি নিয়ে নির্দিষ্ট ব্যবহারকারীদের সেট আপ হিসাবে নির্দিষ্ট কিছু ব্যবহারকারী হিসাবে মাস্ক্রেডের মতো কিছু ভয়ঙ্কর কাজ করতে দেয়। নীতিটিও একই রকম।
গ্রেগ

এই টুকরা কোডটি নিয়ে কেবল সম্ভাব্য 1 টি সমস্যা। আপনার পুরানো সেশনটি পরিবর্তনশীল $ old_session এ সংরক্ষণ করা উচিত। সেভ সেশনটি মিথ্যাতে সেট করুন, তারপরে শেষে drupal_save_session ($ old_session)।
iStryker

অন্যান্য ব্যবহারকারী হিসাবে drupal.org/project/phantomjs_capture ব্যবহার করে স্ক্রিন অ্যাক্সেস এবং ক্যাপচার করা । এটা কি সম্ভব / কৌশল? (ডিআউ ইস্যু করুন drupal.org/node/2899252 )।
কিরানিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.