作者:亚艾元技术部
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的后台,给用户添加响应的字段。