forked from tad0616/tad_login
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathedu_callback.php
More file actions
76 lines (68 loc) · 2.67 KB
/
Copy pathedu_callback.php
File metadata and controls
76 lines (68 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
use XoopsModules\Tad_login\Tools;
require_once '../../mainfile.php';
require_once 'class/edu/auth.php';
//verified idtoken
$claims = $oidc->getVerifiedClaims();
$claims = json_decode(json_encode($claims), true);
// var_dump($claims);
//userinfo
$userinfo = [];
if (!isset($oidc_arr['ignore_userinfo']) || $oidc_arr['ignore_userinfo'] !== true) {
$userinfo = $oidc->requestUserInfo();
$userinfo = json_decode(json_encode($userinfo), true);
}
//accesstoken
$accesstoken = $oidc->getAccessToken();
// var_dump($accesstoken);
//get eduinfo
$eduinfo = [];
if (isset($oidc_arr['eduinfoep']) && !empty($oidc_arr['eduinfoep']) && in_array('eduinfo', $oidc_arr['scope'])) {
$eduinfo = Tools::requestProtectedApi($oidc_arr['eduinfoep'], $accesstoken, true, $oidc_arr['gzipenable']);
}
//sanitizer object
$myts = \MyTextSanitizer::getInstance();
//default values
$url = '';
$from = '';
$sig = '';
$occ = '';
$bio = "";
if ($auth_method === "kh_oidc") {
//高雄市例外處理
$name = $myts->addSlashes($claims['name']); //視有無申請真實完整姓名,沒有的話為<姓+老師/學生>
$email = $claims['email']; //每個人不一定有mail,沒有為空白字串
if ($email) {
list($uname, $domain) = explode('@', $email);
} else {
$uname = $name;
}
$uname = $uname . '_' . $oidc_arr['tail']; //視有無申請真實帳號,沒有的話為hash值(即sub使用pairwaise)
$SchoolCode = $myts->addSlashes($claims['kh_profile']['schoolid']); //教育部6位學校代碼
$JobName = (isset($claims['gender'])) ? 'student' : 'teacher';
$from = $oidc_arr['from'];
// $bio_arr['eduinfo'] = $eduinfo;
// $bio_arr['claims'] = $claims;
// $bio_arr['userinfo'] = $userinfo;
$bio = json_encode($claims, 256);
} else if ($userinfo['email']) {
$uname = $userinfo['sub'] . '_' . $oidc_arr['tail'];
$name = $myts->addSlashes($userinfo['name']);
$email = $userinfo['email'];
$SchoolCode = $myts->addSlashes($eduinfo['schoolid']);
$eduinfo_json = json_encode($eduinfo, 256);
$JobName = false !== mb_strpos($eduinfo_json, '教師') ? 'teacher' : 'student';
// $JobName = "teacher";
$bio = $eduinfo_json;
$from = $oidc_arr['from'];
} else {
$uname = $claims['preferred_username'] . '_edu';
$name = $myts->addSlashes($userinfo['name']);
$email = $claims['email'];
$SchoolCode = $myts->addSlashes($eduinfo['schoolid']);
$eduinfo_json = json_encode($eduinfo, 256);
$JobName = strpos($eduinfo_json, '教師') !== false ? "teacher" : "student";
// $JobName = 'teacher';
$bio = $eduinfo_json;
}
Tools::login_xoops($uname, $name, $email, $SchoolCode, $JobName, $url, $from, $sig, $occ, $bio);