作者:亚艾元技术部
Drupal8中集成外部用户系统,每种外部系统都有各种各样的接口说明的,有的是通用的,有的是专有的接口。对于很多开发商来说,头痛的是怎么将接口对接到Drupal上面。
下面是我们写的一段集成外部登录系统的核心代码,Drupal8部分的,非常好用。
首先外部系统会返回用户的ID,用户姓名。我们先根据这些信息查询一下用户是否存在,如果存在,直接登录,如果不存在,新创建用户.
function pki_login_user($id, $name) {
$query = \Drupal::entityQuery('user');
$query->condition('field_identification', $id);
$query->range(0,1);
$uids = $query->execute();
$uid = reset($uids);
if(empty($uid)){
$user = User::create();
$user->setUsername($id);
$user->setEmail($id . '@ga.gov');
//$user->addRole('authenticated'); //默认注册用户,后续提升权限
$user->enforceIsNew();
$user->activate();
$user->set('field_identification', $id); //身份证号
$user->set('field_name', $name); //姓名
$user->save();
$uid = $user->id();
}
$account = User::load($uid);
user_login_finalize($account);
}user_login_finalize函数负责登录某一个用户。这是Drupal核心自带的方法。需要在Drupal8的后台,给用户添加响应的字段。

