Commit 39b8e96f authored by Christophe Maudoux's avatar Christophe Maudoux

Improve Manager messages display

parent 54114a4a
Pipeline #3831 passed with stages
in 10 minutes and 44 seconds
......@@ -232,13 +232,18 @@ sub newConf {
# "message" fields: note that words enclosed by "__" (__word__) will be
# translated
$res->{message} = $parser->{message};
foreach my $t (qw(errors warnings changes)) {
$res->{details}->{ '__' . $t . '__' } = $parser->$t
if ( @{ $parser->$t } );
$res->{details}->{'__errors__'} = $parser->{errors}
if ( @{ $parser->{errors} } );
unless ( @{ $parser->{errors} } ) {
$res->{details}->{'__needConfirmation__'}
= $parser->{needConfirmation}
if ( @{ $parser->{needConfirmation} } && !$req->params('force') );
$res->{message} = $parser->{message};
foreach my $t (qw(warnings changes)) {
$res->{details}->{ '__' . $t . '__' } = $parser->$t
if ( @{ $parser->$t } );
}
}
$res->{details}->{'__needConfirmation__'} = $parser->{needConfirmation}
if ( @{ $parser->{needConfirmation} } && !$req->params('force') );
if ( $res->{result} ) {
if ( $self->{demoMode} ) {
$res->{message} = '__demoModeOn__';
......
......@@ -148,9 +148,14 @@ llapp.controller 'TreeCtrl', [
$scope.message.message = data.message if data.message
if data.details
for m of data.details when m != '__changes__'
$scope.message.items.push
message: m
items: data.details[m]
if m == '__needConfirmation__'
$scope.message.items.unshift
message: m
items: data.details[m]
else
$scope.message.items.push
message: m
items: data.details[m]
$scope.waiting = false
if data.result == 1
# Force reloading page
......
......@@ -179,10 +179,17 @@ This file contains:
if (data.details) {
for (m in data.details) {
if (m !== '__changes__') {
$scope.message.items.push({
message: m,
items: data.details[m]
});
if (m === '__needConfirmation__') {
$scope.message.items.unshift({
message: m,
items: data.details[m]
});
} else {
$scope.message.items.push({
message: m,
items: data.details[m]
});
}
}
}
}
......
(function(){var llapp;llapp=angular.module("llngManager",["ui.tree","ui.bootstrap","llApp","ngCookies"]);llapp.controller("TreeCtrl",["$scope","$http","$location","$q","$uibModal","$translator","$cookies","$htmlParams",function($scope,$http,$location,$q,$uibModal,$translator,$cookies,$htmlParams){var _checkSaveResponse,_download,_getAll,_stoggle,c,id,pathEvent,readError,setDefault,setHelp;$scope.links=window.links;$scope.menu=$htmlParams.menu;$scope.menulinks=window.menulinks;$scope.staticPrefix=window.staticPrefix;$scope.formPrefix=window.formPrefix;$scope.availableLanguages=window.availableLanguages;$scope.waiting=true;$scope.showM=false;$scope.showT=false;$scope.form="home";$scope.currentCfg={};$scope.confPrefix=window.confPrefix;$scope.message={};$scope.result="";$scope.translateTitle=function(node){return $translator.translateField(node,"title")};$scope.translateP=$translator.translateP;$scope.translate=$translator.translate;$scope.helpUrl="start.html#configuration";$scope.setShowHelp=function(val){var d;if(val==null){val=!$scope.showH}$scope.showH=val;d=new Date(Date.now());d.setFullYear(d.getFullYear()+1);return $cookies.put("showhelp",val?"true":"false",{expires:d})};$scope.showH=$cookies.get("showhelp")==="false"?false:true;if($scope.showH==null){$scope.setShowHelp(true)}readError=function(response){var e,j;e=response.status;j=response.statusLine;$scope.waiting=false;if(e===403){$scope.message={title:"forbidden",message:"",items:[]}}else if(e===401){console.log("Authentication needed");$scope.message={title:"authenticationNeeded",message:"__waitOrF5__",items:[]}}else if(e===400){$scope.message={title:"badRequest",message:j,items:[]}}else if(e>0){$scope.message={title:"badRequest",message:j,items:[]}}else{$scope.message={title:"networkProblem",message:"",items:[]}}return $scope.showModal("message.html")};$scope.showModal=function(tpl,init){var d,modalInstance;modalInstance=$uibModal.open({templateUrl:tpl,controller:"ModalInstanceCtrl",size:"lg",resolve:{elem:function(){return function(s){return $scope[s]}},set:function(){return function(f,s){return $scope[f]=s}},init:function(){return init}}});d=$q.defer();modalInstance.result.then(function(msgok){$scope.message={title:"",message:"",items:[]};return d.resolve(msgok)},function(msgnok){$scope.message={title:"",message:"",items:[]};return d.reject(msgnok)});return d.promise};$scope.menuClick=function(button){if(button.popup){window.open(button.popup)}else{if(!button.action){button.action=button.title}switch(typeof button.action){case"function":button.action($scope.currentNode,$scope);break;case"string":$scope[button.action]();break;default:console.log(typeof button.action)}}return $scope.showM=false};$scope.home=function(){$scope.form="home";return $scope.showM=false};_checkSaveResponse=function(data){var m;$scope.message={title:"",message:"",items:[]};if(data.needConfirm){$scope.confirmNeeded=true}if(data.message){$scope.message.message=data.message}if(data.details){for(m in data.details){if(m!=="__changes__"){$scope.message.items.push({message:m,items:data.details[m]})}}}$scope.waiting=false;if(data.result===1){$location.path("/confs/");$scope.message.title="successfullySaved"}else{$scope.message.title="saveReport"}return $scope.showModal("message.html")};$scope.downloadConf=function(){return window.open($scope.confPrefix+$scope.currentCfg.cfgNum+"?full=1")};$scope.save=function(){$scope.showModal("save.html").then(function(){$scope.waiting=true;$scope.data.push({id:"cfgLog",title:"cfgLog",data:$scope.result?$scope.result:""});return $http.post(window.confPrefix+"?cfgNum="+$scope.currentCfg.cfgNum+($scope.forceSave?"&force=1":""),$scope.data).then(function(response){$scope.data.pop();return _checkSaveResponse(response.data)},function(response){readError(response);return $scope.data.pop()})},function(){return console.log("Saving canceled")});return $scope.showM=false};$scope.saveRawConf=function($fileContent){$scope.waiting=true;return $http.post(window.confPrefix+"/raw",$fileContent).then(function(response){return _checkSaveResponse(response.data)},readError)};$scope.restore=function(){$scope.currentNode=null;return $scope.form="restore"};$scope.cancel=function(){$scope.currentNode.data=null;return $scope.getKey($scope.currentNode)};id=1;$scope._findContainer=function(){return $scope._findScopeContainer().$modelValue};$scope._findScopeContainer=function(){var cs;cs=$scope.currentScope;while(!cs.$modelValue.type.match(/Container$/)){cs=cs.$parentNodeScope}return cs};$scope._findScopeByKey=function(k){var cs;cs=$scope.currentScope;while(!(cs.$modelValue.title===k)){cs=cs.$parentNodeScope}return cs};$scope.newGrantRule=function(){var l,n,node;node=$scope._findContainer();l=node.nodes.length;n=l>0?l-1:0;return node.nodes.push({id:node.id+"/n"+id++,title:"New rule",re:"Message",comment:"New rule",data:"1",type:"grant"})};$scope.newRule=function(){var l,n,node;node=$scope._findContainer();l=node.nodes.length;n=l>0?l-1:0;return node.nodes.splice(n,0,{id:node.id+"/n"+id++,title:"New rule",re:"^/new",comment:"New rule",data:"accept",type:"rule"})};$scope.newPost=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"/absolute/path/to/form",data:{},type:"post"})};$scope.newPostVar=function(){if($scope.currentNode.data.vars==null){$scope.currentNode.data.vars=[]}return $scope.currentNode.data.vars.push(["var1","$uid"])};$scope.newAuthChoice=function(){var node;node=$scope._findContainer();node.nodes.push({id:node.id+"/n"+id++,title:"1_Key",data:["Null","Null","Null"],type:"authChoice"});return $scope.execFilters($scope._findScopeByKey("authParams"))};$scope.newHashEntry=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"new",data:"",type:"keyText"})};$scope.newCat=function(){var cs;cs=$scope.currentScope;if(cs.$modelValue.type==="menuApp"){cs=cs.$parentNodeScope}return cs.$modelValue.nodes.push({id:cs.$modelValue.id+"/n"+id++,title:"New category",type:"menuCat",nodes:[]})};$scope.newApp=function(){var cs;cs=$scope.currentScope;if(cs.$modelValue.type==="menuApp"){cs=cs.$parentNodeScope}return cs.$modelValue.nodes.push({id:cs.$modelValue.id+"/n"+id++,title:"New application",type:"menuApp",data:{description:"New app description",uri:"https://test.example.com/",logo:"network.png",display:"auto"}})};$scope.newCmbMod=function(){var node;node=$scope._findContainer();node.nodes.push({id:node.id+"/n"+id++,title:"new",type:"cmbModule",data:{type:"LDAP",for:"0",over:[]}});return $scope.execFilters($scope._findScopeByKey("authParams"))};$scope.newCmbOver=function(){var d;d=$scope.currentNode.data;if(!d.over){d.over=[]}return d.over.push(["new"+id++,""])};$scope.newChoiceOver=function(){var d;d=$scope.currentNode.data;console.log("data",d);if(!d[5]){d[5]=[]}return d[5].push(["new"+id++,""])};$scope.addHost=function(){var cn;cn=$scope.currentNode;if(!cn.data){cn.data=[]}return cn.data.push({k:"newHost",h:[{k:"key",v:"uid"}]})};$scope.addSamlAttribute=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"new",type:"samlAttribute",data:[0,"New","",""]})};$scope.addVhost=function(){var name;name=$scope.domain?"."+$scope.domain.data:".example.com";$scope.message={title:"virtualHostName",field:"hostname"};return $scope.showModal("prompt.html",name).then(function(){var n;n=$scope.result;if(n){return $scope.addTemplateNode(n,"virtualHost")}})};$scope.duplicateVhost=function(){var name;name=$scope.domain?"."+$scope.domain.data:".example.com";$scope.message={title:"virtualHostName",field:"hostname"};return $scope.showModal("prompt.html",name).then(function(){var n;n=$scope.result;return $scope.duplicateNode(n,"virtualHost",$scope.currentNode.title)})};$scope.addSamlIDP=function(){return $scope.newTemplateNode("samlIDPMetaDataNode","samlPartnerName","idp-example")};$scope.addSamlSP=function(){return $scope.newTemplateNode("samlSPMetaDataNode","samlPartnerName","sp-example")};$scope.addOidcOp=function(){return $scope.newTemplateNode("oidcOPMetaDataNode","oidcOPName","op-example")};$scope.addOidcRp=function(){return $scope.newTemplateNode("oidcRPMetaDataNode","oidcRPName","rp-example")};$scope.addCasSrv=function(){return $scope.newTemplateNode("casSrvMetaDataNode","casPartnerName","srv-example")};$scope.addCasApp=function(){return $scope.newTemplateNode("casAppMetaDataNode","casPartnerName","app-example")};$scope.newTemplateNode=function(type,title,init){$scope.message={title:title,field:"name"};return $scope.showModal("prompt.html",init).then(function(){var name;name=$scope.result;if(name){return $scope.addTemplateNode(name,type)}})};$scope.addTemplateNode=function(name,type){var cs,t;cs=$scope.currentScope;while(cs.$modelValue.title!==type+"s"){cs=cs.$parentNodeScope}t={id:type+"s/new__"+name,title:name,type:type,nodes:templates(type,"new__"+name)};setDefault(t.nodes);cs.$modelValue.nodes.push(t);cs.expand();return t};setDefault=function(node){var len,n,o;for(o=0,len=node.length;o<len;o++){n=node[o];if(n.cnodes&&n["default"]){delete n.cnodes;n._nodes=n["default"]}if(n._nodes){setDefault(n._nodes)}else if(n["default"]||n["default"]===0){n.data=n["default"]}}return node};_getAll=function(node){var d,d2;d=$q.defer();d2=$q.defer();if(node._nodes){_stoggle(node);d.resolve()}else if(node.cnodes){_download(node).then(function(){return d.resolve()})}else if(node.nodes||node.data){d.resolve()}else{$scope.getKey(node).then(function(){return d.resolve()})}d.promise.then(function(){var len,n,o,ref,t;t=[];if(node.nodes){ref=node.nodes;for(o=0,len=ref.length;o<len;o++){n=ref[o];t.push(_getAll(n))}}return $q.all(t).then(function(){return d2.resolve()})});return d2.promise};$scope.duplicateNode=function(name,type,idkey){var cs;cs=$scope.currentScope;return _getAll($scope.currentNode).then(function(){var t;while(cs.$modelValue.title!==type+"s"){cs=cs.$parentNodeScope}t=JSON.parse(JSON.stringify($scope.currentNode).replace(new RegExp(idkey,"g"),"new__"+name));t.id=type+"s/new__"+name;t.title=name;cs.$modelValue.nodes.push(t);return t})};$scope.del=function(a,i){return a.splice(i,1)};$scope.deleteEntry=function(){var p;p=$scope.currentScope.$parentNodeScope;$scope.currentScope.remove();return $scope.displayForm(p)};$scope.down=function(){var i,ind,len,n,o,p,ref,tmp;id=$scope.currentNode.id;p=$scope.currentScope.$parentNodeScope.$modelValue;ind=p.nodes.length;ref=p.nodes;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];if(n.id===id){ind=i}}if(ind<p.nodes.length-1){tmp=p.nodes[ind];p.nodes[ind]=p.nodes[ind+1];p.nodes[ind+1]=tmp}return ind};$scope.up=function(){var i,ind,len,n,o,p,ref,tmp;id=$scope.currentNode.id;p=$scope.currentScope.$parentNodeScope.$modelValue;ind=-1;ref=p.nodes;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];if(n.id===id){ind=i}}if(ind>0){tmp=p.nodes[ind];p.nodes[ind]=p.nodes[ind-1];p.nodes[ind-1]=tmp}return ind};$scope.inSelect=function(value){var len,n,o,ref;ref=$scope.currentNode.select;for(o=0,len=ref.length;o<len;o++){n=ref[o];if(n.k===value){return true}}return false};$scope.changeRuleTitle=function(node){return node.title=node.comment.length>0?node.comment:node.re};$scope.filters={};$scope.execFilters=function(scope){var filter,func,ref;scope=scope?scope:$scope;ref=$scope.filters;for(filter in ref){func=ref[filter];if($scope.filters.hasOwnProperty(filter)){return window.filterFunctions[filter](scope,$q,func)}}return false};$scope.stoggle=function(scope){var node;node=scope.$modelValue;_stoggle(node);return scope.toggle()};_stoggle=function(node){var a,len,len1,len2,n,o,q,r,ref,ref1,ref2;ref=["nodes","nodes_cond"];for(o=0,len=ref.length;o<len;o++){n=ref[o];if(node["_"+n]){node[n]=[];ref1=node["_"+n];for(q=0,len1=ref1.length;q<len1;q++){a=ref1[q];node[n].push(a)}delete node["_"+n]}}if(node._nodes_filter){if(node.nodes){ref2=node.nodes;for(r=0,len2=ref2.length;r<len2;r++){n=ref2[r];n.onChange=$scope.execFilters}}$scope.filters[node._nodes_filter]=node;return $scope.execFilters()}};$scope.toggle=function(scope){return scope.toggle()};$scope.download=function(scope){var node;node=scope.$modelValue;return _download(node)};_download=function(node){var d;d=$q.defer();d.notify("Trying to get datas");$scope.waiting=true;$http.get(""+window.confPrefix+$scope.currentCfg.cfgNum+"/"+node.cnodes).then(function(response){var a,data,len,o;data=response.data;if(!data){d.reject("Empty response from server")}else if(data.error){if(data.error.match(/setDefault$/)){if(node["default"]){node.nodes=node["default"].slice(0)}else{node.nodes=[]}delete node.cnodes;d.resolve("Set data to default value")}else{d.reject("Server return an error: "+data.error)}}else{delete node.cnodes;if(!node.type){node.type="keyTextContainer"}node.nodes=[];for(o=0,len=data.length;o<len;o++){a=data[o];if(a.template){a._nodes=templates(a.template,a.title)}node.nodes.push(a)}d.resolve("OK")}return $scope.waiting=false},function(response){readError(response);return d.reject("")});return d.promise};$scope.openCnode=function(scope){return $scope.download(scope).then(function(){return scope.toggle()})};setHelp=function(scope){while(!scope.$modelValue.help&&scope.$parentNodeScope){scope=scope.$parentNodeScope}return $scope.helpUrl=scope.$modelValue.help||"start.html#configuration"};$scope.displayForm=function(scope){var f,len,n,node,o,ref;node=scope.$modelValue;if(node.cnodes){$scope.download(scope)}if(node._nodes){$scope.stoggle(scope)}$scope.currentNode=node;$scope.currentScope=scope;f=node.type?node.type:"text";if(node.nodes||node._nodes||node.cnodes){$scope.form=f!=="text"?f:"mini"}else{$scope.form=f;$scope.getKey(node)}if(node.type&&node.type==="simpleInputContainer"){ref=node.nodes;for(o=0,len=ref.length;o<len;o++){n=ref[o];$scope.getKey(n)}}$scope.showT=false;return setHelp(scope)};$scope.keyWritable=function(scope){var node;node=scope.$modelValue;if(node.type&&node.type.match(/^(?:(?:saml(?:(?:ID|S)PMetaDataNod|Attribut)|(?:cmbMod|r)ul|authChoic)e|(?:virtualHos|keyTex)t|menu(?:App|Cat))$/)){return true}else{return false}};$scope.newRSAKey=function(){return $scope.showModal("password.html").then(function(){var currentNode,password;$scope.waiting=true;currentNode=$scope.currentNode;password=$scope.result;return $http.post(window.confPrefix+"/newRSAKey",{password:password}).then(function(response){currentNode.data[0].data=response.data["private"];currentNode.data[1].data=password;currentNode.data[2].data=response.data["public"];return $scope.waiting=false},readError)},function(){return console.log("New key cancelled")})};$scope.newRSAKeyNoPassword=function(){var currentNode;$scope.waiting=true;currentNode=$scope.currentNode;return $http.post(window.confPrefix+"/newRSAKey",{password:""}).then(function(response){currentNode.data[0].data=response.data["private"];currentNode.data[1].data=response.data["public"];return $scope.waiting=false},readError)};$scope.getKey=function(node){var d,i,len,n,o,ref,tmp;d=$q.defer();if(!node.data){$scope.waiting=true;if(node.get&&typeof node.get==="object"){node.data=[];tmp=[];ref=node.get;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];node.data[i]={title:n,id:n};tmp.push($scope.getKey(node.data[i]))}$q.all(tmp).then(function(){return d.resolve(node.data)},function(response){d.reject(response.statusLine);return $scope.waiting=false})}else{$http.get(""+window.confPrefix+$scope.currentCfg.cfgNum+"/"+(node.get?node.get:node.title)).then(function(response){var data;data=response.data;if((data.value===null||data.error&&data.error.match(/setDefault$/))&&node["default"]!==null){node.data=node["default"]}else{node.data=data.value}if(node.type&&node.type.match(/^(bool|trool|boolOrExpr)$/)){node.data=node.data.toString()}else if(node.type&&node.type.match(/^int$/)){node.data=parseInt(node.data,10)}else if(node.type&&node.type.match(/^(saml(Service|Assertion)|blackWhiteList)$/)&&!(typeof node.data==="object")){node.data=node.data.split(";")}$scope.waiting=false;return d.resolve(node.data)},function(response){readError(response);return d.reject(response.status)})}}else{d.resolve(node.data)}return d.promise};pathEvent=function(event,next,current){var n;n=next.match(new RegExp("#!?/confs/(latest|[0-9]+)"));if(n===null){return $location.path("/confs/latest")}else{console.log("Trying to get cfg number "+n[1]);return $scope.getCfg(n[1])}};$scope.$on("$locationChangeSuccess",pathEvent);$scope.getCfg=function(n){if($scope.currentCfg.cfgNum!==n){return $http.get(""+window.confPrefix+n).then(function(response){var d;$scope.currentCfg=response.data;d=new Date($scope.currentCfg.cfgDate*1e3);$scope.currentCfg.date=d.toLocaleString();console.log("Metadatas of cfg "+n+" loaded");$location.path("/confs/"+n);return $scope.init()},function(response){return readError(response).then(function(){$scope.currentCfg.cfgNum=0;return $scope.init()})})}else{return $scope.waiting=false}};$scope.getLanguage=function(lang){$scope.lang=lang;$scope.form="white";$scope.init();return $scope.showM=false};$scope.init=function(){var tmp;tmp=null;$scope.waiting=true;$scope.data=[];$scope.confirmNeeded=false;$scope.forceSave=false;$q.all([$translator.init($scope.lang),$http.get(window.staticPrefix+"struct.json").then(function(response){tmp=response.data;return console.log("Structure loaded")})]).then(function(){console.log("Starting structure binding");$scope.data=tmp;tmp=null;if($scope.currentCfg.cfgNum!==0){setScopeVars($scope)}else{$scope.message={title:"emptyConf",message:"__zeroConfExplanations__"};$scope.showModal("message.html")}$scope.form="home";return $scope.waiting=false},readError);$scope.activeModule="conf";return $scope.myStyle={color:"#ffb84d"}};c=$location.path().match(new RegExp("^/confs/(latest|[0-9]+)"));if(!c){console.log("Redirecting to /confs/latest");$location.path("/confs/latest")}$scope.replaceContentByUrl=function(node,url){$scope.waiting=true;return $http.post(window.scriptname+"prx",{url:url}).then(function(response){node.data=response.data.content;return $scope.waiting=false},readError)};$scope.replaceContent=function(node,$fileContent){return node.data=$fileContent};$scope.saveAs=function(content,type,filename){return saveAs(new Blob([content],{type:type}),filename)};$scope.saveAsPem=function(cs,scope){return scope.saveAs(cs.data[0].data+"\n"+cs.data[2].data,"application/x-pem-file",cs.title+".pem")};return $scope.saveAsText=function(cs,scope){return scope.saveAs(cs.data,"text/plain",cs.title+".txt")}}])}).call(this);
(function(){var llapp;llapp=angular.module("llngManager",["ui.tree","ui.bootstrap","llApp","ngCookies"]);llapp.controller("TreeCtrl",["$scope","$http","$location","$q","$uibModal","$translator","$cookies","$htmlParams",function($scope,$http,$location,$q,$uibModal,$translator,$cookies,$htmlParams){var _checkSaveResponse,_download,_getAll,_stoggle,c,id,pathEvent,readError,setDefault,setHelp;$scope.links=window.links;$scope.menu=$htmlParams.menu;$scope.menulinks=window.menulinks;$scope.staticPrefix=window.staticPrefix;$scope.formPrefix=window.formPrefix;$scope.availableLanguages=window.availableLanguages;$scope.waiting=true;$scope.showM=false;$scope.showT=false;$scope.form="home";$scope.currentCfg={};$scope.confPrefix=window.confPrefix;$scope.message={};$scope.result="";$scope.translateTitle=function(node){return $translator.translateField(node,"title")};$scope.translateP=$translator.translateP;$scope.translate=$translator.translate;$scope.helpUrl="start.html#configuration";$scope.setShowHelp=function(val){var d;if(val==null){val=!$scope.showH}$scope.showH=val;d=new Date(Date.now());d.setFullYear(d.getFullYear()+1);return $cookies.put("showhelp",val?"true":"false",{expires:d})};$scope.showH=$cookies.get("showhelp")==="false"?false:true;if($scope.showH==null){$scope.setShowHelp(true)}readError=function(response){var e,j;e=response.status;j=response.statusLine;$scope.waiting=false;if(e===403){$scope.message={title:"forbidden",message:"",items:[]}}else if(e===401){console.log("Authentication needed");$scope.message={title:"authenticationNeeded",message:"__waitOrF5__",items:[]}}else if(e===400){$scope.message={title:"badRequest",message:j,items:[]}}else if(e>0){$scope.message={title:"badRequest",message:j,items:[]}}else{$scope.message={title:"networkProblem",message:"",items:[]}}return $scope.showModal("message.html")};$scope.showModal=function(tpl,init){var d,modalInstance;modalInstance=$uibModal.open({templateUrl:tpl,controller:"ModalInstanceCtrl",size:"lg",resolve:{elem:function(){return function(s){return $scope[s]}},set:function(){return function(f,s){return $scope[f]=s}},init:function(){return init}}});d=$q.defer();modalInstance.result.then(function(msgok){$scope.message={title:"",message:"",items:[]};return d.resolve(msgok)},function(msgnok){$scope.message={title:"",message:"",items:[]};return d.reject(msgnok)});return d.promise};$scope.menuClick=function(button){if(button.popup){window.open(button.popup)}else{if(!button.action){button.action=button.title}switch(typeof button.action){case"function":button.action($scope.currentNode,$scope);break;case"string":$scope[button.action]();break;default:console.log(typeof button.action)}}return $scope.showM=false};$scope.home=function(){$scope.form="home";return $scope.showM=false};_checkSaveResponse=function(data){var m;$scope.message={title:"",message:"",items:[]};if(data.needConfirm){$scope.confirmNeeded=true}if(data.message){$scope.message.message=data.message}if(data.details){for(m in data.details){if(m!=="__changes__"){if(m==="__needConfirmation__"){$scope.message.items.unshift({message:m,items:data.details[m]})}else{$scope.message.items.push({message:m,items:data.details[m]})}}}}$scope.waiting=false;if(data.result===1){$location.path("/confs/");$scope.message.title="successfullySaved"}else{$scope.message.title="saveReport"}return $scope.showModal("message.html")};$scope.downloadConf=function(){return window.open($scope.confPrefix+$scope.currentCfg.cfgNum+"?full=1")};$scope.save=function(){$scope.showModal("save.html").then(function(){$scope.waiting=true;$scope.data.push({id:"cfgLog",title:"cfgLog",data:$scope.result?$scope.result:""});return $http.post(window.confPrefix+"?cfgNum="+$scope.currentCfg.cfgNum+($scope.forceSave?"&force=1":""),$scope.data).then(function(response){$scope.data.pop();return _checkSaveResponse(response.data)},function(response){readError(response);return $scope.data.pop()})},function(){return console.log("Saving canceled")});return $scope.showM=false};$scope.saveRawConf=function($fileContent){$scope.waiting=true;return $http.post(window.confPrefix+"/raw",$fileContent).then(function(response){return _checkSaveResponse(response.data)},readError)};$scope.restore=function(){$scope.currentNode=null;return $scope.form="restore"};$scope.cancel=function(){$scope.currentNode.data=null;return $scope.getKey($scope.currentNode)};id=1;$scope._findContainer=function(){return $scope._findScopeContainer().$modelValue};$scope._findScopeContainer=function(){var cs;cs=$scope.currentScope;while(!cs.$modelValue.type.match(/Container$/)){cs=cs.$parentNodeScope}return cs};$scope._findScopeByKey=function(k){var cs;cs=$scope.currentScope;while(!(cs.$modelValue.title===k)){cs=cs.$parentNodeScope}return cs};$scope.newGrantRule=function(){var l,n,node;node=$scope._findContainer();l=node.nodes.length;n=l>0?l-1:0;return node.nodes.push({id:node.id+"/n"+id++,title:"New rule",re:"Message",comment:"New rule",data:"1",type:"grant"})};$scope.newRule=function(){var l,n,node;node=$scope._findContainer();l=node.nodes.length;n=l>0?l-1:0;return node.nodes.splice(n,0,{id:node.id+"/n"+id++,title:"New rule",re:"^/new",comment:"New rule",data:"accept",type:"rule"})};$scope.newPost=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"/absolute/path/to/form",data:{},type:"post"})};$scope.newPostVar=function(){if($scope.currentNode.data.vars==null){$scope.currentNode.data.vars=[]}return $scope.currentNode.data.vars.push(["var1","$uid"])};$scope.newAuthChoice=function(){var node;node=$scope._findContainer();node.nodes.push({id:node.id+"/n"+id++,title:"1_Key",data:["Null","Null","Null"],type:"authChoice"});return $scope.execFilters($scope._findScopeByKey("authParams"))};$scope.newHashEntry=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"new",data:"",type:"keyText"})};$scope.newCat=function(){var cs;cs=$scope.currentScope;if(cs.$modelValue.type==="menuApp"){cs=cs.$parentNodeScope}return cs.$modelValue.nodes.push({id:cs.$modelValue.id+"/n"+id++,title:"New category",type:"menuCat",nodes:[]})};$scope.newApp=function(){var cs;cs=$scope.currentScope;if(cs.$modelValue.type==="menuApp"){cs=cs.$parentNodeScope}return cs.$modelValue.nodes.push({id:cs.$modelValue.id+"/n"+id++,title:"New application",type:"menuApp",data:{description:"New app description",uri:"https://test.example.com/",logo:"network.png",display:"auto"}})};$scope.newCmbMod=function(){var node;node=$scope._findContainer();node.nodes.push({id:node.id+"/n"+id++,title:"new",type:"cmbModule",data:{type:"LDAP",for:"0",over:[]}});return $scope.execFilters($scope._findScopeByKey("authParams"))};$scope.newCmbOver=function(){var d;d=$scope.currentNode.data;if(!d.over){d.over=[]}return d.over.push(["new"+id++,""])};$scope.newChoiceOver=function(){var d;d=$scope.currentNode.data;console.log("data",d);if(!d[5]){d[5]=[]}return d[5].push(["new"+id++,""])};$scope.addHost=function(){var cn;cn=$scope.currentNode;if(!cn.data){cn.data=[]}return cn.data.push({k:"newHost",h:[{k:"key",v:"uid"}]})};$scope.addSamlAttribute=function(){var node;node=$scope._findContainer();return node.nodes.push({id:node.id+"/n"+id++,title:"new",type:"samlAttribute",data:[0,"New","",""]})};$scope.addVhost=function(){var name;name=$scope.domain?"."+$scope.domain.data:".example.com";$scope.message={title:"virtualHostName",field:"hostname"};return $scope.showModal("prompt.html",name).then(function(){var n;n=$scope.result;if(n){return $scope.addTemplateNode(n,"virtualHost")}})};$scope.duplicateVhost=function(){var name;name=$scope.domain?"."+$scope.domain.data:".example.com";$scope.message={title:"virtualHostName",field:"hostname"};return $scope.showModal("prompt.html",name).then(function(){var n;n=$scope.result;return $scope.duplicateNode(n,"virtualHost",$scope.currentNode.title)})};$scope.addSamlIDP=function(){return $scope.newTemplateNode("samlIDPMetaDataNode","samlPartnerName","idp-example")};$scope.addSamlSP=function(){return $scope.newTemplateNode("samlSPMetaDataNode","samlPartnerName","sp-example")};$scope.addOidcOp=function(){return $scope.newTemplateNode("oidcOPMetaDataNode","oidcOPName","op-example")};$scope.addOidcRp=function(){return $scope.newTemplateNode("oidcRPMetaDataNode","oidcRPName","rp-example")};$scope.addCasSrv=function(){return $scope.newTemplateNode("casSrvMetaDataNode","casPartnerName","srv-example")};$scope.addCasApp=function(){return $scope.newTemplateNode("casAppMetaDataNode","casPartnerName","app-example")};$scope.newTemplateNode=function(type,title,init){$scope.message={title:title,field:"name"};return $scope.showModal("prompt.html",init).then(function(){var name;name=$scope.result;if(name){return $scope.addTemplateNode(name,type)}})};$scope.addTemplateNode=function(name,type){var cs,t;cs=$scope.currentScope;while(cs.$modelValue.title!==type+"s"){cs=cs.$parentNodeScope}t={id:type+"s/new__"+name,title:name,type:type,nodes:templates(type,"new__"+name)};setDefault(t.nodes);cs.$modelValue.nodes.push(t);cs.expand();return t};setDefault=function(node){var len,n,o;for(o=0,len=node.length;o<len;o++){n=node[o];if(n.cnodes&&n["default"]){delete n.cnodes;n._nodes=n["default"]}if(n._nodes){setDefault(n._nodes)}else if(n["default"]||n["default"]===0){n.data=n["default"]}}return node};_getAll=function(node){var d,d2;d=$q.defer();d2=$q.defer();if(node._nodes){_stoggle(node);d.resolve()}else if(node.cnodes){_download(node).then(function(){return d.resolve()})}else if(node.nodes||node.data){d.resolve()}else{$scope.getKey(node).then(function(){return d.resolve()})}d.promise.then(function(){var len,n,o,ref,t;t=[];if(node.nodes){ref=node.nodes;for(o=0,len=ref.length;o<len;o++){n=ref[o];t.push(_getAll(n))}}return $q.all(t).then(function(){return d2.resolve()})});return d2.promise};$scope.duplicateNode=function(name,type,idkey){var cs;cs=$scope.currentScope;return _getAll($scope.currentNode).then(function(){var t;while(cs.$modelValue.title!==type+"s"){cs=cs.$parentNodeScope}t=JSON.parse(JSON.stringify($scope.currentNode).replace(new RegExp(idkey,"g"),"new__"+name));t.id=type+"s/new__"+name;t.title=name;cs.$modelValue.nodes.push(t);return t})};$scope.del=function(a,i){return a.splice(i,1)};$scope.deleteEntry=function(){var p;p=$scope.currentScope.$parentNodeScope;$scope.currentScope.remove();return $scope.displayForm(p)};$scope.down=function(){var i,ind,len,n,o,p,ref,tmp;id=$scope.currentNode.id;p=$scope.currentScope.$parentNodeScope.$modelValue;ind=p.nodes.length;ref=p.nodes;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];if(n.id===id){ind=i}}if(ind<p.nodes.length-1){tmp=p.nodes[ind];p.nodes[ind]=p.nodes[ind+1];p.nodes[ind+1]=tmp}return ind};$scope.up=function(){var i,ind,len,n,o,p,ref,tmp;id=$scope.currentNode.id;p=$scope.currentScope.$parentNodeScope.$modelValue;ind=-1;ref=p.nodes;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];if(n.id===id){ind=i}}if(ind>0){tmp=p.nodes[ind];p.nodes[ind]=p.nodes[ind-1];p.nodes[ind-1]=tmp}return ind};$scope.inSelect=function(value){var len,n,o,ref;ref=$scope.currentNode.select;for(o=0,len=ref.length;o<len;o++){n=ref[o];if(n.k===value){return true}}return false};$scope.changeRuleTitle=function(node){return node.title=node.comment.length>0?node.comment:node.re};$scope.filters={};$scope.execFilters=function(scope){var filter,func,ref;scope=scope?scope:$scope;ref=$scope.filters;for(filter in ref){func=ref[filter];if($scope.filters.hasOwnProperty(filter)){return window.filterFunctions[filter](scope,$q,func)}}return false};$scope.stoggle=function(scope){var node;node=scope.$modelValue;_stoggle(node);return scope.toggle()};_stoggle=function(node){var a,len,len1,len2,n,o,q,r,ref,ref1,ref2;ref=["nodes","nodes_cond"];for(o=0,len=ref.length;o<len;o++){n=ref[o];if(node["_"+n]){node[n]=[];ref1=node["_"+n];for(q=0,len1=ref1.length;q<len1;q++){a=ref1[q];node[n].push(a)}delete node["_"+n]}}if(node._nodes_filter){if(node.nodes){ref2=node.nodes;for(r=0,len2=ref2.length;r<len2;r++){n=ref2[r];n.onChange=$scope.execFilters}}$scope.filters[node._nodes_filter]=node;return $scope.execFilters()}};$scope.toggle=function(scope){return scope.toggle()};$scope.download=function(scope){var node;node=scope.$modelValue;return _download(node)};_download=function(node){var d;d=$q.defer();d.notify("Trying to get datas");$scope.waiting=true;$http.get(""+window.confPrefix+$scope.currentCfg.cfgNum+"/"+node.cnodes).then(function(response){var a,data,len,o;data=response.data;if(!data){d.reject("Empty response from server")}else if(data.error){if(data.error.match(/setDefault$/)){if(node["default"]){node.nodes=node["default"].slice(0)}else{node.nodes=[]}delete node.cnodes;d.resolve("Set data to default value")}else{d.reject("Server return an error: "+data.error)}}else{delete node.cnodes;if(!node.type){node.type="keyTextContainer"}node.nodes=[];for(o=0,len=data.length;o<len;o++){a=data[o];if(a.template){a._nodes=templates(a.template,a.title)}node.nodes.push(a)}d.resolve("OK")}return $scope.waiting=false},function(response){readError(response);return d.reject("")});return d.promise};$scope.openCnode=function(scope){return $scope.download(scope).then(function(){return scope.toggle()})};setHelp=function(scope){while(!scope.$modelValue.help&&scope.$parentNodeScope){scope=scope.$parentNodeScope}return $scope.helpUrl=scope.$modelValue.help||"start.html#configuration"};$scope.displayForm=function(scope){var f,len,n,node,o,ref;node=scope.$modelValue;if(node.cnodes){$scope.download(scope)}if(node._nodes){$scope.stoggle(scope)}$scope.currentNode=node;$scope.currentScope=scope;f=node.type?node.type:"text";if(node.nodes||node._nodes||node.cnodes){$scope.form=f!=="text"?f:"mini"}else{$scope.form=f;$scope.getKey(node)}if(node.type&&node.type==="simpleInputContainer"){ref=node.nodes;for(o=0,len=ref.length;o<len;o++){n=ref[o];$scope.getKey(n)}}$scope.showT=false;return setHelp(scope)};$scope.keyWritable=function(scope){var node;node=scope.$modelValue;if(node.type&&node.type.match(/^(?:(?:saml(?:(?:ID|S)PMetaDataNod|Attribut)|(?:cmbMod|r)ul|authChoic)e|(?:virtualHos|keyTex)t|menu(?:App|Cat))$/)){return true}else{return false}};$scope.newRSAKey=function(){return $scope.showModal("password.html").then(function(){var currentNode,password;$scope.waiting=true;currentNode=$scope.currentNode;password=$scope.result;return $http.post(window.confPrefix+"/newRSAKey",{password:password}).then(function(response){currentNode.data[0].data=response.data["private"];currentNode.data[1].data=password;currentNode.data[2].data=response.data["public"];return $scope.waiting=false},readError)},function(){return console.log("New key cancelled")})};$scope.newRSAKeyNoPassword=function(){var currentNode;$scope.waiting=true;currentNode=$scope.currentNode;return $http.post(window.confPrefix+"/newRSAKey",{password:""}).then(function(response){currentNode.data[0].data=response.data["private"];currentNode.data[1].data=response.data["public"];return $scope.waiting=false},readError)};$scope.getKey=function(node){var d,i,len,n,o,ref,tmp;d=$q.defer();if(!node.data){$scope.waiting=true;if(node.get&&typeof node.get==="object"){node.data=[];tmp=[];ref=node.get;for(i=o=0,len=ref.length;o<len;i=++o){n=ref[i];node.data[i]={title:n,id:n};tmp.push($scope.getKey(node.data[i]))}$q.all(tmp).then(function(){return d.resolve(node.data)},function(response){d.reject(response.statusLine);return $scope.waiting=false})}else{$http.get(""+window.confPrefix+$scope.currentCfg.cfgNum+"/"+(node.get?node.get:node.title)).then(function(response){var data;data=response.data;if((data.value===null||data.error&&data.error.match(/setDefault$/))&&node["default"]!==null){node.data=node["default"]}else{node.data=data.value}if(node.type&&node.type.match(/^(bool|trool|boolOrExpr)$/)){node.data=node.data.toString()}else if(node.type&&node.type.match(/^int$/)){node.data=parseInt(node.data,10)}else if(node.type&&node.type.match(/^(saml(Service|Assertion)|blackWhiteList)$/)&&!(typeof node.data==="object")){node.data=node.data.split(";")}$scope.waiting=false;return d.resolve(node.data)},function(response){readError(response);return d.reject(response.status)})}}else{d.resolve(node.data)}return d.promise};pathEvent=function(event,next,current){var n;n=next.match(new RegExp("#!?/confs/(latest|[0-9]+)"));if(n===null){return $location.path("/confs/latest")}else{console.log("Trying to get cfg number "+n[1]);return $scope.getCfg(n[1])}};$scope.$on("$locationChangeSuccess",pathEvent);$scope.getCfg=function(n){if($scope.currentCfg.cfgNum!==n){return $http.get(""+window.confPrefix+n).then(function(response){var d;$scope.currentCfg=response.data;d=new Date($scope.currentCfg.cfgDate*1e3);$scope.currentCfg.date=d.toLocaleString();console.log("Metadatas of cfg "+n+" loaded");$location.path("/confs/"+n);return $scope.init()},function(response){return readError(response).then(function(){$scope.currentCfg.cfgNum=0;return $scope.init()})})}else{return $scope.waiting=false}};$scope.getLanguage=function(lang){$scope.lang=lang;$scope.form="white";$scope.init();return $scope.showM=false};$scope.init=function(){var tmp;tmp=null;$scope.waiting=true;$scope.data=[];$scope.confirmNeeded=false;$scope.forceSave=false;$q.all([$translator.init($scope.lang),$http.get(window.staticPrefix+"struct.json").then(function(response){tmp=response.data;return console.log("Structure loaded")})]).then(function(){console.log("Starting structure binding");$scope.data=tmp;tmp=null;if($scope.currentCfg.cfgNum!==0){setScopeVars($scope)}else{$scope.message={title:"emptyConf",message:"__zeroConfExplanations__"};$scope.showModal("message.html")}$scope.form="home";return $scope.waiting=false},readError);$scope.activeModule="conf";return $scope.myStyle={color:"#ffb84d"}};c=$location.path().match(new RegExp("^/confs/(latest|[0-9]+)"));if(!c){console.log("Redirecting to /confs/latest");$location.path("/confs/latest")}$scope.replaceContentByUrl=function(node,url){$scope.waiting=true;return $http.post(window.scriptname+"prx",{url:url}).then(function(response){node.data=response.data.content;return $scope.waiting=false},readError)};$scope.replaceContent=function(node,$fileContent){return node.data=$fileContent};$scope.saveAs=function(content,type,filename){return saveAs(new Blob([content],{type:type}),filename)};$scope.saveAsPem=function(cs,scope){return scope.saveAs(cs.data[0].data+"\n"+cs.data[2].data,"application/x-pem-file",cs.title+".pem")};return $scope.saveAsText=function(cs,scope){return scope.saveAs(cs.data,"text/plain",cs.title+".txt")}}])}).call(this);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment