@@ -97,8 +97,7 @@ |
||
| 97 | 97 | // does the file exist in the current skin's directory? Has precedence |
| 98 | 98 | if ($submodule !== '' && file_exists(__DIR__ . "/../../skins/" . $this->skin . "/" . $submodule . $path . $filename)) { |
| 99 | 99 | $extrapath = "/skins/" . $this->skin . "/" . $submodule; |
| 100 | - } |
|
| 101 | - elseif (file_exists(__DIR__ . "/../../skins/" . $this->skin . $path . $filename)) { |
|
| 100 | + } elseif (file_exists(__DIR__ . "/../../skins/" . $this->skin . $path . $filename)) { |
|
| 102 | 101 | $extrapath = "/skins/" . $this->skin; |
| 103 | 102 | } elseif (file_exists(__DIR__ . "/../../" . $path . $filename)) { |
| 104 | 103 | $extrapath = ""; |
@@ -201,8 +201,7 @@ |
||
| 201 | 201 | |
| 202 | 202 | if ($this->selectedEap == \core\common\EAP::EAPTYPE_TLS && isset($this->attributes['eap-specific:tls_use_other_id']) && $this->attributes['eap-specific:tls_use_other_id'][0] == 'on') { |
| 203 | 203 | $configRaw['use_other_tls_id'] = "True"; |
| 204 | - } |
|
| 205 | - else { |
|
| 204 | + } else { |
|
| 206 | 205 | $configRaw['use_other_tls_id'] = "False"; |
| 207 | 206 | } |
| 208 | 207 | |
@@ -72,96 +72,96 @@ |
||
| 72 | 72 | } |
| 73 | 73 | |
| 74 | 74 | switch ($operationMode) { |
| 75 | - case OPERATION_MODE_EDIT: |
|
| 76 | - $idp = $validator->existingIdP($_GET['inst_id']); |
|
| 77 | - // editing IdPs is done from within the popup. When we're done, send the |
|
| 78 | - // user back to the popup (append the result of the operation later) |
|
| 79 | - $redirectDestination = "manageAdmins.inc.php?inst_id=" . $idp->identifier . "&"; |
|
| 80 | - if (count($validAddresses) == 0) { |
|
| 81 | - header("Location: $redirectDestination" . "invitation=INVALIDSYNTAX"); |
|
| 82 | - exit(1); |
|
| 83 | - } |
|
| 84 | - // is the user primary admin of this IdP? |
|
| 85 | - $is_owner = $idp->isPrimaryOwner($_SESSION['user']); |
|
| 86 | - // check if he is (also) federation admin for the federation this IdP is in. His invitations have more blessing then. |
|
| 87 | - $fedadmin = $userObject->isFederationAdmin($idp->federation); |
|
| 88 | - // check if he is either one, if not, complain |
|
| 89 | - if (!$is_owner && !$fedadmin) { |
|
| 90 | - echo "<p>" . sprintf(_("Something's wrong... you are a %s admin, but not for the %s the requested %s belongs to!"), $uiElements->nomenclatureFed, $uiElements->nomenclatureFed, $uiElements->nomenclatureInst) . "</p>"; |
|
| 91 | - exit(1); |
|
| 92 | - } |
|
| 75 | + case OPERATION_MODE_EDIT: |
|
| 76 | + $idp = $validator->existingIdP($_GET['inst_id']); |
|
| 77 | + // editing IdPs is done from within the popup. When we're done, send the |
|
| 78 | + // user back to the popup (append the result of the operation later) |
|
| 79 | + $redirectDestination = "manageAdmins.inc.php?inst_id=" . $idp->identifier . "&"; |
|
| 80 | + if (count($validAddresses) == 0) { |
|
| 81 | + header("Location: $redirectDestination" . "invitation=INVALIDSYNTAX"); |
|
| 82 | + exit(1); |
|
| 83 | + } |
|
| 84 | + // is the user primary admin of this IdP? |
|
| 85 | + $is_owner = $idp->isPrimaryOwner($_SESSION['user']); |
|
| 86 | + // check if he is (also) federation admin for the federation this IdP is in. His invitations have more blessing then. |
|
| 87 | + $fedadmin = $userObject->isFederationAdmin($idp->federation); |
|
| 88 | + // check if he is either one, if not, complain |
|
| 89 | + if (!$is_owner && !$fedadmin) { |
|
| 90 | + echo "<p>" . sprintf(_("Something's wrong... you are a %s admin, but not for the %s the requested %s belongs to!"), $uiElements->nomenclatureFed, $uiElements->nomenclatureFed, $uiElements->nomenclatureInst) . "</p>"; |
|
| 91 | + exit(1); |
|
| 92 | + } |
|
| 93 | 93 | |
| 94 | - $prettyprintname = $idp->name; |
|
| 95 | - $newtokens = $mgmt->createTokens($fedadmin, $validAddresses, $idp); |
|
| 96 | - $loggerInstance->writeAudit($_SESSION['user'], "NEW", "IdP " . $idp->identifier . " - Token created for " . implode(",", $validAddresses)); |
|
| 97 | - $introtext = "CO-ADMIN"; |
|
| 98 | - $participant_type = $idp->type; |
|
| 99 | - break; |
|
| 100 | - case OPERATION_MODE_NEWUNLINKED: |
|
| 101 | - $redirectDestination = "../overview_federation.php?"; |
|
| 102 | - if (count($validAddresses) == 0) { |
|
| 103 | - header("Location: $redirectDestination"."invitation=INVALIDSYNTAX"); |
|
| 104 | - exit(1); |
|
| 105 | - } |
|
| 106 | - // run an input check and conversion of the raw inputs... just in case |
|
| 107 | - $newinstname = $validator->string($_POST['name']); |
|
| 108 | - $newcountry = $validator->string($_POST['country']); |
|
| 109 | - $participant_type = $validator->partType($_POST['participant_type']); |
|
| 110 | - $new_idp_authorized_fedadmin = $userObject->isFederationAdmin($newcountry); |
|
| 111 | - if ($new_idp_authorized_fedadmin !== TRUE) { |
|
| 112 | - throw new Exception("Something's wrong... you want to create a new " . $uiElements->nomenclatureInst . ", but are not a " . $uiElements->nomenclatureFed . " admin for the " . $uiElements->nomenclatureFed . " it should be in!"); |
|
| 113 | - } |
|
| 114 | - $federation = $validator->existingFederation($newcountry); |
|
| 115 | - $prettyprintname = $newinstname; |
|
| 116 | - $introtext = "NEW-FED"; |
|
| 117 | - // send the user back to his federation overview page, append the result of the operation later |
|
| 118 | - // do the token creation magic |
|
| 119 | - $newtokens = $mgmt->createTokens(TRUE, $validAddresses, $newinstname, 0, $newcountry, $participant_type); |
|
| 120 | - $loggerInstance->writeAudit($_SESSION['user'], "NEW", "ORG FUTURE - Token created for $participant_type " . implode(",", $validAddresses)); |
|
| 121 | - break; |
|
| 122 | - case OPERATION_MODE_NEWFROMDB: |
|
| 123 | - $redirectDestination = "../overview_federation.php?"; |
|
| 124 | - if (count($validAddresses) == 0) { |
|
| 125 | - header("Location: $redirectDestination"."invitation=INVALIDSYNTAX"); |
|
| 126 | - exit(1); |
|
| 127 | - } |
|
| 128 | - // a real external DB entry was submitted and all the required parameters are there |
|
| 129 | - $newexternalid = $validator->string($_POST['externals']); |
|
| 130 | - $extinfo = $catInstance->getExternalDBEntityDetails($newexternalid); |
|
| 131 | - $new_idp_authorized_fedadmin = $userObject->isFederationAdmin($extinfo['country']); |
|
| 132 | - if ($new_idp_authorized_fedadmin !== TRUE) { |
|
| 133 | - throw new Exception("Something's wrong... you want to create a new " . $uiElements->nomenclatureInst . ", but are not a " . $uiElements->nomenclatureFed . " admin for the " . $uiElements->nomenclatureFed . " it should be in!"); |
|
| 134 | - } |
|
| 135 | - $federation = $validator->existingFederation($extinfo['country']); |
|
| 136 | - $newcountry = $extinfo['country']; |
|
| 137 | - // see if the inst name is defined in the currently set language; if not, pick its English name; if N/A, pick the last in the list |
|
| 138 | - $prettyprintname = ""; |
|
| 139 | - foreach ($extinfo['names'] as $lang => $name) { |
|
| 140 | - if ($lang == $languageInstance->getLang()) { |
|
| 141 | - $prettyprintname = $name; |
|
| 94 | + $prettyprintname = $idp->name; |
|
| 95 | + $newtokens = $mgmt->createTokens($fedadmin, $validAddresses, $idp); |
|
| 96 | + $loggerInstance->writeAudit($_SESSION['user'], "NEW", "IdP " . $idp->identifier . " - Token created for " . implode(",", $validAddresses)); |
|
| 97 | + $introtext = "CO-ADMIN"; |
|
| 98 | + $participant_type = $idp->type; |
|
| 99 | + break; |
|
| 100 | + case OPERATION_MODE_NEWUNLINKED: |
|
| 101 | + $redirectDestination = "../overview_federation.php?"; |
|
| 102 | + if (count($validAddresses) == 0) { |
|
| 103 | + header("Location: $redirectDestination"."invitation=INVALIDSYNTAX"); |
|
| 104 | + exit(1); |
|
| 142 | 105 | } |
| 143 | - } |
|
| 144 | - if ($prettyprintname == "" && isset($extinfo['names']['en'])) { |
|
| 145 | - $prettyprintname = $extinfo['names']['en']; |
|
| 146 | - } |
|
| 147 | - if ($prettyprintname == "") { |
|
| 148 | - foreach ($extinfo['names'] as $name) { |
|
| 149 | - $prettyprintname = $name; |
|
| 106 | + // run an input check and conversion of the raw inputs... just in case |
|
| 107 | + $newinstname = $validator->string($_POST['name']); |
|
| 108 | + $newcountry = $validator->string($_POST['country']); |
|
| 109 | + $participant_type = $validator->partType($_POST['participant_type']); |
|
| 110 | + $new_idp_authorized_fedadmin = $userObject->isFederationAdmin($newcountry); |
|
| 111 | + if ($new_idp_authorized_fedadmin !== TRUE) { |
|
| 112 | + throw new Exception("Something's wrong... you want to create a new " . $uiElements->nomenclatureInst . ", but are not a " . $uiElements->nomenclatureFed . " admin for the " . $uiElements->nomenclatureFed . " it should be in!"); |
|
| 150 | 113 | } |
| 151 | - } |
|
| 152 | - $participant_type = $extinfo['type']; |
|
| 153 | - // fill the rest of the text |
|
| 154 | - $introtext = "EXISTING-FED"; |
|
| 155 | - // do the token creation magic |
|
| 156 | - $newtokens = $mgmt->createTokens(TRUE, $validAddresses, $prettyprintname, $newexternalid); |
|
| 157 | - $loggerInstance->writeAudit($_SESSION['user'], "NEW", "IdP FUTURE - Token created for " . implode(",", $validAddresses)); |
|
| 158 | - break; |
|
| 159 | - default: // includes OPERATION_MODE_INVALID |
|
| 160 | - $wrongcontent = print_r($_POST, TRUE); |
|
| 161 | - echo "<pre>Wrong parameters in POST: |
|
| 114 | + $federation = $validator->existingFederation($newcountry); |
|
| 115 | + $prettyprintname = $newinstname; |
|
| 116 | + $introtext = "NEW-FED"; |
|
| 117 | + // send the user back to his federation overview page, append the result of the operation later |
|
| 118 | + // do the token creation magic |
|
| 119 | + $newtokens = $mgmt->createTokens(TRUE, $validAddresses, $newinstname, 0, $newcountry, $participant_type); |
|
| 120 | + $loggerInstance->writeAudit($_SESSION['user'], "NEW", "ORG FUTURE - Token created for $participant_type " . implode(",", $validAddresses)); |
|
| 121 | + break; |
|
| 122 | + case OPERATION_MODE_NEWFROMDB: |
|
| 123 | + $redirectDestination = "../overview_federation.php?"; |
|
| 124 | + if (count($validAddresses) == 0) { |
|
| 125 | + header("Location: $redirectDestination"."invitation=INVALIDSYNTAX"); |
|
| 126 | + exit(1); |
|
| 127 | + } |
|
| 128 | + // a real external DB entry was submitted and all the required parameters are there |
|
| 129 | + $newexternalid = $validator->string($_POST['externals']); |
|
| 130 | + $extinfo = $catInstance->getExternalDBEntityDetails($newexternalid); |
|
| 131 | + $new_idp_authorized_fedadmin = $userObject->isFederationAdmin($extinfo['country']); |
|
| 132 | + if ($new_idp_authorized_fedadmin !== TRUE) { |
|
| 133 | + throw new Exception("Something's wrong... you want to create a new " . $uiElements->nomenclatureInst . ", but are not a " . $uiElements->nomenclatureFed . " admin for the " . $uiElements->nomenclatureFed . " it should be in!"); |
|
| 134 | + } |
|
| 135 | + $federation = $validator->existingFederation($extinfo['country']); |
|
| 136 | + $newcountry = $extinfo['country']; |
|
| 137 | + // see if the inst name is defined in the currently set language; if not, pick its English name; if N/A, pick the last in the list |
|
| 138 | + $prettyprintname = ""; |
|
| 139 | + foreach ($extinfo['names'] as $lang => $name) { |
|
| 140 | + if ($lang == $languageInstance->getLang()) { |
|
| 141 | + $prettyprintname = $name; |
|
| 142 | + } |
|
| 143 | + } |
|
| 144 | + if ($prettyprintname == "" && isset($extinfo['names']['en'])) { |
|
| 145 | + $prettyprintname = $extinfo['names']['en']; |
|
| 146 | + } |
|
| 147 | + if ($prettyprintname == "") { |
|
| 148 | + foreach ($extinfo['names'] as $name) { |
|
| 149 | + $prettyprintname = $name; |
|
| 150 | + } |
|
| 151 | + } |
|
| 152 | + $participant_type = $extinfo['type']; |
|
| 153 | + // fill the rest of the text |
|
| 154 | + $introtext = "EXISTING-FED"; |
|
| 155 | + // do the token creation magic |
|
| 156 | + $newtokens = $mgmt->createTokens(TRUE, $validAddresses, $prettyprintname, $newexternalid); |
|
| 157 | + $loggerInstance->writeAudit($_SESSION['user'], "NEW", "IdP FUTURE - Token created for " . implode(",", $validAddresses)); |
|
| 158 | + break; |
|
| 159 | + default: // includes OPERATION_MODE_INVALID |
|
| 160 | + $wrongcontent = print_r($_POST, TRUE); |
|
| 161 | + echo "<pre>Wrong parameters in POST: |
|
| 162 | 162 | " . htmlspecialchars($wrongcontent) . " |
| 163 | 163 | </pre>"; |
| 164 | - exit(1); |
|
| 164 | + exit(1); |
|
| 165 | 165 | } |
| 166 | 166 | |
| 167 | 167 | // send, and invalidate the token immediately if the mail could not be sent! |
@@ -84,217 +84,217 @@ discard block |
||
| 84 | 84 | } |
| 85 | 85 | |
| 86 | 86 | switch ($inputDecoded['ACTION']) { |
| 87 | - case web\lib\admin\API::ACTION_NEWINST: |
|
| 88 | - // create the inst, no admin, no attributes |
|
| 89 | - $typeRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_INSTTYPE); |
|
| 90 | - if ($typeRaw === FALSE) { |
|
| 91 | - throw new Exception("We did not receive a valid participant type!"); |
|
| 92 | - } |
|
| 93 | - $type = $validator->partType($typeRaw); |
|
| 94 | - $idp = new \core\IdP($fed->newIdP($type, "PENDING", "API")); |
|
| 95 | - // now add all submitted attributes |
|
| 96 | - $inputs = $adminApi->uglify($scrubbedParameters); |
|
| 97 | - $optionParser->processSubmittedFields($idp, $inputs["POST"], $inputs["FILES"]); |
|
| 98 | - $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_CAT_INST_ID => $idp->identifier]); |
|
| 99 | - break; |
|
| 100 | - case web\lib\admin\API::ACTION_DELINST: |
|
| 101 | - try { |
|
| 102 | - $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 103 | - } catch (Exception $e) { |
|
| 104 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 105 | - exit(1); |
|
| 106 | - } |
|
| 107 | - $idp->destroy(); |
|
| 108 | - $adminApi->returnSuccess([]); |
|
| 109 | - break; |
|
| 110 | - case web\lib\admin\API::ACTION_ADMIN_LIST: |
|
| 111 | - try { |
|
| 112 | - $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 113 | - } catch (Exception $e) { |
|
| 114 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 115 | - exit(1); |
|
| 116 | - } |
|
| 117 | - $adminApi->returnSuccess($idp->listOwners()); |
|
| 118 | - break; |
|
| 119 | - case web\lib\admin\API::ACTION_ADMIN_ADD: |
|
| 120 | - // IdP in question |
|
| 121 | - try { |
|
| 122 | - $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 123 | - } catch (Exception $e) { |
|
| 124 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 125 | - exit(1); |
|
| 126 | - } |
|
| 127 | - // here is the token |
|
| 128 | - $mgmt = new core\UserManagement(); |
|
| 129 | - // we know we have an admin ID but scrutinizer wants this checked more explicitly |
|
| 130 | - $admin = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID); |
|
| 131 | - if ($admin === FALSE) { |
|
| 132 | - throw new Exception("A required parameter is missing, and this wasn't caught earlier?!"); |
|
| 133 | - } |
|
| 134 | - $newtokens = $mgmt->createTokens(true, [$admin], $idp); |
|
| 135 | - $URL = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/action_enrollment.php?token=" . array_keys($newtokens)[0]; |
|
| 136 | - $success = ["TOKEN URL" => $URL, "TOKEN" => array_keys($newtokens)[0]]; |
|
| 137 | - // done with the essentials - display in response. But if we also have an email address, send it there |
|
| 138 | - $email = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TARGETMAIL); |
|
| 139 | - if ($email !== FALSE) { |
|
| 140 | - $sent = \core\common\OutsideComm::adminInvitationMail($email, "EXISTING-FED", array_keys($newtokens)[0], $idp->name, $fed, $idp->type); |
|
| 141 | - $success["EMAIL SENT"] = $sent["SENT"]; |
|
| 142 | - if ($sent["SENT"] === TRUE) { |
|
| 143 | - $success["EMAIL TRANSPORT SECURE"] = $sent["TRANSPORT"]; |
|
| 87 | + case web\lib\admin\API::ACTION_NEWINST: |
|
| 88 | + // create the inst, no admin, no attributes |
|
| 89 | + $typeRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_INSTTYPE); |
|
| 90 | + if ($typeRaw === FALSE) { |
|
| 91 | + throw new Exception("We did not receive a valid participant type!"); |
|
| 144 | 92 | } |
| 145 | - } |
|
| 146 | - $adminApi->returnSuccess($success); |
|
| 147 | - break; |
|
| 148 | - case web\lib\admin\API::ACTION_ADMIN_DEL: |
|
| 149 | - // IdP in question |
|
| 150 | - try { |
|
| 151 | - $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 152 | - } catch (Exception $e) { |
|
| 153 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 154 | - exit(1); |
|
| 155 | - } |
|
| 156 | - $currentAdmins = $idp->listOwners(); |
|
| 157 | - $toBeDeleted = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID); |
|
| 158 | - if ($toBeDeleted === FALSE) { |
|
| 159 | - throw new Exception("A required parameter is missing, and this wasn't caught earlier?!"); |
|
| 160 | - } |
|
| 161 | - $found = FALSE; |
|
| 162 | - foreach ($currentAdmins as $oneAdmin) { |
|
| 163 | - if ($oneAdmin['MAIL'] == $toBeDeleted) { |
|
| 164 | - $found = TRUE; |
|
| 165 | - $mgmt = new core\UserManagement(); |
|
| 166 | - $mgmt->removeAdminFromIdP($idp, $oneAdmin['ID']); |
|
| 93 | + $type = $validator->partType($typeRaw); |
|
| 94 | + $idp = new \core\IdP($fed->newIdP($type, "PENDING", "API")); |
|
| 95 | + // now add all submitted attributes |
|
| 96 | + $inputs = $adminApi->uglify($scrubbedParameters); |
|
| 97 | + $optionParser->processSubmittedFields($idp, $inputs["POST"], $inputs["FILES"]); |
|
| 98 | + $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_CAT_INST_ID => $idp->identifier]); |
|
| 99 | + break; |
|
| 100 | + case web\lib\admin\API::ACTION_DELINST: |
|
| 101 | + try { |
|
| 102 | + $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 103 | + } catch (Exception $e) { |
|
| 104 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 105 | + exit(1); |
|
| 167 | 106 | } |
| 168 | - } |
|
| 169 | - if ($found) { |
|
| 107 | + $idp->destroy(); |
|
| 170 | 108 | $adminApi->returnSuccess([]); |
| 171 | - } |
|
| 172 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP " . $idp->identifier); |
|
| 173 | - break; |
|
| 174 | - case web\lib\admin\API::ACTION_STATISTICS_FED: |
|
| 175 | - $adminApi->returnSuccess($fed->downloadStats("array")); |
|
| 176 | - break; |
|
| 177 | - case \web\lib\admin\API::ACTION_NEWPROF_RADIUS: |
|
| 178 | - // fall-through intended: both get mostly identical treatment |
|
| 179 | - case web\lib\admin\API::ACTION_NEWPROF_SB: |
|
| 180 | - try { |
|
| 181 | - $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 182 | - } catch (Exception $e) { |
|
| 183 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 184 | - exit(1); |
|
| 185 | - } |
|
| 186 | - if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_RADIUS) { |
|
| 187 | - $type = "RADIUS"; |
|
| 188 | - } else { |
|
| 189 | - $type = "SILVERBULLET"; |
|
| 190 | - } |
|
| 191 | - $profile = $idp->newProfile($type); |
|
| 192 | - if ($profile === NULL) { |
|
| 193 | - $adminApi->returnError(\web\lib\admin\API::ERROR_INTERNAL_ERROR, "Unable to create a new Profile, for no apparent reason. Please contact support."); |
|
| 194 | - exit(1); |
|
| 195 | - } |
|
| 196 | - $inputs = $adminApi->uglify($scrubbedParameters); |
|
| 197 | - $optionParser->processSubmittedFields($profile, $inputs["POST"], $inputs["FILES"]); |
|
| 198 | - if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_SB) { |
|
| 199 | - // auto-accept ToU? |
|
| 200 | - if ($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_TOU) !== FALSE) { |
|
| 201 | - $profile->addAttribute("hiddenprofile:tou_accepted", NULL, 1); |
|
| 202 | - } |
|
| 203 | - // we're done at this point |
|
| 204 | - $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profile->identifier]); |
|
| 205 | 109 | break; |
| 206 | - } |
|
| 207 | - if (!$profile instanceof core\ProfileRADIUS) { |
|
| 208 | - throw new Exception("Can't be. This is only here to convince Scrutinizer that we're really talking RADIUS."); |
|
| 209 | - } |
|
| 210 | - /* const AUXATTRIB_PROFILE_REALM = 'ATTRIB-PROFILE-REALM'; |
|
| 211 | - const AUXATTRIB_PROFILE_OUTERVALUE = 'ATTRIB-PROFILE-OUTERVALUE'; */ |
|
| 212 | - $realm = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_REALM); |
|
| 213 | - $outer = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_OUTERVALUE); |
|
| 214 | - if ($realm !== FALSE) { |
|
| 215 | - if ($outer === FALSE) { |
|
| 216 | - $outer = ""; |
|
| 217 | - $profile->setAnonymousIDSupport(FALSE); |
|
| 110 | + case web\lib\admin\API::ACTION_ADMIN_LIST: |
|
| 111 | + try { |
|
| 112 | + $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 113 | + } catch (Exception $e) { |
|
| 114 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 115 | + exit(1); |
|
| 116 | + } |
|
| 117 | + $adminApi->returnSuccess($idp->listOwners()); |
|
| 118 | + break; |
|
| 119 | + case web\lib\admin\API::ACTION_ADMIN_ADD: |
|
| 120 | + // IdP in question |
|
| 121 | + try { |
|
| 122 | + $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 123 | + } catch (Exception $e) { |
|
| 124 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 125 | + exit(1); |
|
| 126 | + } |
|
| 127 | + // here is the token |
|
| 128 | + $mgmt = new core\UserManagement(); |
|
| 129 | + // we know we have an admin ID but scrutinizer wants this checked more explicitly |
|
| 130 | + $admin = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID); |
|
| 131 | + if ($admin === FALSE) { |
|
| 132 | + throw new Exception("A required parameter is missing, and this wasn't caught earlier?!"); |
|
| 133 | + } |
|
| 134 | + $newtokens = $mgmt->createTokens(true, [$admin], $idp); |
|
| 135 | + $URL = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/action_enrollment.php?token=" . array_keys($newtokens)[0]; |
|
| 136 | + $success = ["TOKEN URL" => $URL, "TOKEN" => array_keys($newtokens)[0]]; |
|
| 137 | + // done with the essentials - display in response. But if we also have an email address, send it there |
|
| 138 | + $email = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TARGETMAIL); |
|
| 139 | + if ($email !== FALSE) { |
|
| 140 | + $sent = \core\common\OutsideComm::adminInvitationMail($email, "EXISTING-FED", array_keys($newtokens)[0], $idp->name, $fed, $idp->type); |
|
| 141 | + $success["EMAIL SENT"] = $sent["SENT"]; |
|
| 142 | + if ($sent["SENT"] === TRUE) { |
|
| 143 | + $success["EMAIL TRANSPORT SECURE"] = $sent["TRANSPORT"]; |
|
| 144 | + } |
|
| 145 | + } |
|
| 146 | + $adminApi->returnSuccess($success); |
|
| 147 | + break; |
|
| 148 | + case web\lib\admin\API::ACTION_ADMIN_DEL: |
|
| 149 | + // IdP in question |
|
| 150 | + try { |
|
| 151 | + $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 152 | + } catch (Exception $e) { |
|
| 153 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 154 | + exit(1); |
|
| 155 | + } |
|
| 156 | + $currentAdmins = $idp->listOwners(); |
|
| 157 | + $toBeDeleted = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_ADMINID); |
|
| 158 | + if ($toBeDeleted === FALSE) { |
|
| 159 | + throw new Exception("A required parameter is missing, and this wasn't caught earlier?!"); |
|
| 160 | + } |
|
| 161 | + $found = FALSE; |
|
| 162 | + foreach ($currentAdmins as $oneAdmin) { |
|
| 163 | + if ($oneAdmin['MAIL'] == $toBeDeleted) { |
|
| 164 | + $found = TRUE; |
|
| 165 | + $mgmt = new core\UserManagement(); |
|
| 166 | + $mgmt->removeAdminFromIdP($idp, $oneAdmin['ID']); |
|
| 167 | + } |
|
| 168 | + } |
|
| 169 | + if ($found) { |
|
| 170 | + $adminApi->returnSuccess([]); |
|
| 171 | + } |
|
| 172 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The admin with ID $toBeDeleted is not associated to IdP " . $idp->identifier); |
|
| 173 | + break; |
|
| 174 | + case web\lib\admin\API::ACTION_STATISTICS_FED: |
|
| 175 | + $adminApi->returnSuccess($fed->downloadStats("array")); |
|
| 176 | + break; |
|
| 177 | + case \web\lib\admin\API::ACTION_NEWPROF_RADIUS: |
|
| 178 | + // fall-through intended: both get mostly identical treatment |
|
| 179 | + case web\lib\admin\API::ACTION_NEWPROF_SB: |
|
| 180 | + try { |
|
| 181 | + $idp = $validator->existingIdP($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_INST_ID)); |
|
| 182 | + } catch (Exception $e) { |
|
| 183 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "IdP identifier does not exist!"); |
|
| 184 | + exit(1); |
|
| 185 | + } |
|
| 186 | + if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_RADIUS) { |
|
| 187 | + $type = "RADIUS"; |
|
| 218 | 188 | } else { |
| 219 | - $outer = $outer . "@"; |
|
| 220 | - $profile->setAnonymousIDSupport(TRUE); |
|
| 189 | + $type = "SILVERBULLET"; |
|
| 221 | 190 | } |
| 222 | - $profile->setRealm($outer . $realm); |
|
| 223 | - } |
|
| 224 | - /* const AUXATTRIB_PROFILE_TESTUSER = 'ATTRIB-PROFILE-TESTUSER'; */ |
|
| 225 | - $testuser = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_TESTUSER); |
|
| 226 | - if ($testuser !== FALSE) { |
|
| 227 | - $profile->setRealmCheckUser(TRUE, $testuser); |
|
| 228 | - } |
|
| 229 | - /* const AUXATTRIB_PROFILE_INPUT_HINT = 'ATTRIB-PROFILE-HINTREALM'; |
|
| 191 | + $profile = $idp->newProfile($type); |
|
| 192 | + if ($profile === NULL) { |
|
| 193 | + $adminApi->returnError(\web\lib\admin\API::ERROR_INTERNAL_ERROR, "Unable to create a new Profile, for no apparent reason. Please contact support."); |
|
| 194 | + exit(1); |
|
| 195 | + } |
|
| 196 | + $inputs = $adminApi->uglify($scrubbedParameters); |
|
| 197 | + $optionParser->processSubmittedFields($profile, $inputs["POST"], $inputs["FILES"]); |
|
| 198 | + if ($inputDecoded['ACTION'] == web\lib\admin\API::ACTION_NEWPROF_SB) { |
|
| 199 | + // auto-accept ToU? |
|
| 200 | + if ($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_TOU) !== FALSE) { |
|
| 201 | + $profile->addAttribute("hiddenprofile:tou_accepted", NULL, 1); |
|
| 202 | + } |
|
| 203 | + // we're done at this point |
|
| 204 | + $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profile->identifier]); |
|
| 205 | + break; |
|
| 206 | + } |
|
| 207 | + if (!$profile instanceof core\ProfileRADIUS) { |
|
| 208 | + throw new Exception("Can't be. This is only here to convince Scrutinizer that we're really talking RADIUS."); |
|
| 209 | + } |
|
| 210 | + /* const AUXATTRIB_PROFILE_REALM = 'ATTRIB-PROFILE-REALM'; |
|
| 211 | + const AUXATTRIB_PROFILE_OUTERVALUE = 'ATTRIB-PROFILE-OUTERVALUE'; */ |
|
| 212 | + $realm = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_REALM); |
|
| 213 | + $outer = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_OUTERVALUE); |
|
| 214 | + if ($realm !== FALSE) { |
|
| 215 | + if ($outer === FALSE) { |
|
| 216 | + $outer = ""; |
|
| 217 | + $profile->setAnonymousIDSupport(FALSE); |
|
| 218 | + } else { |
|
| 219 | + $outer = $outer . "@"; |
|
| 220 | + $profile->setAnonymousIDSupport(TRUE); |
|
| 221 | + } |
|
| 222 | + $profile->setRealm($outer . $realm); |
|
| 223 | + } |
|
| 224 | + /* const AUXATTRIB_PROFILE_TESTUSER = 'ATTRIB-PROFILE-TESTUSER'; */ |
|
| 225 | + $testuser = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_TESTUSER); |
|
| 226 | + if ($testuser !== FALSE) { |
|
| 227 | + $profile->setRealmCheckUser(TRUE, $testuser); |
|
| 228 | + } |
|
| 229 | + /* const AUXATTRIB_PROFILE_INPUT_HINT = 'ATTRIB-PROFILE-HINTREALM'; |
|
| 230 | 230 | const AUXATTRIB_PROFILE_INPUT_VERIFY = 'ATTRIB-PROFILE-VERIFYREALM'; */ |
| 231 | - $hint = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_HINT); |
|
| 232 | - $enforce = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_VERIFY); |
|
| 233 | - if ($enforce !== FALSE) { |
|
| 234 | - $profile->setInputVerificationPreference($enforce, $hint); |
|
| 235 | - } |
|
| 236 | - /* const AUXATTRIB_PROFILE_EAPTYPE */ |
|
| 237 | - $iterator = 1; |
|
| 238 | - foreach ($scrubbedParameters as $oneParam) { |
|
| 239 | - if ($oneParam['NAME'] == web\lib\admin\API::AUXATTRIB_PROFILE_EAPTYPE && is_int($oneParam["VALUE"])) { |
|
| 240 | - $type = new \core\common\EAP($oneParam["VALUE"]); |
|
| 241 | - $profile->addSupportedEapMethod($type, $iterator); |
|
| 242 | - $iterator = $iterator + 1; |
|
| 231 | + $hint = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_HINT); |
|
| 232 | + $enforce = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_PROFILE_INPUT_VERIFY); |
|
| 233 | + if ($enforce !== FALSE) { |
|
| 234 | + $profile->setInputVerificationPreference($enforce, $hint); |
|
| 243 | 235 | } |
| 244 | - } |
|
| 245 | - // reinstantiate $profile freshly from DB - it was updated in the process |
|
| 246 | - $profileFresh = new core\ProfileRADIUS($profile->identifier); |
|
| 247 | - $profileFresh->prepShowtime(); |
|
| 248 | - $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profileFresh->identifier]); |
|
| 249 | - break; |
|
| 250 | - case web\lib\admin\API::ACTION_ENDUSER_NEW: |
|
| 251 | - $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 252 | - if ($prof_id === FALSE) { |
|
| 253 | - exit(1); |
|
| 254 | - } |
|
| 255 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 256 | - if ($evaluation === FALSE) { |
|
| 257 | - exit(1); |
|
| 258 | - } |
|
| 259 | - list($idp, $profile) = $evaluation; |
|
| 260 | - $user = $validator->string($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME)); |
|
| 261 | - $expiryRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_EXPIRY); |
|
| 262 | - if ($expiryRaw === FALSE) { |
|
| 263 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The expiry date wasn't found in the request."); |
|
| 264 | - exit(1); |
|
| 265 | - } |
|
| 266 | - $expiry = new DateTime($expiryRaw); |
|
| 267 | - try { |
|
| 268 | - $retval = $profile->addUser($user, $expiry); |
|
| 269 | - } catch (Exception $e) { |
|
| 270 | - $adminApi->returnError(web\lib\admin\API::ERROR_INTERNAL_ERROR, "The operation failed. Maybe a duplicate username, or malformed expiry date?"); |
|
| 271 | - exit(1); |
|
| 272 | - } |
|
| 273 | - if ($retval == 0) {// that didn't work, it seems |
|
| 274 | - $adminApi->returnError(web\lib\admin\API::ERROR_INTERNAL_ERROR, "The operation failed subtly. Contact the administrators."); |
|
| 275 | - exit(1); |
|
| 276 | - } |
|
| 277 | - $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_SB_USERNAME => $user, \web\lib\admin\API::AUXATTRIB_SB_USERID => $retval]); |
|
| 278 | - break; |
|
| 279 | - case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE: |
|
| 280 | - // fall-through intended: both actions are very similar |
|
| 281 | - case \web\lib\admin\API::ACTION_TOKEN_NEW: |
|
| 282 | - $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 283 | - if ($profile_id === FALSE) { |
|
| 284 | - exit(1); |
|
| 285 | - } |
|
| 286 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 287 | - if ($evaluation === FALSE) { |
|
| 288 | - exit(1); |
|
| 289 | - } |
|
| 290 | - list($idp, $profile) = $evaluation; |
|
| 291 | - $userId = $validator->integer($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID)); |
|
| 292 | - if ($userId === FALSE) { |
|
| 293 | - $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "User ID is not an integer."); |
|
| 294 | - exit(1); |
|
| 295 | - } |
|
| 296 | - $additionalInfo = []; |
|
| 297 | - switch ($inputDecoded['ACTION']) { // this is where the two differ |
|
| 236 | + /* const AUXATTRIB_PROFILE_EAPTYPE */ |
|
| 237 | + $iterator = 1; |
|
| 238 | + foreach ($scrubbedParameters as $oneParam) { |
|
| 239 | + if ($oneParam['NAME'] == web\lib\admin\API::AUXATTRIB_PROFILE_EAPTYPE && is_int($oneParam["VALUE"])) { |
|
| 240 | + $type = new \core\common\EAP($oneParam["VALUE"]); |
|
| 241 | + $profile->addSupportedEapMethod($type, $iterator); |
|
| 242 | + $iterator = $iterator + 1; |
|
| 243 | + } |
|
| 244 | + } |
|
| 245 | + // reinstantiate $profile freshly from DB - it was updated in the process |
|
| 246 | + $profileFresh = new core\ProfileRADIUS($profile->identifier); |
|
| 247 | + $profileFresh->prepShowtime(); |
|
| 248 | + $adminApi->returnSuccess([\web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID => $profileFresh->identifier]); |
|
| 249 | + break; |
|
| 250 | + case web\lib\admin\API::ACTION_ENDUSER_NEW: |
|
| 251 | + $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 252 | + if ($prof_id === FALSE) { |
|
| 253 | + exit(1); |
|
| 254 | + } |
|
| 255 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 256 | + if ($evaluation === FALSE) { |
|
| 257 | + exit(1); |
|
| 258 | + } |
|
| 259 | + list($idp, $profile) = $evaluation; |
|
| 260 | + $user = $validator->string($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME)); |
|
| 261 | + $expiryRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_EXPIRY); |
|
| 262 | + if ($expiryRaw === FALSE) { |
|
| 263 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "The expiry date wasn't found in the request."); |
|
| 264 | + exit(1); |
|
| 265 | + } |
|
| 266 | + $expiry = new DateTime($expiryRaw); |
|
| 267 | + try { |
|
| 268 | + $retval = $profile->addUser($user, $expiry); |
|
| 269 | + } catch (Exception $e) { |
|
| 270 | + $adminApi->returnError(web\lib\admin\API::ERROR_INTERNAL_ERROR, "The operation failed. Maybe a duplicate username, or malformed expiry date?"); |
|
| 271 | + exit(1); |
|
| 272 | + } |
|
| 273 | + if ($retval == 0) {// that didn't work, it seems |
|
| 274 | + $adminApi->returnError(web\lib\admin\API::ERROR_INTERNAL_ERROR, "The operation failed subtly. Contact the administrators."); |
|
| 275 | + exit(1); |
|
| 276 | + } |
|
| 277 | + $adminApi->returnSuccess([web\lib\admin\API::AUXATTRIB_SB_USERNAME => $user, \web\lib\admin\API::AUXATTRIB_SB_USERID => $retval]); |
|
| 278 | + break; |
|
| 279 | + case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE: |
|
| 280 | + // fall-through intended: both actions are very similar |
|
| 281 | + case \web\lib\admin\API::ACTION_TOKEN_NEW: |
|
| 282 | + $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 283 | + if ($profile_id === FALSE) { |
|
| 284 | + exit(1); |
|
| 285 | + } |
|
| 286 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 287 | + if ($evaluation === FALSE) { |
|
| 288 | + exit(1); |
|
| 289 | + } |
|
| 290 | + list($idp, $profile) = $evaluation; |
|
| 291 | + $userId = $validator->integer($adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID)); |
|
| 292 | + if ($userId === FALSE) { |
|
| 293 | + $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "User ID is not an integer."); |
|
| 294 | + exit(1); |
|
| 295 | + } |
|
| 296 | + $additionalInfo = []; |
|
| 297 | + switch ($inputDecoded['ACTION']) { // this is where the two differ |
|
| 298 | 298 | case \web\lib\admin\API::ACTION_ENDUSER_DEACTIVATE: |
| 299 | 299 | $result = $profile->deactivateUser($userId); |
| 300 | 300 | break; |
@@ -327,7 +327,7 @@ discard block |
||
| 327 | 327 | } |
| 328 | 328 | } |
| 329 | 329 | break; |
| 330 | - } |
|
| 330 | + } |
|
| 331 | 331 | |
| 332 | 332 | if ($result !== TRUE) { |
| 333 | 333 | $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "These parameters did not lead to an existing, active user."); |
@@ -335,65 +335,65 @@ discard block |
||
| 335 | 335 | } |
| 336 | 336 | $adminApi->returnSuccess($additionalInfo); |
| 337 | 337 | break; |
| 338 | - case \web\lib\admin\API::ACTION_ENDUSER_IDENTIFY: |
|
| 339 | - $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 340 | - if ($profile_id === FALSE) { |
|
| 341 | - exit(1); |
|
| 342 | - } |
|
| 343 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 344 | - if ($evaluation === FALSE) { |
|
| 345 | - exit(1); |
|
| 346 | - } |
|
| 347 | - list($idp, $profile) = $evaluation; |
|
| 348 | - $userId = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID); |
|
| 349 | - $userName = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME); |
|
| 350 | - $certSerial = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 351 | - if ($userId === FALSE && $userName === FALSE && $certSerial === FALSE) { |
|
| 352 | - // we need at least one of those |
|
| 353 | - $adminApi->returnError(\web\lib\admin\API::ERROR_MISSING_PARAMETER, "At least one of User ID, Username, or certificate serial is required."); |
|
| 354 | - } |
|
| 355 | - $userlist = $profile->listAllUsers(); |
|
| 356 | - if ($userName === FALSE && $certSerial === FALSE) { // we got a user ID |
|
| 357 | - if (!isset($userlist[$userId])) { |
|
| 358 | - return $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "This user ID does not exist in this profile."); |
|
| 338 | + case \web\lib\admin\API::ACTION_ENDUSER_IDENTIFY: |
|
| 339 | + $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 340 | + if ($profile_id === FALSE) { |
|
| 341 | + exit(1); |
|
| 359 | 342 | } |
| 360 | - $adminApi->returnSuccess([$userId => $userlist[$userId]]); |
|
| 361 | - } |
|
| 362 | - if ($userId === FALSE && $certSerial === FALSE) { // we got a username |
|
| 363 | - $key = array_search($userName, $userlist); |
|
| 364 | - if ($key === FALSE) { |
|
| 365 | - return $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "This username does not exist in this profile."); |
|
| 343 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 344 | + if ($evaluation === FALSE) { |
|
| 345 | + exit(1); |
|
| 366 | 346 | } |
| 367 | - $adminApi->returnSuccess([$key => $userlist[$key]]); |
|
| 368 | - } |
|
| 369 | - if ($userId === FALSE && $userName === FALSE) { // we got a cert serial |
|
| 370 | - $serial = explode(":", $certSerial); |
|
| 371 | - $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 372 | - if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 373 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 347 | + list($idp, $profile) = $evaluation; |
|
| 348 | + $userId = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID); |
|
| 349 | + $userName = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERNAME); |
|
| 350 | + $certSerial = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 351 | + if ($userId === FALSE && $userName === FALSE && $certSerial === FALSE) { |
|
| 352 | + // we need at least one of those |
|
| 353 | + $adminApi->returnError(\web\lib\admin\API::ERROR_MISSING_PARAMETER, "At least one of User ID, Username, or certificate serial is required."); |
|
| 374 | 354 | } |
| 375 | - if ($cert->profileId != $profile->identifier) { |
|
| 376 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 355 | + $userlist = $profile->listAllUsers(); |
|
| 356 | + if ($userName === FALSE && $certSerial === FALSE) { // we got a user ID |
|
| 357 | + if (!isset($userlist[$userId])) { |
|
| 358 | + return $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "This user ID does not exist in this profile."); |
|
| 359 | + } |
|
| 360 | + $adminApi->returnSuccess([$userId => $userlist[$userId]]); |
|
| 377 | 361 | } |
| 378 | - $adminApi->returnSuccess([$cert->userId => $userlist[$cert->userId]]); |
|
| 379 | - } |
|
| 380 | - $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "Only exactly one of User ID, username or cert serial can be specified."); |
|
| 381 | - break; |
|
| 382 | - case \web\lib\admin\API::ACTION_ENDUSER_LIST: |
|
| 383 | - // fall-through: those two are similar |
|
| 384 | - case \web\lib\admin\API::ACTION_TOKEN_LIST: |
|
| 385 | - $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 386 | - if ($profile_id === FALSE) { |
|
| 387 | - exit(1); |
|
| 388 | - } |
|
| 389 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 390 | - if ($evaluation === FALSE) { |
|
| 391 | - exit(1); |
|
| 392 | - } |
|
| 393 | - list($idp, $profile) = $evaluation; |
|
| 394 | - $allUsers = $profile->listAllUsers(); |
|
| 395 | - // this is where they differ |
|
| 396 | - switch ($inputDecoded['ACTION']) { |
|
| 362 | + if ($userId === FALSE && $certSerial === FALSE) { // we got a username |
|
| 363 | + $key = array_search($userName, $userlist); |
|
| 364 | + if ($key === FALSE) { |
|
| 365 | + return $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "This username does not exist in this profile."); |
|
| 366 | + } |
|
| 367 | + $adminApi->returnSuccess([$key => $userlist[$key]]); |
|
| 368 | + } |
|
| 369 | + if ($userId === FALSE && $userName === FALSE) { // we got a cert serial |
|
| 370 | + $serial = explode(":", $certSerial); |
|
| 371 | + $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 372 | + if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 373 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 374 | + } |
|
| 375 | + if ($cert->profileId != $profile->identifier) { |
|
| 376 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 377 | + } |
|
| 378 | + $adminApi->returnSuccess([$cert->userId => $userlist[$cert->userId]]); |
|
| 379 | + } |
|
| 380 | + $adminApi->returnError(\web\lib\admin\API::ERROR_INVALID_PARAMETER, "Only exactly one of User ID, username or cert serial can be specified."); |
|
| 381 | + break; |
|
| 382 | + case \web\lib\admin\API::ACTION_ENDUSER_LIST: |
|
| 383 | + // fall-through: those two are similar |
|
| 384 | + case \web\lib\admin\API::ACTION_TOKEN_LIST: |
|
| 385 | + $profile_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 386 | + if ($profile_id === FALSE) { |
|
| 387 | + exit(1); |
|
| 388 | + } |
|
| 389 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $profile_id); |
|
| 390 | + if ($evaluation === FALSE) { |
|
| 391 | + exit(1); |
|
| 392 | + } |
|
| 393 | + list($idp, $profile) = $evaluation; |
|
| 394 | + $allUsers = $profile->listAllUsers(); |
|
| 395 | + // this is where they differ |
|
| 396 | + switch ($inputDecoded['ACTION']) { |
|
| 397 | 397 | case \web\lib\admin\API::ACTION_ENDUSER_LIST: |
| 398 | 398 | $adminApi->returnSuccess($allUsers); |
| 399 | 399 | break; |
@@ -412,105 +412,105 @@ discard block |
||
| 412 | 412 | $infoSet[$oneTokenObject->userId] = [\web\lib\admin\API::AUXATTRIB_TOKEN => $oneTokenObject->invitationTokenString, "STATUS" => $oneTokenObject->invitationTokenStatus]; |
| 413 | 413 | } |
| 414 | 414 | $adminApi->returnSuccess($infoSet); |
| 415 | - } |
|
| 416 | - break; |
|
| 417 | - case \web\lib\admin\API::ACTION_TOKEN_REVOKE: |
|
| 418 | - $tokenRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TOKEN); |
|
| 419 | - if ($tokenRaw === FALSE) { |
|
| 420 | - exit(1); |
|
| 421 | - } |
|
| 422 | - $token = new core\SilverbulletInvitation($tokenRaw); |
|
| 423 | - if ($token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_VALID && $token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_PARTIALLY_REDEEMED) { |
|
| 424 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "This is not a currently valid token."); |
|
| 425 | - exit(1); |
|
| 426 | - } |
|
| 427 | - $token->revokeInvitation(); |
|
| 428 | - $adminApi->returnSuccess([]); |
|
| 429 | - break; |
|
| 430 | - case \web\lib\admin\API::ACTION_CERT_LIST: |
|
| 431 | - $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 432 | - $user_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID); |
|
| 433 | - if ($prof_id === FALSE || !is_int($user_id)) { |
|
| 434 | - exit(1); |
|
| 435 | - } |
|
| 436 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 437 | - if ($evaluation === FALSE) { |
|
| 438 | - exit(1); |
|
| 439 | - } |
|
| 440 | - list($idp, $profile) = $evaluation; |
|
| 441 | - $invitations = $profile->userStatus($user_id); |
|
| 442 | - // now pull out cert information from the object |
|
| 443 | - $certs = []; |
|
| 444 | - foreach ($invitations as $oneInvitation) { |
|
| 445 | - $certs = array_merge($certs, $oneInvitation->associatedCertificates); |
|
| 446 | - } |
|
| 447 | - // extract relevant subset of information from cert objects |
|
| 448 | - $certDetails = []; |
|
| 449 | - foreach ($certs as $cert) { |
|
| 450 | - $certDetails[$cert->ca_type . ":" . $cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation]; |
|
| 451 | - } |
|
| 452 | - $adminApi->returnSuccess($certDetails); |
|
| 453 | - break; |
|
| 454 | - case \web\lib\admin\API::ACTION_CERT_REVOKE: |
|
| 455 | - $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 456 | - if ($prof_id === FALSE) { |
|
| 457 | - exit(1); |
|
| 458 | - } |
|
| 459 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 460 | - if ($evaluation === FALSE) { |
|
| 461 | - exit(1); |
|
| 462 | - } |
|
| 463 | - list($idp, $profile) = $evaluation; |
|
| 464 | - // tear apart the serial |
|
| 465 | - $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 466 | - if ($serialRaw === FALSE) { |
|
| 467 | - exit(1); |
|
| 468 | - } |
|
| 469 | - $serial = explode(":", $serialRaw); |
|
| 470 | - $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 471 | - if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 472 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 473 | - } |
|
| 474 | - if ($cert->profileId != $profile->identifier) { |
|
| 475 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 476 | - } |
|
| 477 | - $cert->revokeCertificate(); |
|
| 478 | - $adminApi->returnSuccess([]); |
|
| 415 | + } |
|
| 479 | 416 | break; |
| 480 | - case \web\lib\admin\API::ACTION_CERT_ANNOTATE: |
|
| 481 | - $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 482 | - if ($prof_id === FALSE) { |
|
| 483 | - exit(1); |
|
| 484 | - } |
|
| 485 | - $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 486 | - if ($evaluation === FALSE) { |
|
| 487 | - exit(1); |
|
| 488 | - } |
|
| 489 | - list($idp, $profile) = $evaluation; |
|
| 490 | - // tear apart the serial |
|
| 491 | - $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 492 | - if ($serialRaw === FALSE) { |
|
| 493 | - exit(1); |
|
| 494 | - } |
|
| 495 | - $serial = explode(":", $serialRaw); |
|
| 496 | - $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 497 | - if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 498 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 499 | - } |
|
| 500 | - if ($cert->profileId != $profile->identifier) { |
|
| 501 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 502 | - } |
|
| 503 | - $annotationRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTANNOTATION); |
|
| 504 | - if ($annotationRaw === FALSE) { |
|
| 505 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Unable to extract annotation."); |
|
| 417 | + case \web\lib\admin\API::ACTION_TOKEN_REVOKE: |
|
| 418 | + $tokenRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_TOKEN); |
|
| 419 | + if ($tokenRaw === FALSE) { |
|
| 420 | + exit(1); |
|
| 421 | + } |
|
| 422 | + $token = new core\SilverbulletInvitation($tokenRaw); |
|
| 423 | + if ($token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_VALID && $token->invitationTokenStatus !== core\SilverbulletInvitation::SB_TOKENSTATUS_PARTIALLY_REDEEMED) { |
|
| 424 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "This is not a currently valid token."); |
|
| 425 | + exit(1); |
|
| 426 | + } |
|
| 427 | + $token->revokeInvitation(); |
|
| 428 | + $adminApi->returnSuccess([]); |
|
| 506 | 429 | break; |
| 507 | - } |
|
| 508 | - $annotation = json_decode($annotationRaw, TRUE); |
|
| 509 | - $cert->annotate($annotation); |
|
| 510 | - $adminApi->returnSuccess([]); |
|
| 430 | + case \web\lib\admin\API::ACTION_CERT_LIST: |
|
| 431 | + $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 432 | + $user_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_USERID); |
|
| 433 | + if ($prof_id === FALSE || !is_int($user_id)) { |
|
| 434 | + exit(1); |
|
| 435 | + } |
|
| 436 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 437 | + if ($evaluation === FALSE) { |
|
| 438 | + exit(1); |
|
| 439 | + } |
|
| 440 | + list($idp, $profile) = $evaluation; |
|
| 441 | + $invitations = $profile->userStatus($user_id); |
|
| 442 | + // now pull out cert information from the object |
|
| 443 | + $certs = []; |
|
| 444 | + foreach ($invitations as $oneInvitation) { |
|
| 445 | + $certs = array_merge($certs, $oneInvitation->associatedCertificates); |
|
| 446 | + } |
|
| 447 | + // extract relevant subset of information from cert objects |
|
| 448 | + $certDetails = []; |
|
| 449 | + foreach ($certs as $cert) { |
|
| 450 | + $certDetails[$cert->ca_type . ":" . $cert->serial] = ["ISSUED" => $cert->issued, "EXPIRY" => $cert->expiry, "STATUS" => $cert->status, "DEVICE" => $cert->device, "CN" => $cert->username, "ANNOTATION" => $cert->annotation]; |
|
| 451 | + } |
|
| 452 | + $adminApi->returnSuccess($certDetails); |
|
| 453 | + break; |
|
| 454 | + case \web\lib\admin\API::ACTION_CERT_REVOKE: |
|
| 455 | + $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 456 | + if ($prof_id === FALSE) { |
|
| 457 | + exit(1); |
|
| 458 | + } |
|
| 459 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 460 | + if ($evaluation === FALSE) { |
|
| 461 | + exit(1); |
|
| 462 | + } |
|
| 463 | + list($idp, $profile) = $evaluation; |
|
| 464 | + // tear apart the serial |
|
| 465 | + $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 466 | + if ($serialRaw === FALSE) { |
|
| 467 | + exit(1); |
|
| 468 | + } |
|
| 469 | + $serial = explode(":", $serialRaw); |
|
| 470 | + $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 471 | + if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 472 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 473 | + } |
|
| 474 | + if ($cert->profileId != $profile->identifier) { |
|
| 475 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 476 | + } |
|
| 477 | + $cert->revokeCertificate(); |
|
| 478 | + $adminApi->returnSuccess([]); |
|
| 479 | + break; |
|
| 480 | + case \web\lib\admin\API::ACTION_CERT_ANNOTATE: |
|
| 481 | + $prof_id = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_CAT_PROFILE_ID); |
|
| 482 | + if ($prof_id === FALSE) { |
|
| 483 | + exit(1); |
|
| 484 | + } |
|
| 485 | + $evaluation = $adminApi->commonSbProfileChecks($fed, $prof_id); |
|
| 486 | + if ($evaluation === FALSE) { |
|
| 487 | + exit(1); |
|
| 488 | + } |
|
| 489 | + list($idp, $profile) = $evaluation; |
|
| 490 | + // tear apart the serial |
|
| 491 | + $serialRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTSERIAL); |
|
| 492 | + if ($serialRaw === FALSE) { |
|
| 493 | + exit(1); |
|
| 494 | + } |
|
| 495 | + $serial = explode(":", $serialRaw); |
|
| 496 | + $cert = new \core\SilverbulletCertificate($serial[1], $serial[0]); |
|
| 497 | + if ($cert->status == \core\SilverbulletCertificate::CERTSTATUS_INVALID) { |
|
| 498 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial not found."); |
|
| 499 | + } |
|
| 500 | + if ($cert->profileId != $profile->identifier) { |
|
| 501 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Serial does not belong to this profile."); |
|
| 502 | + } |
|
| 503 | + $annotationRaw = $adminApi->firstParameterInstance($scrubbedParameters, web\lib\admin\API::AUXATTRIB_SB_CERTANNOTATION); |
|
| 504 | + if ($annotationRaw === FALSE) { |
|
| 505 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_PARAMETER, "Unable to extract annotation."); |
|
| 506 | + break; |
|
| 507 | + } |
|
| 508 | + $annotation = json_decode($annotationRaw, TRUE); |
|
| 509 | + $cert->annotate($annotation); |
|
| 510 | + $adminApi->returnSuccess([]); |
|
| 511 | 511 | |
| 512 | - break; |
|
| 512 | + break; |
|
| 513 | 513 | |
| 514 | - default: |
|
| 515 | - $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_ACTION, "Not implemented yet."); |
|
| 514 | + default: |
|
| 515 | + $adminApi->returnError(web\lib\admin\API::ERROR_INVALID_ACTION, "Not implemented yet."); |
|
| 516 | 516 | } |
| 517 | 517 | \ No newline at end of file |
@@ -49,14 +49,14 @@ |
||
| 49 | 49 | } |
| 50 | 50 | |
| 51 | 51 | switch ($_GET['token']) { |
| 52 | - case "SELF-REGISTER": |
|
| 53 | - $token = "SELF-REGISTER"; |
|
| 54 | - $checkval = \core\UserManagement::TOKENSTATUS_OK_NEW; |
|
| 55 | - $federation = \config\ConfAssistant::CONSORTIUM['selfservice_registration']; |
|
| 56 | - break; |
|
| 57 | - default: |
|
| 58 | - $token = $validator->token(filter_input(INPUT_GET,'token',FILTER_SANITIZE_STRING)); |
|
| 59 | - $checkval = $usermgmt->checkTokenValidity($token); |
|
| 52 | + case "SELF-REGISTER": |
|
| 53 | + $token = "SELF-REGISTER"; |
|
| 54 | + $checkval = \core\UserManagement::TOKENSTATUS_OK_NEW; |
|
| 55 | + $federation = \config\ConfAssistant::CONSORTIUM['selfservice_registration']; |
|
| 56 | + break; |
|
| 57 | + default: |
|
| 58 | + $token = $validator->token(filter_input(INPUT_GET,'token',FILTER_SANITIZE_STRING)); |
|
| 59 | + $checkval = $usermgmt->checkTokenValidity($token); |
|
| 60 | 60 | } |
| 61 | 61 | |
| 62 | 62 | if ($checkval < 0) { |
@@ -67,10 +67,11 @@ discard block |
||
| 67 | 67 | |
| 68 | 68 | $out_string .= $this->printNMScript($SSIDs,$delSSIDs); |
| 69 | 69 | $out_string .= $this->writeWpaConf($SSIDs); |
| 70 | - if($this->selected_eap == \core\common\EAP::EAPTYPE_TLS) |
|
| 71 | - $out_string .= $this->printP12Dialog(); |
|
| 72 | - else |
|
| 73 | - $out_string .= $this->printPasswordDialog(); |
|
| 70 | + if($this->selected_eap == \core\common\EAP::EAPTYPE_TLS) { |
|
| 71 | + $out_string .= $this->printP12Dialog(); |
|
| 72 | + } else { |
|
| 73 | + $out_string .= $this->printPasswordDialog(); |
|
| 74 | + } |
|
| 74 | 75 | $out_string .= $this->checkNMResultAndCont(); |
| 75 | 76 | $installer_path = $this->installerBasename.'.sh'; |
| 76 | 77 | file_put_contents($installer_path, $out_string); |
@@ -86,13 +87,15 @@ discard block |
||
| 86 | 87 | if($ssid_ct > 1) { |
| 87 | 88 | if($ssid_ct > 2) { |
| 88 | 89 | $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to the following networks:"),implode(', ',\config\ConfAssistant::CONSORTIUM['ssid']))." "; |
| 89 | - } else |
|
| 90 | - $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to:"),implode(', ',\config\ConfAssistant::CONSORTIUM['ssid']))." "; |
|
| 90 | + } else { |
|
| 91 | + $out .= sprintf(_("In addition to <strong>%s</strong> the installer will also configure access to:"),implode(', ',\config\ConfAssistant::CONSORTIUM['ssid']))." "; |
|
| 92 | + } |
|
| 91 | 93 | $i = 0; |
| 92 | 94 | foreach ($this->attributes['internal:SSID'] as $ssid=>$v) { |
| 93 | 95 | if(! in_array($ssid, \config\ConfAssistant::CONSORTIUM['ssid'])) { |
| 94 | - if($i > 0) |
|
| 95 | - $out .= ", "; |
|
| 96 | + if($i > 0) { |
|
| 97 | + $out .= ", "; |
|
| 98 | + } |
|
| 96 | 99 | $i++; |
| 97 | 100 | $out .= "<strong>$ssid</strong>"; |
| 98 | 101 | } |
@@ -100,9 +103,9 @@ discard block |
||
| 100 | 103 | $out .= "<p>"; |
| 101 | 104 | } |
| 102 | 105 | $out .= _("The installer will create .cat_installer sub-directory in your home directory and will copy your server certificates there."); |
| 103 | -if($this->eap == \core\common\EAP::EAPTYPE_TLS) |
|
| 106 | +if($this->eap == \core\common\EAP::EAPTYPE_TLS) { |
|
| 104 | 107 | $out .= _("In order to connect to the network you will need a personal certificate in the form of a p12 file. You should obtain this certificate from your home institution. Consult the support page to find out how this certificate can be obtained. Such certificate files are password protected. You should have both the file and the password available during the installation process. Your p12 file will also be copied to the .cat_installer directory."); |
| 105 | -else { |
|
| 108 | +} else { |
|
| 106 | 109 | $out .= _("In order to connect to the network you will need an account from your home institution. You should consult the support page to find out how this account can be obtained. It is very likely that your account is already activated."); |
| 107 | 110 | $out .= "<p>"; |
| 108 | 111 | $out .= _("You will be requested to enter your account credentials during the installation. This information will be saved so that you will reconnect to the network automatically each time you are in the range."); |
@@ -150,10 +153,11 @@ discard block |
||
| 150 | 153 | |
| 151 | 154 | |
| 152 | 155 | private function printProfileConfirmation() { |
| 153 | - if($this->attributes['internal:profile_count'][0] > 1) |
|
| 154 | - $out = 'if ! ask "'.sprintf(_("This installer will only work properly if you are a member of %s and the user group: %s."),'${bf}'.$this->attributes['general:instname'][0].'${n}','${bf}'.$this->attributes['profile:name'][0]).'${n}"'; |
|
| 155 | - else |
|
| 156 | - $out = 'if ! ask "'.sprintf(_("This installer will only work properly if you are a member of %s."),'${bf}'.$this->attributes['general:instname'][0]).'${n}"'; |
|
| 156 | + if($this->attributes['internal:profile_count'][0] > 1) { |
|
| 157 | + $out = 'if ! ask "'.sprintf(_("This installer will only work properly if you are a member of %s and the user group: %s."),'${bf}'.$this->attributes['general:instname'][0].'${n}','${bf}'.$this->attributes['profile:name'][0]).'${n}"'; |
|
| 158 | + } else { |
|
| 159 | + $out = 'if ! ask "'.sprintf(_("This installer will only work properly if you are a member of %s."),'${bf}'.$this->attributes['general:instname'][0]).'${n}"'; |
|
| 160 | + } |
|
| 157 | 161 | $out .= ' "'._("Continue").'" 1 ; then exit; fi |
| 158 | 162 | '; |
| 159 | 163 | return $out; |
@@ -404,9 +408,10 @@ discard block |
||
| 404 | 408 | eap='.$e['OUTER'].' |
| 405 | 409 | ca_cert="${HOME}/'.$this->local_dir.'/ca.pem" |
| 406 | 410 | identity="${USER_NAME}"'; |
| 407 | - if($this->server_name) |
|
| 408 | - $out .= ' |
|
| 411 | + if($this->server_name) { |
|
| 412 | + $out .= ' |
|
| 409 | 413 | domain_suffix_match="'.$this->server_name.'"'; |
| 414 | + } |
|
| 410 | 415 | if($this->selected_eap == \core\common\EAP::EAPTYPE_TLS) { |
| 411 | 416 | $out .= ' |
| 412 | 417 | private_key="${HOME}/'.$this->local_dir.'/user.p12" |
@@ -415,10 +420,11 @@ discard block |
||
| 415 | 420 | $out .= ' |
| 416 | 421 | phase2="auth='.$e['INNER'].'" |
| 417 | 422 | password="${PASSWORD}"'; |
| 418 | - if($this->attributes['internal:use_anon_outer'][0] == 1) |
|
| 419 | - $out .= ' |
|
| 423 | + if($this->attributes['internal:use_anon_outer'][0] == 1) { |
|
| 424 | + $out .= ' |
|
| 420 | 425 | anonymous_identity="'.$this->attributes['internal:anon_local_value'][0].'@'.$this->attributes['internal:realm'][0].'"'; |
| 421 | 426 | } |
| 427 | + } |
|
| 422 | 428 | $out .= ' |
| 423 | 429 | }'; |
| 424 | 430 | } |
@@ -515,8 +521,9 @@ discard block |
||
| 515 | 521 | |
| 516 | 522 | |
| 517 | 523 | private function glueServerNames($server_list) { |
| 518 | - if(! $server_list) |
|
| 519 | - return ''; |
|
| 524 | + if(! $server_list) { |
|
| 525 | + return ''; |
|
| 526 | + } |
|
| 520 | 527 | $A0 = array_reverse(explode('.',array_shift($server_list))); |
| 521 | 528 | $B = $A0; |
| 522 | 529 | foreach($server_list as $a) { |
@@ -528,12 +535,14 @@ discard block |
||
| 528 | 535 | } |
| 529 | 536 | |
| 530 | 537 | private function mkSubjectAltNameList($server_list) { |
| 531 | - if(! $server_list) |
|
| 532 | - return ''; |
|
| 538 | + if(! $server_list) { |
|
| 539 | + return ''; |
|
| 540 | + } |
|
| 533 | 541 | $out = ''; |
| 534 | 542 | foreach($server_list as $a) { |
| 535 | - if($out) |
|
| 536 | - $out .= ','; |
|
| 543 | + if($out) { |
|
| 544 | + $out .= ','; |
|
| 545 | + } |
|
| 537 | 546 | $out .= "'DNS:$a'"; |
| 538 | 547 | } |
| 539 | 548 | return $out; |
@@ -691,9 +700,10 @@ discard block |
||
| 691 | 700 | $out .= ' |
| 692 | 701 | \'password\': \'$PASSWORD\', |
| 693 | 702 | \'phase2-auth\': \''.strtolower($e['INNER']).'\','; |
| 694 | - if($this->attributes['internal:use_anon_outer'][0] == 1) |
|
| 695 | - $out .= ' |
|
| 703 | + if($this->attributes['internal:use_anon_outer'][0] == 1) { |
|
| 704 | + $out .= ' |
|
| 696 | 705 | \'anonymous-identity\': \''.$this->attributes['internal:anon_local_value'][0].'@'.$this->attributes['internal:realm'][0].'\','; |
| 706 | + } |
|
| 697 | 707 | } |
| 698 | 708 | $out .= ' |
| 699 | 709 | }) |
@@ -719,9 +729,10 @@ discard block |
||
| 719 | 729 | } |
| 720 | 730 | // create a list of profiles to be deleted after installation |
| 721 | 731 | foreach ($delSSIDs as $ssid => $cipher) { |
| 722 | - if($cipher == 'DEL') |
|
| 723 | - $out .=' |
|
| 732 | + if($cipher == 'DEL') { |
|
| 733 | + $out .=' |
|
| 724 | 734 | self.delete_existing_connections(\''.$ssid.'\')'; |
| 735 | + } |
|
| 725 | 736 | } |
| 726 | 737 | |
| 727 | 738 | $out .=' |