Merge pull request #3733 from stianst/KEYCLOAK-4180
KEYCLOAK-4180 When you turn on authorization for client Clustering ta…
This commit is contained in:
commit
345e0da76d
2 changed files with 89 additions and 85 deletions
|
@ -989,8 +989,10 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$scope.create) {
|
if (!$scope.create) {
|
||||||
$scope.client = angular.copy(client);
|
$scope.client = client;
|
||||||
updateProperties();
|
updateProperties();
|
||||||
|
|
||||||
|
$scope.clientEdit = angular.copy(client);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1002,6 +1004,8 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
$scope.client = data;
|
$scope.client = data;
|
||||||
updateProperties();
|
updateProperties();
|
||||||
$scope.importing = true;
|
$scope.importing = true;
|
||||||
|
|
||||||
|
$scope.clientEdit = angular.copy(client);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1023,50 +1027,50 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
|
|
||||||
$scope.changeAccessType = function() {
|
$scope.changeAccessType = function() {
|
||||||
if ($scope.accessType == "confidential") {
|
if ($scope.accessType == "confidential") {
|
||||||
$scope.client.bearerOnly = false;
|
$scope.clientEdit.bearerOnly = false;
|
||||||
$scope.client.publicClient = false;
|
$scope.clientEdit.publicClient = false;
|
||||||
} else if ($scope.accessType == "public") {
|
} else if ($scope.accessType == "public") {
|
||||||
$scope.client.bearerOnly = false;
|
$scope.clientEdit.bearerOnly = false;
|
||||||
$scope.client.publicClient = true;
|
$scope.clientEdit.publicClient = true;
|
||||||
} else if ($scope.accessType == "bearer-only") {
|
} else if ($scope.accessType == "bearer-only") {
|
||||||
$scope.client.bearerOnly = true;
|
$scope.clientEdit.bearerOnly = true;
|
||||||
$scope.client.publicClient = false;
|
$scope.clientEdit.publicClient = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeProtocol = function() {
|
$scope.changeProtocol = function() {
|
||||||
if ($scope.protocol == "openid-connect") {
|
if ($scope.protocol == "openid-connect") {
|
||||||
$scope.client.protocol = "openid-connect";
|
$scope.clientEdit.protocol = "openid-connect";
|
||||||
} else if ($scope.protocol == "saml") {
|
} else if ($scope.protocol == "saml") {
|
||||||
$scope.client.protocol = "saml";
|
$scope.clientEdit.protocol = "saml";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeAlgorithm = function() {
|
$scope.changeAlgorithm = function() {
|
||||||
$scope.client.attributes['saml.signature.algorithm'] = $scope.signatureAlgorithm;
|
$scope.clientEdit.attributes['saml.signature.algorithm'] = $scope.signatureAlgorithm;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeNameIdFormat = function() {
|
$scope.changeNameIdFormat = function() {
|
||||||
$scope.client.attributes['saml_name_id_format'] = $scope.nameIdFormat;
|
$scope.clientEdit.attributes['saml_name_id_format'] = $scope.nameIdFormat;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeSamlSigKeyNameTranformer = function() {
|
$scope.changeSamlSigKeyNameTranformer = function() {
|
||||||
$scope.client.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] = $scope.samlXmlKeyNameTranformer;
|
$scope.clientEdit.attributes['saml.server.signature.keyinfo.xmlSigKeyInfoKeyNameTransformer'] = $scope.samlXmlKeyNameTranformer;
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeUserInfoSignedResponseAlg = function() {
|
$scope.changeUserInfoSignedResponseAlg = function() {
|
||||||
if ($scope.userInfoSignedResponseAlg === 'unsigned') {
|
if ($scope.userInfoSignedResponseAlg === 'unsigned') {
|
||||||
$scope.client.attributes['user.info.response.signature.alg'] = null;
|
$scope.clientEdit.attributes['user.info.response.signature.alg'] = null;
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes['user.info.response.signature.alg'] = $scope.userInfoSignedResponseAlg;
|
$scope.clientEdit.attributes['user.info.response.signature.alg'] = $scope.userInfoSignedResponseAlg;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.changeRequestObjectSignatureAlg = function() {
|
$scope.changeRequestObjectSignatureAlg = function() {
|
||||||
if ($scope.requestObjectSignatureAlg === 'any') {
|
if ($scope.requestObjectSignatureAlg === 'any') {
|
||||||
$scope.client.attributes['request.object.signature.alg'] = null;
|
$scope.clientEdit.attributes['request.object.signature.alg'] = null;
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes['request.object.signature.alg'] = $scope.requestObjectSignatureAlg;
|
$scope.clientEdit.attributes['request.object.signature.alg'] = $scope.requestObjectSignatureAlg;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1077,7 +1081,7 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
});
|
});
|
||||||
|
|
||||||
function isChanged() {
|
function isChanged() {
|
||||||
if (!angular.equals($scope.client, client)) {
|
if (!angular.equals($scope.client, $scope.clientEdit)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ($scope.newRedirectUri && $scope.newRedirectUri.length > 0) {
|
if ($scope.newRedirectUri && $scope.newRedirectUri.length > 0) {
|
||||||
|
@ -1090,18 +1094,18 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
}
|
}
|
||||||
|
|
||||||
function configureAuthorizationServices() {
|
function configureAuthorizationServices() {
|
||||||
if ($scope.client.authorizationServicesEnabled) {
|
if ($scope.clientEdit.authorizationServicesEnabled) {
|
||||||
if ($scope.accessType == 'public') {
|
if ($scope.accessType == 'public') {
|
||||||
$scope.accessType = 'confidential';
|
$scope.accessType = 'confidential';
|
||||||
}
|
}
|
||||||
$scope.client.publicClient = false;
|
$scope.clientEdit.publicClient = false;
|
||||||
$scope.client.serviceAccountsEnabled = true;
|
$scope.clientEdit.serviceAccountsEnabled = true;
|
||||||
} else if ($scope.client.bearerOnly) {
|
} else if ($scope.clientEdit.bearerOnly) {
|
||||||
$scope.client.serviceAccountsEnabled = false;
|
$scope.clientEdit.serviceAccountsEnabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.$watch('client', function() {
|
$scope.$watch('clientEdit', function() {
|
||||||
$scope.changed = isChanged();
|
$scope.changed = isChanged();
|
||||||
configureAuthorizationServices();
|
configureAuthorizationServices();
|
||||||
}, true);
|
}, true);
|
||||||
|
@ -1116,18 +1120,18 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
}, true);
|
}, true);
|
||||||
|
|
||||||
$scope.deleteWebOrigin = function(index) {
|
$scope.deleteWebOrigin = function(index) {
|
||||||
$scope.client.webOrigins.splice(index, 1);
|
$scope.clientEdit.webOrigins.splice(index, 1);
|
||||||
}
|
}
|
||||||
$scope.addWebOrigin = function() {
|
$scope.addWebOrigin = function() {
|
||||||
$scope.client.webOrigins.push($scope.newWebOrigin);
|
$scope.clientEdit.webOrigins.push($scope.newWebOrigin);
|
||||||
$scope.newWebOrigin = "";
|
$scope.newWebOrigin = "";
|
||||||
}
|
}
|
||||||
$scope.deleteRedirectUri = function(index) {
|
$scope.deleteRedirectUri = function(index) {
|
||||||
$scope.client.redirectUris.splice(index, 1);
|
$scope.clientEdit.redirectUris.splice(index, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.addRedirectUri = function() {
|
$scope.addRedirectUri = function() {
|
||||||
$scope.client.redirectUris.push($scope.newRedirectUri);
|
$scope.clientEdit.redirectUris.push($scope.newRedirectUri);
|
||||||
$scope.newRedirectUri = "";
|
$scope.newRedirectUri = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1141,68 +1145,68 @@ module.controller('ClientDetailCtrl', function($scope, realm, client, templates,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($scope.samlServerSignature == true) {
|
if ($scope.samlServerSignature == true) {
|
||||||
$scope.client.attributes["saml.server.signature"] = "true";
|
$scope.clientEdit.attributes["saml.server.signature"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.server.signature"] = "false";
|
$scope.clientEdit.attributes["saml.server.signature"] = "false";
|
||||||
}
|
}
|
||||||
if ($scope.samlServerSignatureEnableKeyInfoExtension == true) {
|
if ($scope.samlServerSignatureEnableKeyInfoExtension == true) {
|
||||||
$scope.client.attributes["saml.server.signature.keyinfo.ext"] = "true";
|
$scope.clientEdit.attributes["saml.server.signature.keyinfo.ext"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.server.signature.keyinfo.ext"] = "false";
|
$scope.clientEdit.attributes["saml.server.signature.keyinfo.ext"] = "false";
|
||||||
}
|
}
|
||||||
if ($scope.samlAssertionSignature == true) {
|
if ($scope.samlAssertionSignature == true) {
|
||||||
$scope.client.attributes["saml.assertion.signature"] = "true";
|
$scope.clientEdit.attributes["saml.assertion.signature"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.assertion.signature"] = "false";
|
$scope.clientEdit.attributes["saml.assertion.signature"] = "false";
|
||||||
}
|
}
|
||||||
if ($scope.samlClientSignature == true) {
|
if ($scope.samlClientSignature == true) {
|
||||||
$scope.client.attributes["saml.client.signature"] = "true";
|
$scope.clientEdit.attributes["saml.client.signature"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.client.signature"] = "false";
|
$scope.clientEdit.attributes["saml.client.signature"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($scope.samlEncrypt == true) {
|
if ($scope.samlEncrypt == true) {
|
||||||
$scope.client.attributes["saml.encrypt"] = "true";
|
$scope.clientEdit.attributes["saml.encrypt"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.encrypt"] = "false";
|
$scope.clientEdit.attributes["saml.encrypt"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($scope.samlAuthnStatement == true) {
|
if ($scope.samlAuthnStatement == true) {
|
||||||
$scope.client.attributes["saml.authnstatement"] = "true";
|
$scope.clientEdit.attributes["saml.authnstatement"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.authnstatement"] = "false";
|
$scope.clientEdit.attributes["saml.authnstatement"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($scope.samlForceNameIdFormat == true) {
|
if ($scope.samlForceNameIdFormat == true) {
|
||||||
$scope.client.attributes["saml_force_name_id_format"] = "true";
|
$scope.clientEdit.attributes["saml_force_name_id_format"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml_force_name_id_format"] = "false";
|
$scope.clientEdit.attributes["saml_force_name_id_format"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($scope.samlMultiValuedRoles == true) {
|
if ($scope.samlMultiValuedRoles == true) {
|
||||||
$scope.client.attributes["saml.multivalued.roles"] = "true";
|
$scope.clientEdit.attributes["saml.multivalued.roles"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.multivalued.roles"] = "false";
|
$scope.clientEdit.attributes["saml.multivalued.roles"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
if ($scope.samlForcePostBinding == true) {
|
if ($scope.samlForcePostBinding == true) {
|
||||||
$scope.client.attributes["saml.force.post.binding"] = "true";
|
$scope.clientEdit.attributes["saml.force.post.binding"] = "true";
|
||||||
} else {
|
} else {
|
||||||
$scope.client.attributes["saml.force.post.binding"] = "false";
|
$scope.clientEdit.attributes["saml.force.post.binding"] = "false";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.client.protocol = $scope.protocol;
|
$scope.clientEdit.protocol = $scope.protocol;
|
||||||
$scope.client.attributes['saml.signature.algorithm'] = $scope.signatureAlgorithm;
|
$scope.clientEdit.attributes['saml.signature.algorithm'] = $scope.signatureAlgorithm;
|
||||||
$scope.client.attributes['saml_name_id_format'] = $scope.nameIdFormat;
|
$scope.clientEdit.attributes['saml_name_id_format'] = $scope.nameIdFormat;
|
||||||
|
|
||||||
if ($scope.client.protocol != 'saml' && !$scope.client.bearerOnly && ($scope.client.standardFlowEnabled || $scope.client.implicitFlowEnabled) && (!$scope.client.redirectUris || $scope.client.redirectUris.length == 0)) {
|
if ($scope.clientEdit.protocol != 'saml' && !$scope.clientEdit.bearerOnly && ($scope.clientEdit.standardFlowEnabled || $scope.clientEdit.implicitFlowEnabled) && (!$scope.clientEdit.redirectUris || $scope.clientEdit.redirectUris.length == 0)) {
|
||||||
Notifications.error("You must specify at least one redirect uri");
|
Notifications.error("You must specify at least one redirect uri");
|
||||||
} else {
|
} else {
|
||||||
Client.update({
|
Client.update({
|
||||||
realm : realm.realm,
|
realm : realm.realm,
|
||||||
client : client.id
|
client : client.id
|
||||||
}, $scope.client, function() {
|
}, $scope.clientEdit, function() {
|
||||||
$route.reload();
|
$route.reload();
|
||||||
Notifications.success("Your changes have been saved to the client.");
|
Notifications.success("Your changes have been saved to the client.");
|
||||||
}, function(error) {
|
}, function(error) {
|
||||||
|
|
|
@ -12,35 +12,35 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="clientId">{{:: 'client-id' | translate}}</label>
|
<label class="col-md-2 control-label" for="clientId">{{:: 'client-id' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="client.clientId" autofocus required>
|
<input class="form-control" type="text" id="clientId" name="clientId" data-ng-model="clientEdit.clientId" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'client-id.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'client-id.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} </label>
|
<label class="col-md-2 control-label" for="name">{{:: 'name' | translate}} </label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" id="name" name="name" data-ng-model="client.name" autofocus>
|
<input class="form-control" type="text" id="name" name="name" data-ng-model="clientEdit.name" autofocus>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'client.name.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'client.name.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
<label class="col-md-2 control-label" for="description">{{:: 'description' | translate}} </label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" id="description" name="description" data-ng-model="client.description">
|
<input class="form-control" type="text" id="description" name="description" data-ng-model="clientEdit.description">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'client.description.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'client.description.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="enabled">{{:: 'enabled' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.enabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.enabled" name="enabled" id="enabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'client.enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'client.enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block">
|
<div class="form-group clearfix block">
|
||||||
<label class="col-md-2 control-label" for="consentRequired">{{:: 'consent-required' | translate}}</label>
|
<label class="col-md-2 control-label" for="consentRequired">{{:: 'consent-required' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.consentRequired" name="consentRequired" id="consentRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.consentRequired" name="consentRequired" id="consentRequired" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'consent-required.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'consent-required.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="template"
|
<select class="form-control" id="template"
|
||||||
ng-model="client.clientTemplate"
|
ng-model="clientEdit.clientTemplate"
|
||||||
ng-options="template.name as template.name for template in templates">
|
ng-options="template.name as template.name for template in templates">
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -82,39 +82,39 @@
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'access-type.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'access-type.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.bearerOnly">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="standardFlowEnabled">{{:: 'standard-flow-enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="standardFlowEnabled">{{:: 'standard-flow-enabled' | translate}}</label>
|
||||||
<kc-tooltip>{{:: 'standard-flow-enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'standard-flow-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.standardFlowEnabled" name="standardFlowEnabled" id="standardFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.standardFlowEnabled" name="standardFlowEnabled" id="standardFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.bearerOnly">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="implicitFlowEnabled">{{:: 'implicit-flow-enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="implicitFlowEnabled">{{:: 'implicit-flow-enabled' | translate}}</label>
|
||||||
<kc-tooltip>{{:: 'implicit-flow-enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'implicit-flow-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.implicitFlowEnabled" name="implicitFlowEnabled" id="implicitFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.implicitFlowEnabled" name="implicitFlowEnabled" id="implicitFlowEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.bearerOnly">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="directAccessGrantsEnabled">{{:: 'direct-access-grants-enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="directAccessGrantsEnabled">{{:: 'direct-access-grants-enabled' | translate}}</label>
|
||||||
<kc-tooltip>{{:: 'direct-access-grants-enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'direct-access-grants-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.directAccessGrantsEnabled" name="directAccessGrantsEnabled" id="directAccessGrantsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.directAccessGrantsEnabled" name="directAccessGrantsEnabled" id="directAccessGrantsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !client.publicClient && !client.bearerOnly">
|
<div class="form-group" data-ng-show="protocol == 'openid-connect' && !clientEdit.publicClient && !clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="serviceAccountsEnabled">{{:: 'service-accounts-enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="serviceAccountsEnabled">{{:: 'service-accounts-enabled' | translate}}</label>
|
||||||
<kc-tooltip>{{:: 'service-accounts-enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'service-accounts-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.serviceAccountsEnabled" name="serviceAccountsEnabled" id="serviceAccountsEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="serverInfo.profileInfo.disabledFeatures.indexOf('AUTHORIZATION') == -1 && protocol == 'openid-connect'">
|
<div class="form-group" data-ng-show="serverInfo.profileInfo.disabledFeatures.indexOf('AUTHORIZATION') == -1 && protocol == 'openid-connect'">
|
||||||
<label class="col-md-2 control-label" for="authorizationServicesEnabled">{{:: 'authz-authorization-services-enabled' | translate}}</label>
|
<label class="col-md-2 control-label" for="authorizationServicesEnabled">{{:: 'authz-authorization-services-enabled' | translate}}</label>
|
||||||
<kc-tooltip>{{:: 'authz-authorization-services-enabled.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'authz-authorization-services-enabled.tooltip' | translate}}</kc-tooltip>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<input ng-model="client.authorizationServicesEnabled" name="authorizationServicesEnabled" id="authorizationServicesEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.authorizationServicesEnabled" name="authorizationServicesEnabled" id="authorizationServicesEnabled" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
|
@ -176,7 +176,7 @@
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div>
|
<div>
|
||||||
<select class="form-control" id="canonicalization"
|
<select class="form-control" id="canonicalization"
|
||||||
ng-model="client.attributes['saml_signature_canonicalization_method']"
|
ng-model="clientEdit.attributes['saml_signature_canonicalization_method']"
|
||||||
ng-options="canon.value as canon.name for canon in canonicalization">
|
ng-options="canon.value as canon.name for canon in canonicalization">
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
@ -207,7 +207,7 @@
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="frontchannelLogout">{{:: 'front-channel-logout' | translate}}</label>
|
<label class="col-md-2 control-label" for="frontchannelLogout">{{:: 'front-channel-logout' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
<input ng-model="clientEdit.frontchannelLogout" name="frontchannelLogout" id="frontchannelLogout" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'front-channel-logout.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'front-channel-logout.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
@ -232,20 +232,20 @@
|
||||||
<kc-tooltip>{{:: 'name-id-format.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'name-id-format.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly">
|
<div class="form-group" data-ng-show="!clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="rootUrl">{{:: 'root-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="rootUrl">{{:: 'root-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="rootUrl" id="rootUrl" data-ng-model="client.rootUrl">
|
<input class="form-control" type="text" name="rootUrl" id="rootUrl" data-ng-model="clientEdit.rootUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'root-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'root-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group clearfix block" data-ng-hide="client.bearerOnly || (!client.standardFlowEnabled && !client.implicitFlowEnabled)">
|
<div class="form-group clearfix block" data-ng-hide="clientEdit.bearerOnly || (!clientEdit.standardFlowEnabled && !clientEdit.implicitFlowEnabled)">
|
||||||
<label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> {{:: 'valid-redirect-uris' | translate}}</label>
|
<label class="col-md-2 control-label" for="newRedirectUri"><span class="required" data-ng-show="protocol != 'saml'">*</span> {{:: 'valid-redirect-uris' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="input-group" ng-repeat="(i, redirectUri) in client.redirectUris track by $index">
|
<div class="input-group" ng-repeat="(i, redirectUri) in clientEdit.redirectUris track by $index">
|
||||||
<input class="form-control" ng-model="client.redirectUris[i]">
|
<input class="form-control" ng-model="clientEdit.redirectUris[i]">
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)"><span class="fa fa-minus"></span></button>
|
<button class="btn btn-default" type="button" data-ng-click="deleteRedirectUri($index)"><span class="fa fa-minus"></span></button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -262,10 +262,10 @@
|
||||||
<kc-tooltip>{{:: 'valid-redirect-uris.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'valid-redirect-uris.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly">
|
<div class="form-group" data-ng-show="!clientEdit.bearerOnly">
|
||||||
<label class="col-md-2 control-label" for="baseUrl">{{:: 'base-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="baseUrl">{{:: 'base-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="client.baseUrl">
|
<input class="form-control" type="text" name="baseUrl" id="baseUrl" data-ng-model="clientEdit.baseUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'base-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'base-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
@ -273,7 +273,7 @@
|
||||||
<label class="col-md-2 control-label" for="adminUrl">{{:: 'admin-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="adminUrl">{{:: 'admin-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
<input class="form-control" type="text" name="adminUrl" id="adminUrl"
|
||||||
data-ng-model="client.adminUrl">
|
data-ng-model="clientEdit.adminUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'admin-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'admin-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
@ -281,30 +281,30 @@
|
||||||
<label class="col-md-2 control-label" for="masterSamlUrl">{{:: 'master-saml-processing-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="masterSamlUrl">{{:: 'master-saml-processing-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
<input class="form-control" type="text" name="masterSamlUrl" id="masterSamlUrl"
|
||||||
data-ng-model="client.adminUrl">
|
data-ng-model="clientEdit.adminUrl">
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'master-saml-processing-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'master-saml-processing-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="urlReferenceName">{{:: 'idp-sso-url-ref' | translate}}</label>
|
<label class="col-md-2 control-label" for="urlReferenceName">{{:: 'idp-sso-url-ref' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_idp_initiated_sso_url_name" class="form-control" type="text" name="urlReferenceName" id="urlReferenceName" />
|
<input ng-model="clientEdit.attributes.saml_idp_initiated_sso_url_name" class="form-control" type="text" name="urlReferenceName" id="urlReferenceName" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'idp-sso-url-ref.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'idp-sso-url-ref.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="idpInitiatedRelayState">{{:: 'idp-sso-relay-state' | translate}}</label>
|
<label class="col-md-2 control-label" for="idpInitiatedRelayState">{{:: 'idp-sso-relay-state' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_idp_initiated_sso_relay_state" class="form-control" type="text" name="idpInitiatedRelayState" id="idpInitiatedRelayState" />
|
<input ng-model="clientEdit.attributes.saml_idp_initiated_sso_relay_state" class="form-control" type="text" name="idpInitiatedRelayState" id="idpInitiatedRelayState" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'idp-sso-relay-state.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'idp-sso-relay-state.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" data-ng-show="!client.bearerOnly && protocol == 'openid-connect' && (client.standardFlowEnabled || client.implicitFlowEnabled)">
|
<div class="form-group" data-ng-show="!clientEdit.bearerOnly && protocol == 'openid-connect' && (clientEdit.standardFlowEnabled || clientEdit.implicitFlowEnabled)">
|
||||||
<label class="col-md-2 control-label" for="newWebOrigin">{{:: 'web-origins' | translate}}</label>
|
<label class="col-md-2 control-label" for="newWebOrigin">{{:: 'web-origins' | translate}}</label>
|
||||||
|
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<div class="input-group" ng-repeat="(i, webOrigin) in client.webOrigins track by $index">
|
<div class="input-group" ng-repeat="(i, webOrigin) in clientEdit.webOrigins track by $index">
|
||||||
<input class="form-control" ng-model="client.webOrigins[i]">
|
<input class="form-control" ng-model="clientEdit.webOrigins[i]">
|
||||||
<div class="input-group-btn">
|
<div class="input-group-btn">
|
||||||
<button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)"><span class="fa fa-minus"></span></button>
|
<button class="btn btn-default" type="button" data-ng-click="deleteWebOrigin($index)"><span class="fa fa-minus"></span></button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -326,28 +326,28 @@
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="consumerServicePost">{{:: 'assertion-consumer-post-binding-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="consumerServicePost">{{:: 'assertion-consumer-post-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
|
<input ng-model="clientEdit.attributes.saml_assertion_consumer_url_post" class="form-control" type="text" name="consumerServicePost" id="consumerServicePost" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'assertion-consumer-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'assertion-consumer-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="consumerServiceRedirect">{{:: 'assertion-consumer-redirect-binding-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="consumerServiceRedirect">{{:: 'assertion-consumer-redirect-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
|
<input ng-model="clientEdit.attributes.saml_assertion_consumer_url_redirect" class="form-control" type="text" name="consumerServiceRedirect" id="consumerServiceRedirect" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'assertion-consumer-redirect-binding-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'assertion-consumer-redirect-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-post-binding-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-post-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
|
<input ng-model="clientEdit.attributes.saml_single_logout_service_url_post" class="form-control" type="text" name="logoutPostBinding" id="logoutPostBinding" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'logout-service-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'logout-service-post-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
<div class="form-group clearfix block" data-ng-show="protocol == 'saml'">
|
||||||
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-redir-binding-url' | translate}}</label>
|
<label class="col-md-2 control-label" for="logoutPostBinding">{{:: 'logout-service-redir-binding-url' | translate}}</label>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<input ng-model="client.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
|
<input ng-model="clientEdit.attributes.saml_single_logout_service_url_redirect" class="form-control" type="text" name="logoutRedirectBinding" id="logoutRedirectBinding" />
|
||||||
</div>
|
</div>
|
||||||
<kc-tooltip>{{:: 'logout-service-redir-binding-url.tooltip' | translate}}</kc-tooltip>
|
<kc-tooltip>{{:: 'logout-service-redir-binding-url.tooltip' | translate}}</kc-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue