diff --git a/dashboard/src/views/oidc.html b/dashboard/src/views/oidc.html
index e5f8ae78b..0f36d2c2f 100644
--- a/dashboard/src/views/oidc.html
+++ b/dashboard/src/views/oidc.html
@@ -43,6 +43,40 @@
+
+
@@ -121,14 +155,15 @@
No clients yet |
- |
+ |
{{ client.id }}
|
-
+ |
{{ client.secret }}
|
-
+
+
|
diff --git a/dashboard/src/views/oidc.js b/dashboard/src/views/oidc.js
index cd03e8694..3d23a84d0 100644
--- a/dashboard/src/views/oidc.js
+++ b/dashboard/src/views/oidc.js
@@ -64,14 +64,55 @@ angular.module('Application').controller('OidcController', ['$scope', '$location
}
};
+ $scope.clientEdit = {
+ busy: false,
+ error: {},
+ id: '',
+ secret: '',
+ loginRedirectUri: '',
+ logoutRedirectUri: '',
+
+ show: function (client) {
+ $scope.clientEdit.id = client.id;
+ $scope.clientEdit.secret = client.secret;
+ $scope.clientEdit.loginRedirectUri = client.loginRedirectUri;
+ $scope.clientEdit.logoutRedirectUri = client.logoutRedirectUri;
+ $scope.clientEdit.busy = false;
+ $scope.clientEdit.error = null;
+ $scope.clientEditForm.$setPristine();
+
+ $('#clientEditModal').modal('show');
+ },
+
+ submit: function () {
+ $scope.clientEdit.busy = true;
+ $scope.clientEdit.error = {};
+
+ Client.updateOidcClient($scope.clientEdit.id, $scope.clientEdit.secret, $scope.clientEdit.loginRedirectUri, $scope.clientEdit.logoutRedirectUri, function (error) {
+ if (error) {
+ console.error('Unable to edit openid client.', error);
+
+ $scope.clientEdit.busy = false;
+
+ return;
+ }
+
+ $scope.refreshClients();
+ $scope.clientEdit.busy = false;
+
+ $('#clientEditModal').modal('hide');
+ });
+ }
+ };
+
$scope.deleteClient = {
busy: false,
error: {},
id: '',
- show: function (clientId) {
+ show: function (client) {
$scope.deleteClient.busy = false;
- $scope.deleteClient.id = clientId;
+ $scope.deleteClient.id = client.id;
$('#clientDeleteModal').modal('show');
},
@@ -94,7 +135,7 @@ angular.module('Application').controller('OidcController', ['$scope', '$location
});
// setup all the dialog focus handling
- ['clientAddModal', 'clientEditModal'].forEach(function (id) {
+ ['clientAddModal', 'clientEditmodal'].forEach(function (id) {
$('#' + id).on('shown.bs.modal', function () {
$(this).find('[autofocus]:first').focus();
});
diff --git a/src/routes/oidcclients.js b/src/routes/oidcclients.js
index a90b2f6bd..6a5eceb3f 100644
--- a/src/routes/oidcclients.js
+++ b/src/routes/oidcclients.js
@@ -47,10 +47,10 @@ async function update(req, res, next) {
if (typeof req.body.loginRedirectUri !== 'string' || !req.body.loginRedirectUri) return next(new HttpError(400, 'loginRedirectUri must be non-empty string'));
if ('logoutRedirectUri' in req.body && (typeof req.body.logoutRedirectUri !== 'string' || !req.body.logoutRedirectUri)) return next(new HttpError(400, 'logoutRedirectUri must be non-empty string if provided'));
- const [error] = await safe(oidc.clients.update(req.params.clientId, { secret: req.body.secret, loginRedirectUri: req.body.loginRedirectUri, logoutRedirectUri: req.body.logoutRedirectUri || ''}));
+ const [error] = await safe(oidc.clients.update(req.params.clientId, req.body.secret, req.body.loginRedirectUri, req.body.logoutRedirectUri || ''));
if (error) return next(BoxError.toHttpError(error));
- next(new HttpSuccess(200, {}));
+ next(new HttpSuccess(201, {}));
}
async function list(req, res, next) {