首页 > 解决方案 > 如何更新 Drupal 8 hook_user_login 中的 $account 对象

问题描述

我正在尝试使用 hook_user_login 来更新 $account 以便删除其中一个角色。$account 是一个受保护的对象,它允许我获取($account->getRoles();)角色数组,但不允许我设置它。任何人都可以建议在处理用户登录请求之前是否可以编辑$account角色?

function restrict_by_ip_user_login($account) {

  //Edit account roles here before proceeding


  $login_firewall = \Drupal::service('restrict_by_ip.login_firewall');
  $login_firewall->execute($account);
}

标签: phpdrupal

解决方案


您可以使用removeRole方法,类似以下代码段的内容可以帮助您

function restrict_by_ip_user_login($account) {

  $user = user_load_by_name($account->name);
    if ($user) {
      $user-> removeRole('MACHINE_NAME_OF_ROLE');
      $user->save();

    }

  $login_firewall = \Drupal::service('restrict_by_ip.login_firewall');
  $login_firewall->execute($account);
}

推荐阅读