public static function post_login($parameters) { $uid = $parameters['uid']; $casBackend = OC_USER_CAS::getInstance(); $userDatabase = new \OC\User\Database(); if (phpCAS::isAuthenticated()) { // $cas_attributes may vary in name, therefore attributes are fetched to $attributes $cas_attributes = phpCAS::getAttributes(); $cas_uid = phpCAS::getUser(); // parameters $attributes = array(); if ($cas_uid == $uid) { \OCP\Util::writeLog('cas', 'attr \\"' . implode(',', $cas_attributes) . '\\" for the user: '******'cas_name'] = $cas_attributes[$casBackend->displayNameMapping]; } else { $attributes['cas_name'] = $cas_attributes['cn']; } if (array_key_exists($casBackend->mailMapping, $cas_attributes)) { $attributes['cas_email'] = $cas_attributes[$casBackend->mailMapping]; } else { $attributes['cas_email'] = $cas_attributes['mail']; } if (array_key_exists($casBackend->groupMapping, $cas_attributes)) { $attributes['cas_groups'] = $cas_attributes[$casBackend->groupMapping]; } else { if (!empty($casBackend->defaultGroup)) { $attributes['cas_groups'] = array($casBackend->defaultGroup); \OCP\Util::writeLog('cas', 'Using default group "' . $casBackend->defaultGroup . '" for the user: '******'/[^a-zA-Z0-9 _\\.@\\-]/', $uid)) { \OCP\Util::writeLog('cas', 'Invalid username "' . $uid . '", allowed chars "a-zA-Z0-9" and "_.@-" ', \OCP\Util::DEBUG); return false; } else { $random_password = \OCP\Util::generateRandomBytes(20); \OCP\Util::writeLog('cas', 'Creating new user: ' . $uid, \OCP\Util::DEBUG); $userDatabase->createUser($uid, $random_password); // after creating the user, fill the attributes if ($userDatabase->userExists($uid)) { OC_USER_CAS_Hooks::update_user($uid, $attributes); } } } // try to update user attributes if ($casBackend->updateUserData) { OC_USER_CAS_Hooks::update_user($cas_uid, $attributes); } return true; } } return false; }
/** * Sets the display name for by using the CAS attribute specified in the mapping * */ public function setDisplayName($uid, $displayName) { $udb = new \OC\User\Database(); $udb->setDisplayName($uid, $displayName); }