diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js index cbfea0a56c..4c8d2c276c 100755 --- a/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js +++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/app.js @@ -41,7 +41,7 @@ module.config([ '$routeProvider', function($routeProvider) { return RealmLoader(); } }, - controller : 'RealmTokenDetailCtrl' + controller : 'RealmSocialCtrl' }) .when('/realms/:realm/required-credentials', { templateUrl : 'partials/realm-credentials.html', diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js index 6c83262d0a..2cda1e9976 100755 --- a/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js +++ b/admin-ui/src/main/resources/META-INF/resources/admin/js/controllers/realm.js @@ -196,6 +196,123 @@ module.controller('RealmRequiredCredentialsCtrl', function($scope, Realm, realm, }; }); +module.controller('RealmSocialCtrl', function($scope, realm, Realm, $location, Notifications) { + console.log('RealmSocialCtrl'); + + $scope.realm = { id : realm.id, realm : realm.realm, social : realm.social, tokenLifespan : realm.tokenLifespan, accessCodeLifespan : realm.accessCodeLifespan }; + + if (!realm["socialProviders"]){ + $scope.realm["socialProviders"] = {}; + } else { + $scope.realm["socialProviders"] = realm.socialProviders; + } + + // Hardcoded provider list + $scope.availableProviders = [ "google", "facebook", "twitter"]; + + var oldCopy = angular.copy($scope.realm); + $scope.changed = false; + $scope.callbackUrl = "http://mock.url.org/don/t/know/what/to/place/here"; + + // To get rid of the "undefined" option in the provider select list + // Setting the 1st option from the list (if the list is not empty) + var selectFirstProvider = function(){ + if ($scope.unsetProviders.length > 0){ + $scope.newProviderId = $scope.unsetProviders[0]; + } else { + $scope.newProviderId = null; + } + } + + // Fill in configured providers + var initSocial = function() { + $scope.unsetProviders = []; + $scope.configuredProviders = []; + + for (var providerConfig in $scope.realm.socialProviders){ + // Get the provider ID which is before the '.' (i.e. google in google.key or google.secret) + if ($scope.realm.socialProviders.hasOwnProperty(providerConfig)){ + var pId = providerConfig.split('.')[0]; + if ($scope.configuredProviders.indexOf(pId) < 0){ + $scope.configuredProviders.push(pId); + } + } + } + + // If no providers are already configured, you can add any of them + if ($scope.configuredProviders.length == 0){ + $scope.unsetProviders = $scope.availableProviders; + } else { + for (var i = 0; i < $scope.availableProviders.length; i++){ + var providerId = $scope.availableProviders[i]; + if ($scope.configuredProviders.indexOf(providerId) < 0){ + $scope.unsetProviders.push(providerId); + } + } + } + + selectFirstProvider(); + }; + + initSocial(); + + $scope.addProvider = function() { + if ($scope.availableProviders.indexOf($scope.newProviderId) > -1){ + $scope.realm.socialProviders[$scope.newProviderId+".key"]=""; + $scope.realm.socialProviders[$scope.newProviderId+".secret"]=""; + $scope.configuredProviders.push($scope.newProviderId); + $scope.unsetProviders.remove($scope.unsetProviders.indexOf($scope.newProviderId)); + selectFirstProvider(); + } + }; + + $scope.removeProvider = function(pId) { + delete $scope.realm.socialProviders[pId+".key"]; + delete $scope.realm.socialProviders[pId+".secret"]; + $scope.configuredProviders.remove($scope.configuredProviders.indexOf(pId)); + $scope.unsetProviders.push(pId); + }; + + $scope.$watch('realm', function() { + if (!angular.equals($scope.realm, oldCopy)) { + $scope.changed = true; + } + }, true); + + $scope.save = function() { + $scope.saveClicked = true; + + if ($scope.realmForm.$valid) { + var realmCopy = angular.copy($scope.realm); + realmCopy.social = true; + $scope.changed = false; + Realm.update(realmCopy, function () { + $location.url("/realms/" + realm.id + "/social-settings"); + Notifications.success("Saved changes to realm"); + }); + } else { + $scope.realmForm.showErrors = true; + Notifications.error("Some required fields are missing values."); + } + }; + + $scope.reset = function() { + $scope.realm = angular.copy(oldCopy); + $scope.changed = false; + // Initialize lists of configured and unset providers again + initSocial(); + }; + + $scope.openHelp = function(pId) { + $scope.helpPId = pId; + $scope.providerHelpModal = true; + }; + + $scope.closeHelp = function() { + $scope.providerHelpModal = false; + }; + +}); module.controller('RealmTokenDetailCtrl', function($scope, Realm, realm, $http, $location, Dialog, Notifications) { console.log('RealmTokenDetailCtrl'); diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/facebook-help.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/facebook-help.html new file mode 100755 index 0000000000..b77979d1a5 --- /dev/null +++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/facebook-help.html @@ -0,0 +1,28 @@ +
+ Mock page for Facebook provider help. +
+ +Fill in name, description and website. For Callback URL use the following value:
+ ++ Close the help panel and click save changes. +
\ No newline at end of file diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/google-help.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/google-help.html index 5a45c6c66b..1c2eae13e6 100755 --- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/google-help.html +++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/google-help.html @@ -21,20 +21,16 @@ -Close the help panel and click save changes.
\ No newline at end of file +Close the help panel and click save changes.
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/twitter-help.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/twitter-help.html old mode 100755 new mode 100644 index 4ce76219a4..27ea7abd88 --- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/twitter-help.html +++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/provider/twitter-help.html @@ -1,6 +1,5 @@- Open https://dev.twitter.com/apps. Click on Create a - new + Open https://dev.twitter.com/apps. Click on Create a new application.
@@ -16,28 +15,23 @@Insert Consumer key and Consumer secret in the form below.
-- Now click on Settings and tick the box Allow this application to be used to Sign in with Twitter, and - click on Update + Now click on Settings and tick the box Allow this application to be used to Sign in with Twitter, and click on Update this Twitter application's settings.
diff --git a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html index d68727ba2a..a102740feb 100755 --- a/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html +++ b/admin-ui/src/main/resources/META-INF/resources/admin/partials/realm-social.html @@ -1,4 +1,4 @@ -