From c381ae86b6d96e56360c122088a51bbef766c74b Mon Sep 17 00:00:00 2001 From: Christophe Maudoux Date: Sun, 15 Jul 2018 22:08:30 +0200 Subject: [PATCH] WIP - Modify oidcConsents key structure --- .../lib/Lemonldap/NG/Portal/Main/Display.pm | 18 ++++++------ lemonldap-ng-portal/site/coffee/portal.coffee | 28 ++++++++++++------- .../site/htdocs/static/common/js/portal.js | 10 +++---- .../htdocs/static/common/js/portal.min.js | 2 +- .../site/templates/bootstrap/oidcConsents.tpl | 2 +- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm index 138a02ea8..e249dc417 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Display.pm @@ -544,14 +544,14 @@ sub mkOidcConsent { ##################### foreach (@$_consents) { - if ( defined $_->{rp} ){ - my $rp = $_->{rp}; - $self->logger->debug("RP $rp Consent found"); - $consents->{$rp}->{epoch} = $_->{epoch}; - $consents->{$rp}->{scope} = $_->{scope}; - $consents->{$rp}->{displayName} = - $self->conf->{oidcRPMetaDataOptions}->{$rp}->{oidcRPMetaDataOptionsDisplayName}; - } + if ( defined $_->{rp} ) { + my $rp = $_->{rp}; + $self->logger->debug("RP { $rp } Consent found"); + $consents->{$rp}->{epoch} = $_->{epoch}; + $consents->{$rp}->{scope} = $_->{scope}; + $consents->{$rp}->{displayName} = + $self->conf->{oidcRPMetaDataOptions}->{$rp}->{oidcRPMetaDataOptionsDisplayName}; + } } #foreach ( keys %$session ) { @@ -573,7 +573,7 @@ sub mkOidcConsent { map { { name => $_, - time => $consents->{$_}->{epoch}, + epoch => $consents->{$_}->{epoch}, scope => $consents->{$_}->{scope}, displayName => $consents->{$_}->{displayName} } diff --git a/lemonldap-ng-portal/site/coffee/portal.coffee b/lemonldap-ng-portal/site/coffee/portal.coffee index 37802a9ef..27abe7c9b 100644 --- a/lemonldap-ng-portal/site/coffee/portal.coffee +++ b/lemonldap-ng-portal/site/coffee/portal.coffee @@ -54,7 +54,7 @@ getValues = () -> # ---------------------------------------- setSelector = "#appslist" -# Function that writes the list order to session (network errors ignored) +# Function to write the sorted apps list to session (network errors ignored) setOrder = -> setKey '_appsListOrder', $(setSelector).sortable("toArray").join() @@ -71,16 +71,23 @@ removeOidcConsent = (partner) -> # alert "#{s} #{e}" e = (j,s,e) -> alert "#{s} #{e}" - delKey "_oidc_consent_time_#{partner}" + #delKey "_oidc_consent_time_#{partner}" + ## Success + #, () -> + #delKey "_oidc_consent_scope_#{partner}" + ## Success + #, () -> + #$("[partner='#{partner}']").hide() + ## Error + #, e + #, e + delKey "_oidcConsents",partner # Success , () -> - delKey "_oidc_consent_scope_#{partner}" - # Success - , () -> - $("[partner='#{partner}']").hide() - # Error - , e + $("[partner='#{partner}']").hide() + # Error , e + # Function used by setOrder() and removeOidcConsent() to push new values # For security reason, modification is rejected unless a valid token is given @@ -104,7 +111,7 @@ setKey = (key,val,success,error) -> success: success error: error -delKey = (key,success,error) -> +delKey = (key,partner,success,error) -> $.ajax type: "GET" url: datas['scriptname'] + '/mysession/?gettoken' @@ -114,7 +121,8 @@ delKey = (key,success,error) -> success: (data) -> $.ajax type: "DELETE" - url: "#{datas['scriptname']}/mysession/persistent/#{key}?token=#{data.token}" + url: "#{datas['scriptname']}/mysession/persistent/#{key}?option=#{partner}&token=#{data.token}" + #url: "#{datas['scriptname']}/mysession/persistent/#{key}?token=#{data.token}" dataType: 'json' success: success error: error diff --git a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js index cdf84296a..b45f1027d 100644 --- a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js +++ b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.js @@ -79,10 +79,8 @@ LemonLDAP::NG Portal jQuery scripts e = function(j, s, e) { return alert(s + " " + e); }; - return delKey("_oidc_consent_time_" + partner, function() { - return delKey("_oidc_consent_scope_" + partner, function() { - return $("[partner='" + partner + "']").hide(); - }, e); + return delKey("_oidcConsents", partner, function() { + return $("[partner='" + partner + "']").hide(); }, e); }; @@ -110,7 +108,7 @@ LemonLDAP::NG Portal jQuery scripts }); }; - delKey = function(key, success, error) { + delKey = function(key, partner, success, error) { return $.ajax({ type: "GET", url: datas['scriptname'] + '/mysession/?gettoken', @@ -119,7 +117,7 @@ LemonLDAP::NG Portal jQuery scripts success: function(data) { return $.ajax({ type: "DELETE", - url: datas['scriptname'] + "/mysession/persistent/" + key + "?token=" + data.token, + url: datas['scriptname'] + "/mysession/persistent/" + key + "?option=" + partner + "&token=" + data.token, dataType: 'json', success: success, error: error diff --git a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js index 934f15054..862f96fd1 100644 --- a/lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js +++ b/lemonldap-ng-portal/site/htdocs/static/common/js/portal.min.js @@ -1 +1 @@ -(function(){var datas,delKey,getCookie,getValues,isHiddenFormValueSet,ping,removeOidcConsent,restoreOrder,setCookie,setKey,setOrder,setSelector,translate,translatePage,translationFields,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i div.category",update:function(){return setOrder()}});restoreOrder();$("div.message").fadeIn("slow");$("input[name=timezone]").val(-((new Date).getTimezoneOffset()/60));menuTabs=$("#menu").tabs({active:0});menuIndex=$('#menu a[href="#'+datas["displaytab"]+'"]').parent().index();if(menuIndex<0){menuIndex=0}menuTabs.tabs("option","active",menuIndex);authMenuTabs=$("#authMenu").tabs({active:0});if(datas["choicetab"]){authMenuTabs.tabs("option","active",$('#authMenu a[href="#'+datas["choicetab"]+'"]').parent().index())}if(datas["login"]){$("input[type=password]:first").focus()}else{$("input[type!=hidden]:first").focus()}if(datas["newwindow"]){$("#appslist a").attr("target","_blank")}if($("p.removeOther").length){action=$("form.login").attr("action");method=$("form.login").attr("method");back_url="";if(action.indexOf("?")!==-1){action.substring(0,action.indexOf("?"))+"?"}else{back_url=action+"?"}$("form.login input[type=hidden]").each(function(index){return back_url+="&"+$(this).attr("name")+"="+$(this).val()});link=$("p.removeOther a").attr("href")+"&method="+method+"&url="+btoa(back_url);$("p.removeOther a").attr("href",link)}lang=getCookie("llnglanguage");if(!lang){if(navigator){langs=[];langs2=[];nlangs=[navigator.language];if(navigator.languages){nlangs=navigator.languages}ref=window.availableLanguages;for(i=0,len=ref.length;i ';for(l=0,len1=nlangs.length;l '}$("#languages").html(langdiv);$(".langicon").on("click",function(){lang=$(this).attr("title");setCookie("llnglanguage",lang);return translatePage(lang)});if(datas["pingInterval"]&&datas["pingInterval"]>0){window.setTimeout(ping,datas["pingInterval"])}$(".localeDate").each(function(){var s;s=new Date($(this).attr("val")*1e3);return $(this).text(s.toLocaleString())});return $(".oidcConsent").on("click",function(){return removeOidcConsent($(this).attr("partner"))})})}).call(this); +(function(){var datas,delKey,getCookie,getValues,isHiddenFormValueSet,ping,removeOidcConsent,restoreOrder,setCookie,setKey,setOrder,setSelector,translate,translatePage,translationFields,indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i div.category",update:function(){return setOrder()}});restoreOrder();$("div.message").fadeIn("slow");$("input[name=timezone]").val(-((new Date).getTimezoneOffset()/60));menuTabs=$("#menu").tabs({active:0});menuIndex=$('#menu a[href="#'+datas["displaytab"]+'"]').parent().index();if(menuIndex<0){menuIndex=0}menuTabs.tabs("option","active",menuIndex);authMenuTabs=$("#authMenu").tabs({active:0});if(datas["choicetab"]){authMenuTabs.tabs("option","active",$('#authMenu a[href="#'+datas["choicetab"]+'"]').parent().index())}if(datas["login"]){$("input[type=password]:first").focus()}else{$("input[type!=hidden]:first").focus()}if(datas["newwindow"]){$("#appslist a").attr("target","_blank")}if($("p.removeOther").length){action=$("form.login").attr("action");method=$("form.login").attr("method");back_url="";if(action.indexOf("?")!==-1){action.substring(0,action.indexOf("?"))+"?"}else{back_url=action+"?"}$("form.login input[type=hidden]").each(function(index){return back_url+="&"+$(this).attr("name")+"="+$(this).val()});link=$("p.removeOther a").attr("href")+"&method="+method+"&url="+btoa(back_url);$("p.removeOther a").attr("href",link)}lang=getCookie("llnglanguage");if(!lang){if(navigator){langs=[];langs2=[];nlangs=[navigator.language];if(navigator.languages){nlangs=navigator.languages}ref=window.availableLanguages;for(i=0,len=ref.length;i ';for(l=0,len1=nlangs.length;l '}$("#languages").html(langdiv);$(".langicon").on("click",function(){lang=$(this).attr("title");setCookie("llnglanguage",lang);return translatePage(lang)});if(datas["pingInterval"]&&datas["pingInterval"]>0){window.setTimeout(ping,datas["pingInterval"])}$(".localeDate").each(function(){var s;s=new Date($(this).attr("val")*1e3);return $(this).text(s.toLocaleString())});return $(".oidcConsent").on("click",function(){return removeOidcConsent($(this).attr("partner"))})})}).call(this); diff --git a/lemonldap-ng-portal/site/templates/bootstrap/oidcConsents.tpl b/lemonldap-ng-portal/site/templates/bootstrap/oidcConsents.tpl index 9304cceb4..cd0912768 100644 --- a/lemonldap-ng-portal/site/templates/bootstrap/oidcConsents.tpl +++ b/lemonldap-ng-portal/site/templates/bootstrap/oidcConsents.tpl @@ -11,7 +11,7 @@ "> - "> + "> " title="delete" class="oidcConsent link nodecor text-danger glyphicon glyphicon-minus-sign">