define("app/services/UsersService",["angular","lodash","cjt/core","cjt/util/parse","cjt/io/api","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/modules"],(function(e,r,t,i,o,n){"use strict";var s=e.module("App");function a(r){var t=[],i={get_users:function(){return t},fetch_users:function(){var s=r.defer(),a=new n.Class;return a.initialize("","get_users_authn_linked_accounts"),o.promise(a.getRunArguments()).done((function(e){(e=e.parsedResponse).status?s.resolve(e):s.reject(e.error)})),s.promise.then((function(r){t=[],e.forEach(r.data,(function(e){var r=i.get_user_by_username(e.username);r||(r={username:e.username,links:{}},t.push(r)),r.links[e.provider_protocol]||(r.links[e.provider_protocol]={}),r.links[e.provider_protocol][e.provider_id]||(r.links[e.provider_protocol][e.provider_id]={}),r.links[e.provider_protocol][e.provider_id][e.subject_unique_identifier]={link_type:e.link_type,preferred_username:e.preferred_username}}))})),s.promise},get_user_by_username:function(e){for(var r=0;r<t.length;r++)if(t[r].username===e)return t[r]},unlink_provider:function(e,t,i){var s=r.defer(),a=new n.Class;return a.initialize("","unlink_user_authn_provider"),a.addArgument("username",e),a.addArgument("subject_unique_identifier",t),a.addArgument("provider_id",i),o.promise(a.getRunArguments()).done((function(e){(e=e.parsedResponse).status?s.resolve(e):s.reject(e.error)})),s.promise}};return i}return a.$inject=["$q","growl"],s.factory("UsersService",a)})),define("app/services/ProvidersService",["angular","lodash","cjt/core","cjt/util/parse","cjt/io/api","cjt/io/whm-v1-request","cjt/io/whm-v1","cjt/decorators/growlDecorator","cjt/modules"],(function(e,r,t,i,o,n){"use strict";var s=e.module("App");function a(r,t){var i=[],s={};function a(r,t){var i=r;if(t){var o=[];e.forEach(t,(function(e,r){o.push(r+"="+encodeURIComponent(e))})),i+="?"+o.join("&")}return i}return s.get_providers=function(){return i},s.get_enabled_providers=function(r){var t=[];return e.forEach(i,(function(e){e[r+"_enabled"]&&t.push(e)})),t},s.fetch_providers=function(){var a=r.defer(),c=new n.Class;return c.initialize("","get_available_authentication_providers"),o.promise(c.getRunArguments()).done((function(e){(e=e.parsedResponse).status?a.resolve(e):a.reject(e.error)})),a.promise.then((function(r){i=[],e.forEach(r.data,(function(r){r=e.extend(r,{enable:function(e){return s.enable_provider(e,r).then((function(){t.success(LOCALE.maketext("The system has successfully enabled the “[_1]” provider in “[_2]”.",r.display_name,e))}),(function(i){t.error(LOCALE.maketext("The system could not enable the “[_1]” provider in “[_2]”. The following error occurred: [_3]",r.display_name,e,i))}))},disable:function(e){return s.disable_provider(e,r).then((function(){t.success(LOCALE.maketext("The system has successfully disabled the “[_1]” provider in “[_2]”.",r.display_name,e))}),(function(i){t.error(LOCALE.maketext("The system could not disable the “[_1]” provider in “[_2]”. The following error occurred: [_3]",r.display_name,e,i))}))},toggle_status:function(e){return r[e+"_enabled"]?r.disable(e):r.enable(e)}}),this.push(r)}),i)})),a.promise},s.enable_provider=function(e,t){var i=r.defer(),s=new n.Class;return s.initialize("","enable_authentication_provider"),s.addArgument("provider_id",t.id),s.addArgument("service_name",e),o.promise(s.getRunArguments()).done((function(r){(r=r.parsedResponse).status?(i.resolve(r),t[e+"_enabled"]=!0):i.reject(r.error)})),i.promise},s.disable_provider=function(e,t){var i=r.defer(),s=new n.Class;return s.initialize("","disable_authentication_provider"),s.addArgument("provider_id",t.id),s.addArgument("service_name",e),o.promise(s.getRunArguments()).done((function(r){(r=r.parsedResponse).status?(i.resolve(r),t[e+"_enabled"]=!1):i.reject(r.error)})),i.promise},s.set_provider_display_configurations=function(e,t){var i=r.defer(),s=new n.Class;return s.initialize("","set_provider_display_configurations"),s.addArgument("service_name","cpaneld"),s.addArgument("provider_id",e),s.addArgument("configurations",JSON.stringify(t)),o.promise(s.getRunArguments()).done((function(e){(e=e.parsedResponse).status?i.resolve(e):i.reject(e.error)})),i.promise},s.set_provider_client_configurations=function(e,t){var i=r.defer(),s=new n.Class;return s.initialize("","set_provider_client_configurations"),s.addArgument("service_name","cpaneld"),s.addArgument("provider_id",e),s.addArgument("configurations",JSON.stringify(t)),o.promise(s.getRunArguments()).done((function(e){(e=e.parsedResponse).status?i.resolve(e):i.reject(e.error)})),i.promise},s.get_provider_client_configurations=function(e){var t=r.defer(),i=new n.Class;return i.initialize("","get_provider_client_configurations"),i.addArgument("provider_id",e),i.addArgument("service_name","cpaneld"),o.promise(i.getRunArguments()).done((function(e){(e=e.parsedResponse).status?t.resolve(e):t.reject(e.error)})),t.promise},s.get_provider_configuration_fields=function(e){var t=r.defer(),i=new n.Class;return i.initialize("","get_provider_configuration_fields"),i.addArgument("service_name","cpaneld"),i.addArgument("provider_id",e),i.addSorting("display_order"),o.promise(i.getRunArguments()).done((function(e){(e=e.parsedResponse).status?t.resolve(e):t.reject(e.error)})),t.promise},s.get_provider_by_id=function(e){for(var r=0;r<i.length;r++){var t=i[r];if(t.id===e)return t}},s.get_provider_display_configurations=function(e){var t=r.defer(),i=new n.Class;return i.initialize("","get_provider_display_configurations"),i.addArgument("provider_id",e),o.promise(i.getRunArguments()).done((function(e){(e=e.parsedResponse).status?t.resolve(e):t.reject(e.error)})),t.promise},s.save_provider_configurations=function(t,i,s){var c={command:[]};s&&e.forEach(s,(function(e){c.command.push(a("set_provider_display_configurations",{provider_id:t,service_name:e.service_name,configurations:JSON.stringify(e.configs)}))})),c.command.push(a("set_provider_client_configurations",{provider_id:t,service_name:"cpaneld",configurations:JSON.stringify(i)}));var l=r.defer(),u=new n.Class;return u.initialize("","batch"),u.addArgument("command",c.command),o.promise(u.getRunArguments()).done((function(e){(e=e.parsedResponse).status?l.resolve(e):l.reject(e.error)})),l.promise},s}return a.$inject=["$q","growl"],s.factory("ProvidersService",a)})),define("app/views/UsersController",["angular","lodash","cjt/modules","cjt/directives/toggleSortDirective","cjt/directives/searchDirective","cjt/directives/pageSizeDirective","cjt/decorators/paginationDecorator"],(function(e,r){var t=function(t,i,o,n,s){t.users=[],t.providers=[],t.meta={sortReverse:!1,sortBy:"label",sortDirection:"asc",maxPages:5,totalItems:t.users.length,currentPage:1,pageSize:20,pageSizes:[20,50,100,500],start:0,limit:10,filterValue:""},t.filteredList=t.users,t.showPager=!0,t.checkdropdownOpen=!1,t.totalSelectedUsers=0;var a=[];t.sortList=function(){t.fetch()},t.selectPage=function(){t.fetch()},t.selectPageSize=function(){t.fetch()},t.configureUser=function(e){o.path("/providers/"+e.id)},t.searchList=function(){t.fetch()};var c={filter:i("filter"),orderBy:i("orderBy"),startFrom:i("startFrom"),limitTo:i("limitTo")};return t.manage_user=function(e){o.path("/users/"+e)},t.get_providers_for=function(r){var t=[];return e.forEach(r.links,(function(r){e.forEach(r,(function(e,r){var i=s.get_provider_by_id(r);i&&t.push(i)}))})),t},t.fetch=function(){var e=[];if(e=""!==t.meta.filterValue?c.filter(t.users,t.meta.filterValue,!1):t.users,""!==t.meta.sortDirection&&""!==t.meta.sortBy&&(e=c.orderBy(e,t.meta.sortBy,"asc"===t.meta.sortDirection)),t.meta.totalItems=e.length,t.meta.totalItems>r.min(t.meta.pageSizes)){var i=(t.meta.currentPage-1)*t.meta.pageSize,o=t.meta.pageSize;e=c.limitTo(c.startFrom(e,i),o),t.showPager=!0,t.meta.start=i+1,t.meta.limit=i+e.length}else t.showPager=!1,0===e.length?t.meta.start=0:t.meta.start=1,t.meta.limit=e.length;var n=0;return e.forEach((function(e){-1!==a.indexOf(e.id)?e.rowSelected=!0:(e.rowSelected=!1,n++)})),t.filteredList=e,t.allRowsSelected=e.length>0&&0===n,e},t.init=function(){t.users=n.get_users(),t.providers=s.get_enabled_providers(),t.fetch()},t.init(),this},i=e.module("App");return t.$inject=["$scope","$filter","$location","UsersService","ProvidersService"],i.controller("UsersController",t)})),define("app/views/ManageUserController",["angular","cjt/util/locale","cjt/decorators/growlDecorator","ngSanitize","cjt/modules","app/services/ProvidersService","app/services/UsersService"],(function(e,r){var t=e.module("App");function i(t,i,o,n,s,a,c,l){t.user=!1,t.LOCALE=r,t.init=function(){t.loadingUser=!0,t.userID=i.userID,t.user=c.get_user_by_username(t.userID),t.user_links=t.get_user_links(),t.loadingUser=!1},t.fetch=function(){t.user_links=[],t.loadingUser=!0,c.fetch_users().then((function(){t.user=c.get_user_by_username(t.userID),t.user_links=t.get_user_links(),t.user_links.length||o.path("/users")}),(function(e){l.error(r.maketext("The system encountered an error while it tried to retrieve the users: [_1]",e))})).finally((function(){t.loadingUser=!1}))},t.unlink_provider=function(e,i){var o=a.get_provider_by_id(i),u=n.$new();u.provider=o.display_name,u.username=t.user.username;var d=t.user.links.openid_connect[i][e].preferred_username;return t.modalInstance=s.open({templateUrl:"confirmproviderunlink.html",scope:u}),t.modalInstance.result.then((function(){return c.unlink_provider(t.user.username,e,o.id).then((function(){l.success(r.maketext("The system has removed the “[_1] ([_2])” authentication linkage for “[_3].”",o.display_name,d,t.user.username)),t.fetch()}),(function(e){l.error(r.maketext("The system could not remove the “[_1] ([_2])” authentication linkage for “[_3]” due to an error: [_4]",o.display_name,d,t.user.username,e))}))}),(function(){t.clear_modal_instance()})).finally((function(){t.clear_modal_instance()}))},t.clear_modal_instance=function(){t.modalInstance&&(t.modalInstance.close(),t.modalInstance=null)},t.get_user_links=function(){var r=[];return t.user?(e.forEach(t.user.links,(function(t){e.forEach(t,(function(t,i){var o=a.get_provider_by_id(i);r[i]||r.push(o),e.forEach(t,(function(e,t){r.push({provider_key:o.id,display_name:e.preferred_username,subject_unique_identifier:t})}))}))})),r):r},t.return_to_list=function(){o.path("/users")},t.init()}i.$inject=["$scope","$routeParams","$location","$rootScope","$uibModal","ProvidersService","UsersService","growl"],t.controller("ManageUserController",i)})),define("app/views/ProvidersController",["angular","lodash","cjt/util/locale","ngSanitize","cjt/modules","cjt/directives/toggleSortDirective","cjt/directives/searchDirective","cjt/directives/pageSizeDirective","cjt/directives/toggleSwitchDirective","cjt/filters/startFromFilter","cjt/decorators/paginationDecorator","app/services/ProvidersService"],(function(e,r,t){var i=e.module("App");function o(e,i,o,n,s){e.providers=[],e.meta={sortReverse:!1,sortBy:"label",sortDirection:"asc",maxPages:5,totalItems:e.providers.length,currentPage:1,pageSize:20,pageSizes:[20,50,100,500],start:0,limit:10,filterValue:""},e.filteredList=e.providers,e.showPager=!0,e.get_service_column_label=function(e){return t.maketext("Status ([_1])",e)},e.allowed_authentication_services=s.allowed_authentication_services,e.checkdropdownOpen=!1,e.totalSelectedProviders=0;var a=[];e.sortList=function(){e.fetch()},e.selectPage=function(){e.fetch()},e.selectPageSize=function(){e.fetch()},e.selectAllProviders=function(){if(e.allRowsSelected)e.filteredList.forEach((function(e){e.rowSelected=!0,-1===a.indexOf(e.id)&&a.push(e.id)}));else{var t=e.filteredList.map((function(e){return e.rowSelected=!1,e.id}));a=r.difference(a,t)}e.totalSelectedProviders=a.length},e.configureProvider=function(e){o.path("/providers/"+e.id)},e.selectProvider=function(r){void 0!==r&&(r.rowSelected?(a.push(r.id),e.allRowsSelected=e.filteredList.every((function(e){return e.rowSelected}))):(a=a.filter((function(e){return e!==r.id})),e.allRowsSelected=!1)),e.totalSelectedProviders=a.length},e.clearAllSelections=function(r){r.preventDefault(),r.stopPropagation(),a=[],e.filteredList.forEach((function(e){e.rowSelected=!1})),e.checkdropdownOpen=!1,e.allRowsSelected=!1,e.totalSelectedProviders=0},e.searchList=function(){e.fetch()};var c={filter:i("filter"),orderBy:i("orderBy"),startFrom:i("startFrom"),limitTo:i("limitTo")};e.fetch=function(){var t=[];if(t=""!==e.meta.filterValue?c.filter(e.providers,e.meta.filterValue,!1):e.providers,""!==e.meta.sortDirection&&""!==e.meta.sortBy&&(t=c.orderBy(t,e.meta.sortBy,"asc"===e.meta.sortDirection)),e.meta.totalItems=t.length,e.meta.totalItems>r.min(e.meta.pageSizes)){var i=(e.meta.currentPage-1)*e.meta.pageSize,o=e.meta.pageSize;t=c.limitTo(c.startFrom(t,i),o),e.showPager=!0,e.meta.start=i+1,e.meta.limit=i+t.length}else e.showPager=!1,0===t.length?e.meta.start=0:e.meta.start=1,e.meta.limit=t.length;var n=0;return t.forEach((function(e){-1!==a.indexOf(e.id)?e.rowSelected=!0:(e.rowSelected=!1,n++)})),e.filteredList=t,e.allRowsSelected=t.length>0&&0===n,t},e.init=function(){e.providers=n.get_providers(),e.fetch()},e.init()}o.$inject=["$scope","$filter","$location","ProvidersService","PAGE"],i.controller("ProvidersController",o)})),define("app/views/ConfigureProviderController",["angular","jquery","lodash","cjt/util/locale","cjt/decorators/growlDecorator","cjt/directives/actionButtonDirective","cjt/validator/datatype-validators","ngSanitize","cjt/modules","app/services/ProvidersService"],(function(e,r,t,i){"use strict";var o=e.module("App");function n(r,o,n,s,a){function c(e){a.error(t.escape(e))}r.fields={},r.configurations={},r.provider=!1,r.confirmed_redirects=!1,r.savingProvider=!1,r.services={},r.service_names={webmaild:"Webmail",whostmgrd:"WHM",cpaneld:"cPanel"},r.init=function(){r.loadingProvider=!0;var t=o.providerID;r.provider=s.get_provider_by_id(t),r.provider||n.path("providers"),s.get_provider_configuration_fields(r.provider.id).then((function(e){return r.fields=e.data,s.get_provider_client_configurations(r.provider.id)})).then((function(t){var i={};return e.forEach(r.fields,(function(e){i[e.field_id]=""}),i),r.configurations=e.extend(i,t.data.client_configurations),s.get_provider_display_configurations(r.provider.id)}),c).then((function(t){e.forEach(t.data,(function(e){r.services[e.service]=e}))}),c).finally((function(){r.loadingProvider=!1}))},r.saveProviderConfigurations=function(){var t={};r.savingProvider=!0;var o=[];return e.forEach(r.services,(function(e){o.push({provider_id:r.provider.id,service_name:e.service,configs:{color:e.color,icon:e.icon,icon_type:e.icon_type,textcolor:e.textcolor,label:e.label}})})),e.forEach(r.fields,(function(e){t[e.field_id]=r.configurations[e.field_id]})),s.save_provider_configurations(r.provider.id,t,o).then((function(){n.path("providers"),a.success(i.maketext("The system successfully updated the configurations for “[_1].”",r.provider.display_name))}),(function(e){a.error(i.maketext("The system could not update the configurations for “[_1].” The following error occurred: “[_2]”",r.provider.display_name,e))})).finally((function(){r.savingProvider=!1}))},r.canSave=function(e){for(var t,i=0;i<r.fields.length;i++)if(!(t=r.fields[i]).optional&&!r.configurations[t.field_id])return!1;return!(r.configurations.redirect_uris&&!e.confirmed_redirects.$modelValue)},r.init(),window.scope=r}n.$inject=["$scope","$routeParams","$location","ProvidersService","growl"],o.controller("ConfigureProviderController",n)})),define("app/manage",["angular","lodash","cjt/core","cjt/util/locale","cjt/modules"],(function(e,r,t,i){"use strict";return e.module("App",["cjt2.config.whm.configProvider","ui.bootstrap","cjt2.whm","angular-growl"]),require(["cjt/bootstrap","uiBootstrap","app/services/UsersService","app/services/ProvidersService","app/views/UsersController","app/views/ManageUserController","app/views/ProvidersController","app/views/ConfigureProviderController","cjt/decorators/growlDecorator"],(function(r){var o=e.module("App");o.value("PAGE",PAGE),o.controller("BaseController",["$rootScope","$scope","$route","$location",function(e,r,t,i){r.loading=!1,e.$on("$routeChangeStart",(function(){r.loading=!0})),e.$on("$routeChangeSuccess",(function(){r.loading=!1})),e.$on("$routeChangeError",(function(){r.loading=!1})),r.current_route_matches=function(e){return i.path().match(e)},r.go=function(e){i.path(e)}}]),o.config(["$routeProvider",function(e){function r(e,r){return e.fetch_providers().then((function(){}),(function(e){r.error(i.maketext("The system encountered an error while it tried to retrieve the providers: [_1]",e))}))}function o(e,r,t){return e.fetch_users().then((function(){return r.fetch_providers().then((function(){}),(function(e){t.error(i.maketext("The system encountered an error while it tried to retrieve the providers: [_1]",e))}))}),(function(e){t.error(i.maketext("The system encountered an error while it tried to retrieve the users: [_1]",e))}))}e.when("/providers",{controller:"ProvidersController",templateUrl:t.buildFullPath("external_auth/views/providers.ptt"),resolve:{providers:["ProvidersService","growl",r]}}),e.when("/providers/:providerID",{controller:"ConfigureProviderController",templateUrl:t.buildFullPath("external_auth/views/configure_provider.ptt"),resolve:{providers:["ProvidersService","growl",r]}}),e.when("/users",{controller:"UsersController",templateUrl:t.buildFullPath("external_auth/views/users.ptt"),resolve:{providers:["UsersService","ProvidersService","growl",o]}}),e.when("/users/:userID",{controller:"ManageUserController",templateUrl:t.buildFullPath("external_auth/views/manage_user.ptt"),resolve:{providers:["UsersService","ProvidersService","growl",o]}}),e.otherwise({redirectTo:"/users"})}]),r(document)}))}));