কোডে ব্যবহারকারীদের পাসওয়ার্ড সেট করবেন?


9

আমি কোডে একটি ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করতে সক্ষম হতে চাই।

যেহেতু user_loadকোনও বস্তু প্রত্যাবর্তন করে এবং user_saveএকটি অ্যারে চায় তাই এটি ক্ষুদ্র।

আমি ধরে নিয়েছি যে কেউ এটির জন্য একটি দ্রুত এবং সহজ উপায় খুঁজে পেয়েছে।


আমার বর্তমান সমাধানটি দেখে মনে হচ্ছে:

db_update('users')
  ->fields(array('pass' => user_hash_password('some_password')))
  ->condition('uid', 1)
  ->execute();

তবে আমি পছন্দ করি না যে এটি বেশিরভাগ হুককে বাইপাস করে।

উত্তর:


19

আপনাকে কেবল user_save()নীচের কোডটির মতো কোড ব্যবহার করে কল করতে হবে।

$edit['pass'] = 'New password';
user_save($account, $edit);

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

  // If the password changed, delete all open sessions and recreate
  // the current one.
  if ($account->pass != $account->original->pass) {
    drupal_session_destroy_uid($account->uid);
    if ($account->uid == $GLOBALS['user']->uid) {
      drupal_session_regenerate();
    }
  }

এতে থাকা পাসওয়ার্ডটি $edit['pass']হল সরল পাসওয়ার্ড। user_save()নিম্নলিখিত কোডটি (ফাংশনের শুরুতে) ব্যবহার করে এটির হ্যাশ দিয়ে এটি প্রতিস্থাপন করবে।

if (!empty($edit['pass'])) {
  // Allow alternate password hashing schemes.
  require_once DRUPAL_ROOT . '/' . variable_get('password_inc', 'includes/password.inc');
  $edit['pass'] = user_hash_password(trim($edit['pass']));
  // Abort if the hashing failed and returned FALSE.
  if (!$edit['pass']) {
    return FALSE;
  }
}

বিকল্প হিসাবে, আপনি drupal_submit_form () ব্যবহার করতে পারেন ।

$form_state = array();
$form_state['user'] = $account;
$form_state['values']['pass']['pass1'] = 'New password';
$form_state['values']['pass']['pass2'] = 'New password';
$form_state['values']['op'] = t('Save');
drupal_form_submit('user_profile_form', $form_state);

এইভাবে, আপনার যদি এমন কোনও মডিউল থাকে যা উদাহরণস্বরূপ, পাসওয়ার্ডটি বৈধ করে তোলে , তবে এর কোডটি কার্যকর করা হবে এবং আপনি form_get_erferences () থেকে কোনও ত্রুটি কোড পাবেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.