You are here

Drupal8中集成外部用户系统

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2019-11-15 09:08

作者:亚艾元技术部

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的后台,给用户添加响应的字段。


论坛:

Drupal版本: