Skip to content
This repository was archived by the owner on Sep 22, 2022. It is now read-only.

Commit 5ffe65d

Browse files
committed
Refactored the CAS user creation instances to utilize the same Peoplefinder code.
1 parent a587575 commit 5ffe65d

File tree

3 files changed

+54
-31
lines changed

3 files changed

+54
-31
lines changed

app/controllers/AuthController.php

+15-19
Original file line numberDiff line numberDiff line change
@@ -85,45 +85,41 @@ public function casAction()
8585

8686
Zend_Auth::getInstance()->getStorage()->write($userModel->getId());
8787

88+
//ensure remote data is fresh
89+
$remoteData = $userModel->getRemoteData();
90+
if (!empty($remoteData['email']) && $userModel['email'] != $remoteData['email']) {
91+
$userModel['email'] = $remoteData['email'];
92+
$userModel->save();
93+
}
94+
if (empty($userModel['info']) && !empty($remoteData['info'])) {
95+
$userModel['info'] = $remoteData['info'];
96+
$userModel->save();
97+
}
98+
8899
if (empty($userModel['info']) || empty($userModel['email'])) {
89100
return $this->_helper->redirector('profile', 'config', null, array(
90101
'view' => 'oldCAS'
91102
));
92103
}
93104
} elseif (!Default_Model_Setting::get('lockout_cas')) {
94105
$userModel = new Default_Model_User();
95-
$pf = new UNL_Peoplefinder(new UNL_Peoplefinder_Driver_WebService_JSON());
96-
/* @var $pf UNL_Peoplefinder_Driver_WebService_JSON */
97-
$info = $email = '';
98-
try {
99-
$pfResult = $pf->getUID($user);
100-
$info = (!empty($pfResult->eduPersonNickname)) ? $pfResult->eduPersonNickname->{0} . $pfResult->sn->{0} : $pfResult->displayName->{0};
101-
if (isset($pfResult->mail)) {
102-
if (isset($pfResult->unlEmailAlias)) {
103-
$email = $pfResult->unlEmailAlias->{0} . '@unl.edu';
104-
} else {
105-
$email = $pfResult->mail->{0};
106-
}
107-
}
108-
} catch (Exception $e) {
109-
//ignore peoplefinder exceptions
110-
}
106+
$remoteData = Default_Model_User::getRemoteUserData($user);
111107

112108
$userModel->setData(array(
113109
'username' => $user,
114110
'passwd' => '',
115111
'login_type' => Default_Model_User::LOGIN_TYPE_CAS,
116112
'level' => Default_Model_User::LEVEL_USER,
117113
'status' => Default_Model_User::STATUS_ACTIVE,
118-
'info' => $info,
119-
'email' => $email
114+
'info' => $remoteData['info'],
115+
'email' => $remoteData['email']
120116
));
121117

122118
$userModel->save();
123119

124120
Zend_Auth::getInstance()->getStorage()->write($userModel->getId());
125121

126-
if (empty($userModel['email'])) {
122+
if (empty($userModel['info']) || empty($userModel['email'])) {
127123
return $this->_helper->redirector('profile', 'config', null, array(
128124
'view' => 'newCAS'
129125
));

app/forms/User.php

+6-12
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,12 @@ public function handlePost($id)
5757
$data['passwd'] = md5($values['passwd_new']);
5858
} else {
5959
$data['passwd'] = '';
60-
61-
$pf = new UNL_Peoplefinder();
62-
$pfResult = $pf->getUID($user);
63-
if ($prResult) {
64-
$data['info'] = (!empty($pfResult->eduPersonNickname)) ? $pfResult->eduPersonNickname : $pfResult->displayName;
65-
if (isset($pfResult->mail)) {
66-
if (isset($pfResult->unlEmailAlias)) {
67-
$data['email'] = $pfResult->unlEmailAlias . '@unl.edu';
68-
} else {
69-
$data['email'] = $pfResult->mail;
70-
}
71-
}
60+
$remoteData = Default_Model_User::getRemoteUserData($data['username']);
61+
if (empty($data['info'])) {
62+
$data['info'] = $remoteData['info'];
63+
}
64+
if (!empty($remoteData['email'])) {
65+
$data['email'] = $remoteData['email'];
7266
}
7367
}
7468

app/models/User.php

+33
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,34 @@ public static function getLevelCounts($active = false)
257257
return $counts;
258258
}
259259

260+
public static function getRemoteUserData($uid)
261+
{
262+
$data = array(
263+
'info' => '',
264+
'email' => ''
265+
);
266+
267+
//BEGIN UNL PEOPLEFINDER MODULE
268+
$pf = new UNL_Peoplefinder(new UNL_Peoplefinder_Driver_WebService_JSON());
269+
/* @var $pf UNL_Peoplefinder_Driver_WebService_JSON */
270+
try {
271+
$pfResult = $pf->getUID($uid);
272+
$data['info'] = (!empty($pfResult->eduPersonNickname)) ? $pfResult->eduPersonNickname->{0} . $pfResult->sn->{0} : $pfResult->displayName->{0};
273+
if (isset($pfResult->mail)) {
274+
if (isset($pfResult->unlEmailAlias)) {
275+
$data['email'] = $pfResult->unlEmailAlias->{0} . '@unl.edu';
276+
} else {
277+
$data['email'] = $pfResult->mail->{0};
278+
}
279+
}
280+
} catch (Exception $e) {
281+
//ignore peoplefinder exceptions
282+
}
283+
//END PEOPLEFINDER MODULE
284+
285+
return $data;
286+
}
287+
260288
public function __construct()
261289
{
262290
parent::_init(self::$_resourceNameInit);
@@ -328,6 +356,11 @@ public function getGroupIds($onlyMembership = false)
328356
return $ids;
329357
}
330358

359+
public function getRemoteData()
360+
{
361+
return self::getRemoteUserData($this->getUsername());
362+
}
363+
331364
public function __toString()
332365
{
333366
return $this['username'];

0 commit comments

Comments
 (0)