diff --git a/themes/src/main/resources/theme/base/admin/messages/admin-messages_en.properties b/themes/src/main/resources/theme/base/admin/messages/admin-messages_en.properties
index aa01891..c384b13 100644
--- a/themes/src/main/resources/theme/base/admin/messages/admin-messages_en.properties
+++ b/themes/src/main/resources/theme/base/admin/messages/admin-messages_en.properties
@@ -940,6 +940,8 @@ no-required-actions-configured=No required actions configured
defaults-to-id=Defaults to id
flows=Flows
bindings=Bindings
+client-flow-bindings=Authentication Flow Overrides
+client-flow-bindings.tooltip=Override realm authentication flow bindings.
required-actions=Required Actions
password-policy=Password Policy
otp-policy=OTP Policy
diff --git a/themes/src/main/resources/theme/base/admin/resources/js/app.js b/themes/src/main/resources/theme/base/admin/resources/js/app.js
index 3c1f086..b76e18f 100755
--- a/themes/src/main/resources/theme/base/admin/resources/js/app.js
+++ b/themes/src/main/resources/theme/base/admin/resources/js/app.js
@@ -1332,6 +1332,9 @@ module.config([ '$routeProvider', function($routeProvider) {
client : function() {
return {};
},
+ flows : function(AuthenticationFlowsLoader) {
+ return AuthenticationFlowsLoader();
+ },
serverInfo : function(ServerInfoLoader) {
return ServerInfoLoader();
}
@@ -1353,6 +1356,9 @@ module.config([ '$routeProvider', function($routeProvider) {
client : function(ClientLoader) {
return ClientLoader();
},
+ flows : function(AuthenticationFlowsLoader) {
+ return AuthenticationFlowsLoader();
+ },
serverInfo : function(ServerInfoLoader) {
return ServerInfoLoader();
}
diff --git a/themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js b/themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
index d679508..632ef2c 100755
--- a/themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
+++ b/themes/src/main/resources/theme/base/admin/resources/js/controllers/clients.js
@@ -829,7 +829,16 @@ module.controller('ClientInstallationCtrl', function($scope, realm, client, serv
}
});
-module.controller('ClientDetailCtrl', function($scope, realm, client, templates, $route, serverInfo, Client, ClientDescriptionConverter, Components, ClientStorageOperations, $location, $modal, Dialog, Notifications) {
+module.controller('ClientDetailCtrl', function($scope, realm, client, templates, flows, $route, serverInfo, Client, ClientDescriptionConverter, Components, ClientStorageOperations, $location, $modal, Dialog, Notifications) {
+ $scope.flows = [];
+ $scope.clientFlows = [];
+ for (var i=0 ; i<flows.length ; i++) {
+ if (flows[i].providerId == 'client-flow') {
+ $scope.clientFlows.push(flows[i]);
+ } else {
+ $scope.flows.push(flows[i]);
+ }
+ }
diff --git a/themes/src/main/resources/theme/base/admin/resources/partials/client-detail.html b/themes/src/main/resources/theme/base/admin/resources/partials/client-detail.html
index f2ccd1b..96e00e9 100755
--- a/themes/src/main/resources/theme/base/admin/resources/partials/client-detail.html
+++ b/themes/src/main/resources/theme/base/admin/resources/partials/client-detail.html
@@ -422,6 +422,32 @@
</div>
</fieldset>
+ <fieldset>
+ <legend collapsed><span class="text">{{:: 'client-flow-bindings' | translate}}</span> <kc-tooltip>{{:: 'client-flow-bindings.tooltip' | translate}}</kc-tooltip></legend>
+ <div class="form-group">
+ <label for="browser" class="col-md-2 control-label">{{:: 'browser-flow' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="browser" data-ng-model="clientEdit.authenticationFlowBindingOverrides['browser']" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'browser-flow.tooltip' | translate}}</kc-tooltip>
+ </div>
+ <div class="form-group" data-ng-show="protocol == 'openid-connect'">
+ <label for="grant" class="col-md-2 control-label">{{:: 'direct-grant-flow' | translate}}</label>
+ <div class="col-md-2">
+ <div>
+ <select id="grant" ng-model="clientEdit.authenticationFlowBindingOverrides['direct_grant']" class="form-control" ng-options="flow.alias as flow.alias for flow in flows">
+ </select>
+ </div>
+ </div>
+ <kc-tooltip>{{:: 'direct-grant-flow.tooltip' | translate}}</kc-tooltip>
+ </div>
+ </fieldset>
+
+
+
<div class="form-group">
<div class="col-md-10 col-md-offset-2" data-ng-show="client.access.configure">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>