graphdb-workbench 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/10.f63a9f9189528238aa8f.bundle.js +2 -0
- package/dist/10.f63a9f9189528238aa8f.bundle.js.map +1 -0
- package/dist/11.3957302d7a301df30dd1.bundle.js +1 -1
- package/dist/11.3957302d7a301df30dd1.bundle.js.map +1 -1
- package/dist/120.80843604737b7c260788.bundle.js +1 -1
- package/dist/120.80843604737b7c260788.bundle.js.map +1 -1
- package/dist/18.44723ea06155c72f46ae.bundle.js +1 -1
- package/dist/18.44723ea06155c72f46ae.bundle.js.map +1 -1
- package/dist/25.9e0925889b3a3f79c7fe.bundle.js +1 -1
- package/dist/25.9e0925889b3a3f79c7fe.bundle.js.map +1 -1
- package/dist/29.9bdb27c21d6eacac1341.bundle.js +1 -1
- package/dist/29.9bdb27c21d6eacac1341.bundle.js.map +1 -1
- package/dist/30.34b74ada583b1b0af913.bundle.js +1 -1
- package/dist/30.34b74ada583b1b0af913.bundle.js.map +1 -1
- package/dist/68.e25480b7770a679a9654.bundle.js +1 -1
- package/dist/68.e25480b7770a679a9654.bundle.js.map +1 -1
- package/dist/{bundle.a8677c75aad1ad7b3b6a.bundle.js → bundle.7d5dd8e4d7cb8ed01086.bundle.js} +3 -3
- package/dist/bundle.7d5dd8e4d7cb8ed01086.bundle.js.map +1 -0
- package/dist/index.html +3 -3
- package/dist/js/angular/core/directives/rdfresourcesearch/templates/rdfResourceSearchTemplate.html +1 -1
- package/dist/pages/autocomplete.html +1 -1
- package/dist/pages/choose-repository-type.html +1 -1
- package/dist/pages/cluster-management/clusterInfo.html +3 -3
- package/dist/pages/create-index.html +4 -4
- package/dist/pages/dependencies.html +1 -1
- package/dist/pages/domainRangeInfo.html +2 -2
- package/dist/pages/edit.html +1 -1
- package/dist/pages/explore.html +1 -1
- package/dist/pages/export.html +1 -1
- package/dist/pages/find.html +1 -1
- package/dist/pages/graph-config/saveGraphConfig.html +11 -11
- package/dist/pages/graphs-visualizations.html +7 -7
- package/dist/pages/import.html +1 -1
- package/dist/pages/jdbc-create.html +5 -5
- package/dist/pages/monitor/queries.html +1 -1
- package/dist/pages/monitor/resources.html +2 -2
- package/dist/pages/namespaces.html +2 -2
- package/dist/pages/plugins.html +1 -1
- package/dist/pages/rdfClassHierarchyInfo.html +7 -7
- package/dist/pages/rdfrank.html +2 -2
- package/dist/pages/repositories.html +2 -2
- package/dist/pages/repository.html +2 -2
- package/dist/pages/similarity-indexes.html +1 -1
- package/dist/pages/sparql-template-create.html +5 -5
- package/dist/pages/sparql.html +3 -3
- package/dist/pages/webapi.html +2 -2
- package/dist/res/swagger/index.html +27 -27
- package/package.json +1 -1
- package/dist/10.eab0a417fa2f2831905e.bundle.js +0 -2
- package/dist/10.eab0a417fa2f2831905e.bundle.js.map +0 -1
- package/dist/bundle.a8677c75aad1ad7b3b6a.bundle.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{91:function(e,r,t){"use strict";t.r(r);t(3),t(10),t(20),t(21);var s=t(1);const n=function(e){return e.location?`${e.id}@${e.location}`:e.id},o=angular.module("graphdb.framework.security.controllers",["ngCookies","ui.bootstrap","graphdb.framework.core.services.jwtauth","graphdb.framework.core.services.openIDService","graphdb.framework.rest.security.service","graphdb.framework.utils.localstorageadapter","toastr"]),i=function(e){let r=s.UserType.USER;const t={READ_REPO:{},WRITE_REPO:{}},n={};for(let o=0;o<e.length;o++){const i=e[o];if(i===s.UserRole.ROLE_ADMIN)r=s.UserType.ADMIN;else if(i===s.UserRole.ROLE_REPO_MANAGER)r!==s.UserType.ADMIN&&(r=s.UserType.REPO_MANAGER);else if(i===s.UserRole.ROLE_USER)r=s.UserType.USER;else if(0!==i.indexOf("ROLE_")){const e=i.indexOf("_",i.indexOf("_")+1),r=i.substr(0,e),s=i.substr(e+1);t[r][s]=!0,n[s]=n[s]||{},"READ_REPO"===r?n[s].read=!0:"WRITE_REPO"===r&&(n[s].write=!0)}}return{userType:r,userTypeDescription:s.UserUtils.getUserRoleName(r),grantedAuthorities:t,repositories:n}};o.controller("LoginCtrl",["$scope","$http","toastr","$jwtAuth","$openIDAuth","$location","$rootScope","$translate",function(e,r,t,s,n,o,i,a){e.username="",e.password="",s.reinitializeSecurity(),e.loginWithOpenID=function(){s.loginOpenID()},o.search().noaccess?t.error(a.instant("security.no.rights.config.error"),a.instant("security.login.error")):o.search().expired&&t.error(a.instant("security.auth.token.expired"),a.instant("security.login.error")),e.isGDBLoginEnabled=function(){return s.passwordLoginEnabled},e.isOpenIDEnabled=function(){return s.openIDEnabled},e.login=function(){return r({method:"POST",url:"rest/login",data:{username:e.username,password:e.password}}).success((function(e,r,t){s.authenticate(e,t("Authorization")).then(()=>{i.returnToUrl?o.url(i.returnToUrl):o.path("/")})})).error((function(r,s){if(401===s)t.error(a.instant("security.wrong.credentials"),a.instant("common.error")),e.wrongCredentials=!0,e.username="",e.password="";else{const e=getError(r);t.error(e,s)}}))}}]),o.controller("UsersCtrl",["$scope","$modal","toastr","$window","$jwtAuth","$timeout","ModalService","SecurityRestService","$translate",function(e,r,t,s,o,a,u,c,d){e.loader=!0,e.securityEnabled=function(){return o.isSecurityEnabled()},e.hasExternalAuth=function(){return o.hasExternalAuth()},e.getAuthImplementation=function(){return o.getAuthImplementation()},e.freeAccessEnabled=function(){return o.isFreeAccessEnabled()},e.getUsers=function(){c.getUsers().success((function(r){e.users=r;for(let r=0;r<e.users.length;r++){const t=i(e.users[r].grantedAuthorities);e.users[r].userType=t.userType,e.users[r].userTypeDescription=t.userTypeDescription,e.users[r].repositories=t.repositories}e.loader=!1})).error((function(r){const s=getError(r);t.error(s,d.instant("common.error")),e.loader=!1}))},e.getUsers(),e.$on("repositoryIsSet",(function(){e.getUsers()})),e.toggleSecurity=function(){if(o.toggleSecurity(!o.isSecurityEnabled()),o.isSecurityEnabled()){const r=a((function(){s.location.reload()}),500);e.$on("$destroy",(function(){a.cancel(r)}))}},e.toggleFreeAccess=function(t){!o.isFreeAccessEnabled()||o.isFreeAccessEnabled()&&t?c.getFreeAccess().then((function(s){let i=s.data.authorities,a=s.data.appSettings||{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};r.open({templateUrl:"js/angular/security/templates/modal/default-authorities.html",controller:"DefaultAuthoritiesCtrl",resolve:{data:function(){return{defaultAuthorities:function(){const r={READ_REPO:{},WRITE_REPO:{}},t=_.mapKeys(e.getRepositories(),(function(e){return n(e)}));return _.each(i,(function(e){0===e.indexOf("WRITE_REPO_")?t.hasOwnProperty(e.substr(11))&&(r.WRITE_REPO[e.substr(11)]=!0):0===e.indexOf("READ_REPO_")&&t.hasOwnProperty(e.substr(10))&&(r.READ_REPO[e.substr(10)]=!0)})),r},appSettings:a}}}}).result.then((function(e){i=e.authorities,a=e.appSettings,o.toggleFreeAccess(t||!o.isFreeAccessEnabled(),i,a,t)}))})):o.toggleFreeAccess(!o.isFreeAccessEnabled(),[])},e.editFreeAccess=function(){e.toggleFreeAccess(!0)},e.removeUser=function(r){u.openSimpleModal({title:d.instant("common.confirm.delete"),message:d.instant("security.confirm.delete.user",{name:r}),warning:!0}).result.then((function(){e.loader=!0,c.deleteUser(r).success((function(){e.getUsers()})).error((function(r){const s=getError(r);t.error(s,d.instant("common.error")),e.loader=!1}))}))},e.encodeURIComponent=function(e){return encodeURIComponent(e)}}]),o.controller("DefaultAuthoritiesCtrl",["$scope","$http","$modalInstance","data","$rootScope",function(e,r,t,s,o){e.grantedAuthorities=s.defaultAuthorities(),e.appSettings=s.appSettings,e.hasActiveLocation=function(){return!_.isEmpty(o.globalLocation)},e.getRepositories=function(){return o.globalRepositories},e.ok=function(){const r=[];e.repositoryCheckError=!0;for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(r.push("WRITE_REPO_"+t),r.push("READ_REPO_"+t),e.repositoryCheckError=!1);for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&-1===r.indexOf("READ_REPO_"+t)&&(r.push("READ_REPO_"+t),e.repositoryCheckError=!1);e.repositoryCheckError||t.close({authorities:r,appSettings:e.appSettings})},e.cancel=function(){t.dismiss("cancel")},e.createUniqueKey=function(e){return n(e)}}]),o.controller("CommonUserCtrl",["$rootScope","$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$translate","passwordPlaceholder",function(e,r,t,o,i,a,u,c,d,p){e.$on("$translateChangeSuccess",(function(){r.passwordPlaceholder=d.instant(p)})),r.isAdmin=function(){return c.hasRole(s.UserRole.ROLE_ADMIN)},r.hasExternalAuth=function(){return c.hasExternalAuth()},r.hasEditRestrictions=function(){return r.user&&r.user.username===s.UserType.ADMIN},r.isOverrideAuth=function(){return c.isDefaultAuthEnabled()},r.setGrantedAuthorities=function(){!function(e){function r(){for(let r=0;r<arguments.length;r++){const t=arguments[r];_.indexOf(e.user.grantedAuthorities,t)<0&&e.user.grantedAuthorities.push(t)}}if(e.user.grantedAuthorities=[],e.repositoryCheckError=!0,e.userType===s.UserType.ADMIN)e.repositoryCheckError=!1,r(s.UserRole.ROLE_ADMIN);else if(e.userType===s.UserType.REPO_MANAGER)e.repositoryCheckError=!1,r(s.UserRole.ROLE_REPO_MANAGER);else{r(s.UserRole.ROLE_USER);for(const t in e.grantedAuthorities.WRITE_REPO)e.grantedAuthorities.WRITE_REPO[t]&&(e.repositoryCheckError=!1,r("WRITE_REPO_"+t,"READ_REPO_"+t));for(const t in e.grantedAuthorities.READ_REPO)e.grantedAuthorities.READ_REPO[t]&&(e.repositoryCheckError=!1,r("READ_REPO_"+t))}}(r)},r.hasReadPermission=function(e){const t=n(e);return r.userType===s.UserType.ADMIN||r.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==e.id&&(r.grantedAuthorities.READ_REPO["*"]||r.grantedAuthorities.WRITE_REPO["*"])||r.grantedAuthorities.READ_REPO[t]||r.grantedAuthorities.WRITE_REPO[t]},r.hasWritePermission=function(e){const t=n(e);return r.userType===s.UserType.ADMIN||r.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==e.id&&r.grantedAuthorities.WRITE_REPO["*"]||r.grantedAuthorities.WRITE_REPO[t]},r.readCheckDisabled=function(e){return r.hasWritePermission(e)||"SYSTEM"!==e.id&&"*"!==e&&r.grantedAuthorities.READ_REPO["*"]||r.hasEditRestrictions()},r.writeCheckDisabled=function(e){return r.userType===s.UserType.ADMIN||r.userType===s.UserType.REPO_MANAGER||"SYSTEM"!==e.id&&"*"!==e&&r.grantedAuthorities.WRITE_REPO["*"]||r.hasEditRestrictions()},r.createUniqueKey=function(e){return n(e)},r.userType=s.UserType.USER,r.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}},r.validatePassword=function(){return r.noPassword?(r.passwordError="",r.confirmPasswordError="",!0):r.user.password!==r.user.confirmpassword?(r.user.password?(r.passwordError="",r.confirmPasswordError=d.instant("security.confirm.password")):(r.passwordError=d.instant("security.enter.password"),r.confirmPasswordError=""),!1):(r.passwordError="",r.confirmPasswordError="",!0)},r.isLocalAuthentication=function(){return"Local"===c.getAuthImplementation()},r.updateUser=function(){if(!r.validateForm())return!1;r.isLocalAuthentication()&&r.setGrantedAuthorities(),r.repositoryCheckError||r.updateUserHttp()},r.setNoPassword=function(){r.noPassword&&(r.user.password="",r.user.confirmpassword="",r.passwordError="",r.confirmPasswordError="")}}]),o.controller("AddUserCtrl",["$scope","$http","toastr","$window","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService","$translate",function(e,r,t,n,o,i,a,u,c,d,p){angular.extend(this,u("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.password.placeholder"})),e.mode="add",e.saveButtonText=p.instant("common.create.btn"),e.goBack=function(){const r=o((function(){n.history.back()}),100);e.$on("$destroy",(function(){o.cancel(r)}))},e.pageTitle=p.instant("view.create.user.title"),e.passwordPlaceholder=p.instant("security.password.placeholder"),e.user={username:"",password:"",confirmpassword:"",grantedAuthorities:[],appSettings:{DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0}},e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?d.openSimpleModal({title:p.instant("security.create.admin"),message:p.instant("security.admin.login.warning"),warning:!0}).result.then((function(){e.createUser()})):e.createUser()},e.createUserHttp=function(){e.loader=!0,c.createUser({username:e.user.username,pass:e.user.password,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success(p.instant("security.user.created",{name:e.user.username}));const r=o((function(){e.loader=!1,n.history.back()}),2e3);e.$on("$destroy",(function(){o.cancel(r)}))})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,p.instant("common.error"))}))},e.createUser=function(){e.validateForm()&&(e.setGrantedAuthorities(),e.repositoryCheckError||e.createUserHttp())},e.validateForm=function(){let r=!0;return e.user.username?e.usernameError="":(e.usernameError=p.instant("security.enter.username"),r=!1),e.noPassword?(e.passwordError="",e.confirmPasswordError=""):(e.user.password?e.passwordError="":(e.passwordError=p.instant("security.enter.password"),r=!1),e.user.confirmpassword&&e.user.password===e.user.confirmpassword?e.confirmPasswordError="":(e.confirmPasswordError=p.instant("security.confirm.password"),r=!1)),r}}]),o.controller("EditUserCtrl",["$scope","$http","toastr","$window","$routeParams","$timeout","$location","$jwtAuth","$controller","SecurityRestService","ModalService","$translate",function(e,r,t,n,o,a,u,c,d,p,l,E){angular.extend(this,d("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.new.password"})),e.mode="edit",e.saveButtonText=E.instant("common.save.btn"),e.goBack=function(){const r=a((function(){n.history.back()}),100);e.$on("$destroy",(function(){a.cancel(r)}))},e.params=o,e.pageTitle=E.instant("view.edit.user.title",{userId:e.params.userId}),e.passwordPlaceholder=E.instant("security.new.password"),e.userType=s.UserType.USER;const g={DEFAULT_SAMEAS:!0,DEFAULT_INFERENCE:!0,EXECUTE_COUNT:!0,IGNORE_SHARED_QUERIES:!1,DEFAULT_VIS_GRAPH_SCHEMA:!0};c.hasRole(s.UserRole.ROLE_ADMIN)||u.url("settings"),e.getUserData=function(){p.getUser(e.params.userId).success((function(r){e.userData=r,e.user={username:e.userData.username},e.user.password="",e.user.confirmpassword="",e.user.external=e.userData.external,e.user.appSettings=r.appSettings||g,e.userType=s.UserType.USER;const t=i(r.grantedAuthorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities})).error((function(e){const r=getError(e);t.error(r,E.instant("common.error"))}))},e.getUserData(),e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?l.openSimpleModal({title:E.instant("security.save.admin.settings"),message:E.instant("security.admin.pass.unset"),warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,p.updateUser({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings,grantedAuthorities:e.user.grantedAuthorities}).success((function(){t.success(E.instant("security.user.updated",{name:e.user.username}));const r=a((function(){e.loader=!1,n.history.back()}),2e3);e.$on("$destroy",(function(){a.cancel(r)})),c.getPrincipal().then(r=>{e.user.username===r.username&&(r.appSettings=e.user.appSettings)})})).error((function(r){const s=getError(r);e.loader=!1,t.error(s,E.instant("common.error"))}))},e.validateForm=function(){return e.validatePassword()}}]),o.controller("RolesMappingController",["$scope","toastr","SecurityRestService","$translate",function(e,r,t,s){e.debugMapping=function(e,r){const s=r.split(":");t.getRolesMapping({role:e,method:s[1],mapping:s[0]})};e.$on("repositoryIsSet",(function(){t.getRoles().success((function(r){e.roleMappings=r,e.roles=_.keys(e.roleMappings),e.mappings=_.keys(e.roleMappings[e.roles[0]]);const t=_.map(e.roles,(function(r){return[r,_.filter(e.roleMappings[r]).length]}));e.roles=_.reverse(_.map(_.orderBy(t,(function(e){return e[1]})),(function(e){return e[0]})))})).error((function(t){const n=getError(t);e.loader=!1,r.error(n,s.instant("common.error"))}))}))}]),o.controller("ChangeUserPasswordSettingsCtrl",["$scope","toastr","$window","$timeout","$jwtAuth","$rootScope","$controller","SecurityRestService","ModalService","$translate","LocalStorageAdapter","LSKeys","$q",function(e,r,t,n,o,a,u,c,d,p,l,E,g){angular.extend(this,u("CommonUserCtrl",{$scope:e,passwordPlaceholder:"security.new.password"})),e.mode="settings",e.hasEditRestrictions=function(){return!0},e.saveButtonText=p.instant("common.save.btn"),e.goBack=function(){const r=n((function(){t.history.back()}),100);e.$on("$destroy",(function(){n.cancel(r)}))},e.getPrincipal=function(){return o.getPrincipal().then(r=>{e.currentUserData=angular.copy(r)})},e.getPrincipal().then(()=>{e.redirectAdmin(),f(e)}),e.showWorkbenchSettings=!0,e.updateCurrentUserData=function(){g.when(o.getPrincipal()).then(r=>_.assign(r,e.userData))},e.redirectAdmin=function(){e.currentUserData||a.redirectToLogin()},e.pageTitle=p.instant("view.settings.title"),e.passwordPlaceholder=p.instant("security.new.password"),e.grantedAuthorities={READ_REPO:{},WRITE_REPO:{}};const f=function(r){r.userData=angular.copy(r.currentUserData),r.user={username:r.userData.username},r.user.password="",r.user.confirmpassword="",r.user.external=r.userData.external,r.user.appSettings=r.userData.appSettings,void 0===r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA&&(r.user.appSettings.DEFAULT_VIS_GRAPH_SCHEMA=!0);const t=i(r.userData.authorities);e.userType=t.userType,e.grantedAuthorities=t.grantedAuthorities};e.loader=!1,e.submit=function(){e.noPassword&&e.userType===s.UserType.ADMIN?d.openSimpleModal({title:p.instant("security.save.admin.settings"),message:p.instant("security.admin.pass.unset"),warning:!0}).result.then((function(){e.updateUser()})):e.updateUser()},e.updateUserHttp=function(){e.loader=!0,c.updateUserData({username:e.user.username,pass:e.noPassword?"":e.user.password||void 0,appSettings:e.user.appSettings}).success((function(){e.updateCurrentUserData(),r.success(p.instant("security.user.updated",{name:e.user.username}));const s=n((function(){e.loader=!1,t.history.back()}),2e3);l.set(E.WORKBENCH_SETTINGS,e.workbenchSettings),e.$on("$destroy",(function(){n.cancel(s)}))})).error((function(t){const s=getError(t);e.loader=!1,r.error(s,p.instant("common.error"))}))},e.updateUser=function(){if(!e.validateForm())return!1;e.updateUserHttp()},e.validateForm=function(){return e.validatePassword()},e.setWorkbenchTheme=function(){const r=document.querySelector(":root");"dark"===e.workbenchSettings.theme?r.classList.add("dark"):r.classList.remove("dark")},e.workbenchSettings=l.get(E.WORKBENCH_SETTINGS),e.workbenchSettings||(e.workbenchSettings={theme:"light"}),e.setWorkbenchTheme(),e.$on("$destroy",(function(){const e=l.get(E.WORKBENCH_SETTINGS),r=document.querySelector(":root");e&&"dark"===e.theme?r.classList.add("dark"):r.classList.remove("dark")}))}]),o.controller("DeleteUserCtrl",["$scope","$modalInstance","username",function(e,r,t){e.username=t,e.ok=function(){r.close()},e.cancel=function(){r.dismiss("cancel")}}])}}]);
|
|
2
|
+
//# sourceMappingURL=10.f63a9f9189528238aa8f.bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["webpack:///./src/js/angular/security/controllers.js"],"names":["createUniqueKey","repository","location","id","securityCtrl","angular","module","parseAuthorities","authorities","userType","USER","grantedAuthorities","repositories","i","length","role","ROLE_ADMIN","ADMIN","ROLE_REPO_MANAGER","REPO_MANAGER","ROLE_USER","indexOf","index","op","substr","repo","read","write","userTypeDescription","getUserRoleName","controller","$scope","$http","toastr","$jwtAuth","$openIDAuth","$location","$rootScope","$translate","username","password","reinitializeSecurity","loginWithOpenID","loginOpenID","search","noaccess","error","instant","expired","isGDBLoginEnabled","passwordLoginEnabled","isOpenIDEnabled","openIDEnabled","login","method","url","data","success","status","headers","authenticate","then","returnToUrl","path","wrongCredentials","msg","getError","$modal","$window","$timeout","ModalService","SecurityRestService","loader","securityEnabled","isSecurityEnabled","hasExternalAuth","getAuthImplementation","freeAccessEnabled","isFreeAccessEnabled","getUsers","users","pa","$on","toggleSecurity","timer","reload","cancel","toggleFreeAccess","updateFreeAccess","getFreeAccess","res","appSettings","open","templateUrl","resolve","defaultAuthorities","repoIds","_","mapKeys","getRepositories","r","each","a","hasOwnProperty","result","editFreeAccess","removeUser","openSimpleModal","title","message","name","warning","deleteUser","encodeURIComponent","$modalInstance","hasActiveLocation","isEmpty","globalLocation","globalRepositories","ok","auth","repositoryCheckError","WRITE_REPO","push","READ_REPO","close","dismiss","passwordPlaceholder","isAdmin","hasRole","hasEditRestrictions","user","isOverrideAuth","isDefaultAuthEnabled","setGrantedAuthorities","pushAuthority","arguments","authority","hasReadPermission","uniqueKey","hasWritePermission","repoOrWildCard","readCheckDisabled","writeCheckDisabled","validatePassword","noPassword","passwordError","confirmPasswordError","confirmpassword","isLocalAuthentication","updateUser","validateForm","updateUserHttp","setNoPassword","$controller","extend","this","mode","saveButtonText","goBack","history","back","pageTitle","submit","createUser","createUserHttp","pass","usernameError","$routeParams","params","userId","defaultUserSettings","getUserData","getUser","userData","external","undefined","getPrincipal","principal","debugMapping","mapping","split","getRolesMapping","getRoles","roleMappings","roles","keys","mappings","permissionsCount","map","filter","reverse","orderBy","p","LocalStorageAdapter","LSKeys","$q","currentUserData","copy","redirectAdmin","initUserData","showWorkbenchSettings","updateCurrentUserData","when","assign","redirectToLogin","scope","updateUserData","set","WORKBENCH_SETTINGS","workbenchSettings","setWorkbenchTheme","rootElement","document","querySelector","theme","classList","add","remove","get"],"mappings":"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","file":"10.f63a9f9189528238aa8f.bundle.js","sourcesContent":["import 'angular/core/services';\nimport 'angular/core/services/jwt-auth.service';\nimport 'angular/core/services/openid-auth.service';\nimport 'angular/rest/security.rest.service';\nimport {UserUtils, UserRole, UserType} from 'angular/utils/user-utils';\n\nconst SYSTEM_REPO = 'SYSTEM';\nconst READ_REPO = 'READ_REPO';\nconst READ_REPO_PREFIX = 'READ_REPO_';\nconst WRITE_REPO = 'WRITE_REPO';\nconst WRITE_REPO_PREFIX = 'WRITE_REPO_';\n\nconst modules = [\n 'ngCookies',\n 'ui.bootstrap',\n 'graphdb.framework.core.services.jwtauth',\n 'graphdb.framework.core.services.openIDService',\n 'graphdb.framework.rest.security.service',\n 'graphdb.framework.utils.localstorageadapter',\n 'toastr'\n];\n\nconst createUniqueKey = function (repository) {\n if (repository.location) {\n return `${repository.id}@${repository.location}`;\n }\n return repository.id;\n};\n\nconst securityCtrl = angular.module('graphdb.framework.security.controllers', modules);\n\nconst setGrantedAuthorities = function ($scope) {\n function pushAuthority() {\n for (let i = 0; i < arguments.length; i++) {\n const authority = arguments[i];\n if (_.indexOf($scope.user.grantedAuthorities, authority) < 0) {\n $scope.user.grantedAuthorities.push(authority);\n }\n }\n }\n\n $scope.user.grantedAuthorities = [];\n\n $scope.repositoryCheckError = true;\n if ($scope.userType === UserType.ADMIN) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_ADMIN);\n } else if ($scope.userType === UserType.REPO_MANAGER) {\n $scope.repositoryCheckError = false;\n pushAuthority(UserRole.ROLE_REPO_MANAGER);\n } else {\n pushAuthority(UserRole.ROLE_USER);\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(WRITE_REPO_PREFIX + index, READ_REPO_PREFIX + index);\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index]) {\n $scope.repositoryCheckError = false;\n pushAuthority(READ_REPO_PREFIX + index);\n }\n }\n }\n};\n\nconst parseAuthorities = function (authorities) {\n let userType = UserType.USER;\n const grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n const repositories = {};\n for (let i = 0; i < authorities.length; i++) {\n const role = authorities[i];\n if (role === UserRole.ROLE_ADMIN) {\n userType = UserType.ADMIN;\n } else if (role === UserRole.ROLE_REPO_MANAGER) {\n if (userType !== UserType.ADMIN) {\n userType = UserType.REPO_MANAGER;\n }\n } else if (role === UserRole.ROLE_USER) {\n userType = UserType.USER;\n } else if (role.indexOf('ROLE_') !== 0) {\n const index = role.indexOf('_', role.indexOf('_') + 1);\n const op = role.substr(0, index);\n const repo = role.substr(index + 1);\n grantedAuthorities[op][repo] = true;\n repositories[repo] = repositories[repo] || {};\n if (op === READ_REPO) {\n repositories[repo].read = true;\n } else if (op === WRITE_REPO) {\n repositories[repo].write = true;\n }\n }\n }\n\n return {\n userType: userType,\n userTypeDescription: UserUtils.getUserRoleName(userType),\n grantedAuthorities: grantedAuthorities,\n repositories: repositories\n };\n};\n\nsecurityCtrl.controller('LoginCtrl', ['$scope', '$http', 'toastr', '$jwtAuth', '$openIDAuth', '$location', '$rootScope', '$translate',\n function ($scope, $http, toastr, $jwtAuth, $openIDAuth, $location, $rootScope, $translate) {\n $scope.username = '';\n $scope.password = '';\n\n // Reinitialize security settings, if failed for some reason\n $jwtAuth.reinitializeSecurity();\n\n $scope.loginWithOpenID = function() {\n $jwtAuth.loginOpenID();\n };\n\n if ($location.search().noaccess) {\n toastr.error($translate.instant('security.no.rights.config.error'), $translate.instant('security.login.error'));\n } else if ($location.search().expired) {\n toastr.error($translate.instant('security.auth.token.expired'), $translate.instant('security.login.error'));\n }\n\n $scope.isGDBLoginEnabled = function() {\n return $jwtAuth.passwordLoginEnabled;\n };\n\n $scope.isOpenIDEnabled = function() {\n return $jwtAuth.openIDEnabled;\n };\n\n $scope.login = function () {\n return $http({\n method: 'POST',\n url: 'rest/login',\n data: {\n 'username': $scope.username,\n 'password': $scope.password\n }\n }).success(function (data, status, headers) {\n $jwtAuth.authenticate(data, headers('Authorization'))\n .then(() => {\n if ($rootScope.returnToUrl) {\n // go back to remembered url\n $location.url($rootScope.returnToUrl);\n } else {\n // don't have a remembered url, go home\n $location.path('/');\n }\n });\n }).error(function (data, status) {\n if (status === 401) {\n toastr.error($translate.instant('security.wrong.credentials'), $translate.instant('common.error'));\n $scope.wrongCredentials = true;\n $scope.username = '';\n $scope.password = '';\n } else {\n const msg = getError(data);\n toastr.error(msg, status);\n }\n });\n };\n }]);\n\nsecurityCtrl.controller('UsersCtrl', ['$scope', '$modal', 'toastr', '$window', '$jwtAuth', '$timeout', 'ModalService', 'SecurityRestService', '$translate',\n function ($scope, $modal, toastr, $window, $jwtAuth, $timeout, ModalService, SecurityRestService, $translate) {\n\n $scope.loader = true;\n $scope.securityEnabled = function () {\n return $jwtAuth.isSecurityEnabled();\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n $scope.getAuthImplementation = function () {\n return $jwtAuth.getAuthImplementation();\n };\n $scope.freeAccessEnabled = function () {\n return $jwtAuth.isFreeAccessEnabled();\n };\n $scope.getUsers = function () {\n SecurityRestService.getUsers()\n .success(function (data) {\n $scope.users = data;\n for (let i = 0; i < $scope.users.length; i++) {\n const pa = parseAuthorities($scope.users[i].grantedAuthorities);\n $scope.users[i].userType = pa.userType;\n $scope.users[i].userTypeDescription = pa.userTypeDescription;\n $scope.users[i].repositories = pa.repositories;\n }\n $scope.loader = false;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n $scope.loader = false;\n });\n };\n $scope.getUsers();\n\n $scope.$on('repositoryIsSet', function () {\n $scope.getUsers();\n });\n\n $scope.toggleSecurity = function () {\n $jwtAuth.toggleSecurity(!$jwtAuth.isSecurityEnabled());\n if ($jwtAuth.isSecurityEnabled()) {\n const timer = $timeout(function () {\n $window.location.reload();\n }, 500);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }\n };\n\n $scope.toggleFreeAccess = function (updateFreeAccess) {\n if (!$jwtAuth.isFreeAccessEnabled() || ($jwtAuth.isFreeAccessEnabled() && updateFreeAccess)) {\n SecurityRestService.getFreeAccess().then(function (res) {\n let authorities = res.data.authorities;\n let appSettings = res.data.appSettings || {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n const modalInstance = $modal.open({\n templateUrl: 'js/angular/security/templates/modal/default-authorities.html',\n controller: 'DefaultAuthoritiesCtrl',\n resolve: {\n data: function () {\n return {\n // converts the array rights to hash ones. why, oh, why do we have both formats?\n defaultAuthorities: function () {\n const defaultAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n // We might have old (no longer existing) repositories so we have to check that\n const repoIds = _.mapKeys($scope.getRepositories(), function (r) {\n return createUniqueKey(r);\n });\n _.each(authorities, function (a) {\n // indexOf works in IE 11, startsWith doesn't\n if (a.indexOf(WRITE_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(11))) {\n defaultAuthorities[WRITE_REPO][a.substr(11)] = true;\n }\n } else if (a.indexOf(READ_REPO_PREFIX) === 0) {\n if (repoIds.hasOwnProperty(a.substr(10))) {\n defaultAuthorities[READ_REPO][a.substr(10)] = true;\n }\n }\n });\n return defaultAuthorities;\n },\n appSettings: appSettings\n };\n }\n }\n });\n modalInstance.result.then(function (data) {\n authorities = data.authorities;\n appSettings = data.appSettings;\n $jwtAuth.toggleFreeAccess(updateFreeAccess || !$jwtAuth.isFreeAccessEnabled(), authorities, appSettings, updateFreeAccess);\n });\n });\n } else {\n $jwtAuth.toggleFreeAccess(!$jwtAuth.isFreeAccessEnabled(), []);\n }\n };\n\n $scope.editFreeAccess = function () {\n $scope.toggleFreeAccess(true);\n };\n\n $scope.removeUser = function (username) {\n ModalService.openSimpleModal({\n title: $translate.instant('common.confirm.delete'),\n message: $translate.instant('security.confirm.delete.user', {name: username}),\n warning: true\n }).result.then(function () {\n $scope.loader = true;\n SecurityRestService.deleteUser(username).success(function () {\n $scope.getUsers();\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n\n $scope.loader = false;\n });\n\n });\n };\n\n // Should be able to send the original username to $routeParams\n $scope.encodeURIComponent = function (name) {\n return encodeURIComponent(name);\n };\n }]);\n\nsecurityCtrl.controller('DefaultAuthoritiesCtrl', ['$scope', '$http', '$modalInstance', 'data', '$rootScope',\n function ($scope, $http, $modalInstance, data, $rootScope) {\n $scope.grantedAuthorities = data.defaultAuthorities();\n $scope.appSettings = data.appSettings;\n\n $scope.hasActiveLocation = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return !_.isEmpty($rootScope.globalLocation);\n };\n\n $scope.getRepositories = function () {\n // Hack to get this from root scope to avoid cyclic dependency\n return $rootScope.globalRepositories;\n };\n\n $scope.ok = function () {\n const auth = [];\n $scope.repositoryCheckError = true;\n for (const index in $scope.grantedAuthorities.WRITE_REPO) {\n if ($scope.grantedAuthorities.WRITE_REPO[index]) {\n auth.push(WRITE_REPO_PREFIX + index);\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n for (const index in $scope.grantedAuthorities.READ_REPO) {\n if ($scope.grantedAuthorities.READ_REPO[index] && auth.indexOf(READ_REPO_PREFIX + index) === -1) {\n auth.push(READ_REPO_PREFIX + index);\n $scope.repositoryCheckError = false;\n }\n }\n if (!$scope.repositoryCheckError) {\n $modalInstance.close({authorities: auth, appSettings: $scope.appSettings});\n }\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n\n $scope.createUniqueKey = function (repository) {\n return createUniqueKey(repository);\n };\n }]);\n\nsecurityCtrl.controller('CommonUserCtrl', ['$rootScope', '$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$translate', 'passwordPlaceholder',\n function ($rootScope, $scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $translate, passwordPlaceholder) {\n $rootScope.$on('$translateChangeSuccess', function () {\n $scope.passwordPlaceholder = $translate.instant(passwordPlaceholder);\n });\n $scope.isAdmin = function () {\n return $jwtAuth.hasRole(UserRole.ROLE_ADMIN);\n };\n $scope.hasExternalAuth = function () {\n return $jwtAuth.hasExternalAuth();\n };\n\n $scope.hasEditRestrictions = function () {\n return $scope.user && $scope.user.username === UserType.ADMIN;\n };\n\n $scope.isOverrideAuth = function () {\n return $jwtAuth.isDefaultAuthEnabled();\n };\n\n $scope.setGrantedAuthorities = function () {\n setGrantedAuthorities($scope);\n };\n\n $scope.hasReadPermission = function (repository) {\n const uniqueKey = createUniqueKey(repository);\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repository.id !== SYSTEM_REPO\n && ($scope.grantedAuthorities.READ_REPO['*'] || $scope.grantedAuthorities.WRITE_REPO['*'])\n || $scope.grantedAuthorities.READ_REPO[uniqueKey]\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.hasWritePermission = function (repoOrWildCard) {\n const uniqueKey = createUniqueKey(repoOrWildCard);\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.grantedAuthorities.WRITE_REPO[uniqueKey];\n };\n\n $scope.readCheckDisabled = function (repoOrWildCard) {\n return $scope.hasWritePermission(repoOrWildCard)\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.READ_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.writeCheckDisabled = function (repoOrWildCard) {\n return $scope.userType === UserType.ADMIN || $scope.userType === UserType.REPO_MANAGER\n || repoOrWildCard.id !== SYSTEM_REPO && repoOrWildCard !== '*' && $scope.grantedAuthorities.WRITE_REPO['*']\n || $scope.hasEditRestrictions();\n };\n\n $scope.createUniqueKey = function (repository) {\n return createUniqueKey(repository);\n };\n\n $scope.userType = UserType.USER;\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n $scope.validatePassword = function() {\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n return true;\n }\n if ($scope.user.password !== $scope.user.confirmpassword) {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n $scope.confirmPasswordError = '';\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n }\n return false;\n } else {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n return true;\n };\n\n $scope.isLocalAuthentication = function() {\n return $jwtAuth.getAuthImplementation() === 'Local';\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n if ($scope.isLocalAuthentication()) {\n $scope.setGrantedAuthorities();\n }\n\n if (!$scope.repositoryCheckError) {\n $scope.updateUserHttp();\n }\n };\n\n $scope.setNoPassword = function() {\n if ($scope.noPassword) {\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n }\n };\n }]);\n\nsecurityCtrl.controller('AddUserCtrl', ['$scope', '$http', 'toastr', '$window', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService', '$translate',\n function ($scope, $http, toastr, $window, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService, $translate) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.password.placeholder'}));\n\n $scope.mode = 'add';\n $scope.saveButtonText = $translate.instant('common.create.btn');\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.pageTitle = $translate.instant('view.create.user.title');\n $scope.passwordPlaceholder = $translate.instant('security.password.placeholder');\n\n $scope.user = {\n 'username': '',\n 'password': '',\n 'confirmpassword': '',\n 'grantedAuthorities': [],\n 'appSettings': {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n }\n };\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.create.admin'),\n message: $translate.instant('security.admin.login.warning'),\n warning: true\n }).result.then(function () {\n $scope.createUser();\n });\n } else {\n $scope.createUser();\n }\n };\n\n $scope.createUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.createUser({\n username: $scope.user.username,\n pass: $scope.user.password,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success($translate.instant('security.user.created', {name: $scope.user.username}));\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.createUser = function () {\n if ($scope.validateForm()) {\n $scope.setGrantedAuthorities();\n\n if (!$scope.repositoryCheckError) {\n $scope.createUserHttp();\n }\n }\n };\n\n $scope.validateForm = function () {\n let result = true;\n if (!$scope.user.username) {\n $scope.usernameError = $translate.instant('security.enter.username');\n result = false;\n } else {\n $scope.usernameError = '';\n }\n if ($scope.noPassword) {\n $scope.passwordError = '';\n $scope.confirmPasswordError = '';\n } else {\n if (!$scope.user.password) {\n $scope.passwordError = $translate.instant('security.enter.password');\n result = false;\n } else {\n $scope.passwordError = '';\n }\n if (!$scope.user.confirmpassword || $scope.user.password !== $scope.user.confirmpassword) {\n $scope.confirmPasswordError = $translate.instant('security.confirm.password');\n result = false;\n } else {\n $scope.confirmPasswordError = '';\n }\n }\n\n return result;\n };\n }]);\n\nsecurityCtrl.controller('EditUserCtrl', ['$scope', '$http', 'toastr', '$window', '$routeParams', '$timeout', '$location', '$jwtAuth', '$controller', 'SecurityRestService', 'ModalService', '$translate',\n function ($scope, $http, toastr, $window, $routeParams, $timeout, $location, $jwtAuth, $controller, SecurityRestService, ModalService, $translate) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n\n $scope.mode = 'edit';\n $scope.saveButtonText = $translate.instant('common.save.btn');\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n $scope.params = $routeParams;\n $scope.pageTitle = $translate.instant('view.edit.user.title', {userId: $scope.params.userId});\n $scope.passwordPlaceholder = $translate.instant('security.new.password');\n $scope.userType = UserType.USER;\n const defaultUserSettings = {\n 'DEFAULT_SAMEAS': true,\n 'DEFAULT_INFERENCE': true,\n 'EXECUTE_COUNT': true,\n 'IGNORE_SHARED_QUERIES': false,\n 'DEFAULT_VIS_GRAPH_SCHEMA': true\n };\n\n if (!$jwtAuth.hasRole(UserRole.ROLE_ADMIN)) {\n $location.url('settings');\n }\n $scope.getUserData = function () {\n SecurityRestService.getUser($scope.params.userId).success(function (data) {\n $scope.userData = data;\n $scope.user = {username: $scope.userData.username};\n $scope.user.password = '';\n $scope.user.confirmpassword = '';\n $scope.user.external = $scope.userData.external;\n $scope.user.appSettings = data.appSettings || defaultUserSettings;\n $scope.userType = UserType.USER;\n const pa = parseAuthorities(data.grantedAuthorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n }).error(function (data) {\n const msg = getError(data);\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.getUserData();\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.save.admin.settings'),\n message: $translate.instant('security.admin.pass.unset'),\n warning: true\n }).result.then(function () {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n };\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUser({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings,\n grantedAuthorities: $scope.user.grantedAuthorities\n }).success(function () {\n toastr.success($translate.instant('security.user.updated', {name: $scope.user.username}));\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n // if we update the settings of the currently logged user, update the principal\n $jwtAuth.getPrincipal().then((principal) => {\n if ($scope.user.username === principal.username) {\n principal.appSettings = $scope.user.appSettings;\n }\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n }]);\n\nsecurityCtrl.controller('RolesMappingController', ['$scope', 'toastr', 'SecurityRestService', '$translate',\n function ($scope, toastr, SecurityRestService, $translate) {\n\n $scope.debugMapping = function (role, mapping) {\n const method = mapping.split(':');\n SecurityRestService.getRolesMapping({\n role: role,\n method: method[1],\n mapping: method[0]\n });\n };\n\n const loadRoles = function () {\n SecurityRestService.getRoles()\n .success(function (data) {\n $scope.roleMappings = data;\n $scope.roles = _.keys($scope.roleMappings);\n $scope.mappings = _.keys($scope.roleMappings[$scope.roles[0]]);\n const permissionsCount = _.map($scope.roles, function (role) {\n return [role, _.filter($scope.roleMappings[role]).length];\n });\n $scope.roles = _.reverse(_.map(_.orderBy(permissionsCount, function (p) {\n return p[1];\n }), function (p) {\n return p[0];\n }));\n })\n .error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.$on('repositoryIsSet', function () {\n loadRoles();\n });\n}]);\n\nsecurityCtrl.controller('ChangeUserPasswordSettingsCtrl', ['$scope', 'toastr', '$window', '$timeout', '$jwtAuth', '$rootScope', '$controller', 'SecurityRestService', 'ModalService', '$translate', 'LocalStorageAdapter', 'LSKeys', '$q',\n function ($scope, toastr, $window, $timeout, $jwtAuth, $rootScope, $controller, SecurityRestService, ModalService, $translate, LocalStorageAdapter, LSKeys, $q) {\n\n angular.extend(this, $controller('CommonUserCtrl', {$scope: $scope, passwordPlaceholder: 'security.new.password'}));\n\n $scope.mode = 'settings';\n $scope.hasEditRestrictions = function () {\n return true;\n };\n $scope.saveButtonText = $translate.instant('common.save.btn');\n $scope.goBack = function () {\n const timer = $timeout(function () {\n $window.history.back();\n }, 100);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n };\n // Wrapped in a scope function for ease of testing\n $scope.getPrincipal = function () {\n return $jwtAuth.getPrincipal()\n .then((principal) => {\n $scope.currentUserData = angular.copy(principal);\n });\n };\n\n $scope.getPrincipal().then(() => {\n $scope.redirectAdmin();\n initUserData($scope);\n });\n\n $scope.showWorkbenchSettings = true;\n\n $scope.updateCurrentUserData = function () {\n // Using $q.when to proper set values in view\n $q.when($jwtAuth.getPrincipal())\n .then((principal) => _.assign(principal, $scope.userData));\n };\n\n //call it as a function so I can make test on it\n $scope.redirectAdmin = function () {\n if (!$scope.currentUserData) {\n $rootScope.redirectToLogin();\n }\n };\n\n $scope.pageTitle = $translate.instant('view.settings.title');\n $scope.passwordPlaceholder = $translate.instant('security.new.password');\n $scope.grantedAuthorities = {\n [READ_REPO]: {},\n [WRITE_REPO]: {}\n };\n\n const initUserData = function (scope) {\n // Copy needed so that Cancel would work correctly, need to call updateCurrentUserData on OK\n scope.userData = angular.copy(scope.currentUserData);\n scope.user = {username: scope.userData.username};\n scope.user.password = '';\n scope.user.confirmpassword = '';\n scope.user.external = scope.userData.external;\n scope.user.appSettings = scope.userData.appSettings;\n // For backward compatibility\n if (scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] === undefined) {\n scope.user.appSettings['DEFAULT_VIS_GRAPH_SCHEMA'] = true;\n }\n\n const pa = parseAuthorities(scope.userData.authorities);\n $scope.userType = pa.userType;\n $scope.grantedAuthorities = pa.grantedAuthorities;\n };\n\n $scope.loader = false;\n\n $scope.submit = function () {\n if ($scope.noPassword && $scope.userType === UserType.ADMIN) {\n ModalService.openSimpleModal({\n title: $translate.instant('security.save.admin.settings'),\n message: $translate.instant('security.admin.pass.unset'),\n warning: true\n }).result.then(function () {\n $scope.updateUser();\n });\n } else {\n $scope.updateUser();\n }\n };\n\n $scope.updateUserHttp = function () {\n $scope.loader = true;\n SecurityRestService.updateUserData({\n username: $scope.user.username,\n pass: ($scope.noPassword) ? '' : $scope.user.password || undefined,\n appSettings: $scope.user.appSettings\n }).success(function () {\n $scope.updateCurrentUserData();\n toastr.success($translate.instant('security.user.updated', {name: $scope.user.username}));\n const timer = $timeout(function () {\n $scope.loader = false;\n $window.history.back();\n }, 2000);\n LocalStorageAdapter.set(LSKeys.WORKBENCH_SETTINGS, $scope.workbenchSettings);\n $scope.$on('$destroy', function () {\n $timeout.cancel(timer);\n });\n }).error(function (data) {\n const msg = getError(data);\n $scope.loader = false;\n toastr.error(msg, $translate.instant('common.error'));\n });\n };\n\n $scope.updateUser = function () {\n if (!$scope.validateForm()) {\n return false;\n }\n\n $scope.updateUserHttp();\n };\n\n $scope.validateForm = function () {\n return $scope.validatePassword();\n };\n\n $scope.setWorkbenchTheme = function () {\n const rootElement = document.querySelector(':root');\n if ($scope.workbenchSettings.theme === 'dark') {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.remove(\"dark\");\n }\n };\n\n $scope.workbenchSettings = LocalStorageAdapter.get(LSKeys.WORKBENCH_SETTINGS);\n if (!$scope.workbenchSettings) {\n $scope.workbenchSettings = {\n theme: 'light'\n };\n }\n $scope.setWorkbenchTheme();\n\n $scope.$on(\"$destroy\", function () {\n const workbenchSettings = LocalStorageAdapter.get(LSKeys.WORKBENCH_SETTINGS);\n const rootElement = document.querySelector(':root');\n if (workbenchSettings && workbenchSettings.theme === 'dark') {\n rootElement.classList.add(\"dark\");\n } else {\n rootElement.classList.remove(\"dark\");\n }\n });\n }]);\n\nsecurityCtrl.controller('DeleteUserCtrl', ['$scope', '$modalInstance', 'username', function ($scope, $modalInstance, username) {\n $scope.username = username;\n\n $scope.ok = function () {\n $modalInstance.close();\n };\n\n $scope.cancel = function () {\n $modalInstance.dismiss('cancel');\n };\n}]);\n"],"sourceRoot":""}
|