Passed
Push — master ( b32147...6275ed )
by Maja
06:20
created
web/admin/inc/sendinvite.inc.php 1 patch
Switch Indentation   +85 added lines, -85 removed lines patch added patch discarded remove patch
@@ -72,96 +72,96 @@
 block discarded – undo
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!
Please login to merge, or discard this patch.
web/admin/API.php 1 patch
Switch Indentation   +356 added lines, -356 removed lines patch added patch discarded remove patch
@@ -84,217 +84,217 @@  discard block
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
 block discarded – undo
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
Please login to merge, or discard this patch.
web/admin/action_enrollment.php 1 patch
Switch Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -49,14 +49,14 @@
 block discarded – undo
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) {
Please login to merge, or discard this patch.