Ajax to remove OIDC consent (#826)
This commit is contained in:
parent
9910a0aa0f
commit
c3b2dc878d
|
@ -129,7 +129,7 @@
|
|||
.\" ========================================================================
|
||||
.\"
|
||||
.IX Title "llng-fastcgi-server 1"
|
||||
.TH llng-fastcgi-server 1 "2017-09-05" "perl v5.26.0" "User Contributed Perl Documentation"
|
||||
.TH llng-fastcgi-server 1 "2017-09-18" "perl v5.26.0" "User Contributed Perl Documentation"
|
||||
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
|
||||
.\" way too many mistakes in technical documents.
|
||||
.if n .ad l
|
||||
|
|
|
@ -6,6 +6,7 @@ our $VERSION = '2.0.0';
|
|||
|
||||
package Lemonldap::NG::Portal::Main;
|
||||
use strict;
|
||||
use Mouse;
|
||||
|
||||
has skinRules => ( is => 'rw' );
|
||||
|
||||
|
@ -468,9 +469,16 @@ sub mkOidcConsent {
|
|||
. '<tbody><tr>';
|
||||
|
||||
# TODO: add JS to remove consent
|
||||
$tmp .= "<tr><td>$_</td></tr>"
|
||||
if ( $session->{_oidcConnectedRP} ) {
|
||||
$tmp .=
|
||||
qq'<tr><td>$_ <a class="oidcConsent" partner="$_">remove</a></td></tr>'
|
||||
foreach ( split /,/, $session->{_oidcConnectedRP} );
|
||||
$tmp .= '</tbody></table>';
|
||||
$tmp .= qq'</tbody></table><script type="application/init">
|
||||
{
|
||||
"oidcConsents":"$session->{_oidcConnectedRP}"
|
||||
}
|
||||
</script>';
|
||||
}
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
|
|
|
@ -88,6 +88,17 @@ has exportedAttr => (
|
|||
}
|
||||
);
|
||||
|
||||
has ott => (
|
||||
is => 'rw',
|
||||
lazy => 1,
|
||||
default => sub {
|
||||
my $ott =
|
||||
$_[0]->{p}->loadModule('Lemonldap::NG::Portal::Lib::OneTimeToken');
|
||||
$ott->timeout( $_[0]->conf->{formTimeout} );
|
||||
return $ott;
|
||||
}
|
||||
);
|
||||
|
||||
# INITIALIZATION
|
||||
|
||||
sub init {
|
||||
|
@ -294,6 +305,11 @@ sub mysession {
|
|||
{ result => $req->userData->{ $self->conf->{whatToTrace} } } );
|
||||
}
|
||||
|
||||
if ( defined $req->param('gettoken') ) {
|
||||
return $self->p->sendJSONresponse( $req,
|
||||
{ token => $self->ott->createToken() } );
|
||||
}
|
||||
|
||||
# Verify authorizationfor arg
|
||||
elsif ( my $url = $req->param('authorizationfor') ) {
|
||||
|
||||
|
@ -338,15 +354,27 @@ sub updateMySession {
|
|||
my ( $self, $req ) = @_;
|
||||
my $res = 0;
|
||||
my $mKeys = [];
|
||||
if ( my $token = $req->param('token') ) {
|
||||
if ( $self->ott->getToken($token) ) {
|
||||
if ( $req->param('sessionType') eq 'persistent' ) {
|
||||
foreach my $key (qw(_appsListOrder)) {
|
||||
if ( my $v = $req->param($key) ) {
|
||||
foreach my $key (qw(_appsListOrder _oidcConnectedRP)) {
|
||||
my $v = $req->param($key);
|
||||
if ( defined $v ) {
|
||||
$res++;
|
||||
push @$mKeys, $key;
|
||||
$self->p->updatePersistentSession( $req, { $key => $v } );
|
||||
$self->p->updatePersistentSession( $req,
|
||||
{ $key => $v } );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
$self->logger->error('Update session request with invalid token');
|
||||
}
|
||||
}
|
||||
else {
|
||||
$self->logger->error('Update session request without token');
|
||||
}
|
||||
unless ($res) {
|
||||
return $self->p->sendError( $req, 'Modification refused', 403 );
|
||||
}
|
||||
|
|
|
@ -49,12 +49,28 @@ setSelector = "#appslist"
|
|||
|
||||
# function that writes the list order to session
|
||||
setOrder = ->
|
||||
setKey '_appsListOrder', $(setSelector).sortable("toArray").join()
|
||||
|
||||
removeOidcConsent = (partner) ->
|
||||
r = new RegExp partner, 'g'
|
||||
datas['oidcConsents'] = datas['oidcConsents'].replace(r,'').replace(',+',',')
|
||||
setKey '_oidcConnectedRP', datas['oidcConsents']
|
||||
$(this).text()
|
||||
|
||||
setKey = (key,val) ->
|
||||
$.ajax
|
||||
type: "GET"
|
||||
url: datas['scriptname'] + '/mysession/?gettoken'
|
||||
dataType: 'json'
|
||||
success: (data) ->
|
||||
d =
|
||||
token: data.token
|
||||
d[key] = val
|
||||
$.ajax
|
||||
type: "PUT"
|
||||
url: datas['scriptname'] + '/mysession/persistent'
|
||||
data:
|
||||
_appsListOrder: $(setSelector).sortable("toArray").join()
|
||||
dataType: 'json'
|
||||
data: d
|
||||
|
||||
# function that restores the list order from session
|
||||
restoreOrder = ->
|
||||
|
@ -250,3 +266,5 @@ $(document).ready ->
|
|||
s = new Date($(this).attr("val")*1000)
|
||||
$(this).text s.toLocaleString()
|
||||
|
||||
$('.oidcConsent').on 'click', () ->
|
||||
removeOidcConsent $(this).attr 'partner'
|
||||
|
|
|
@ -5,7 +5,7 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
*/
|
||||
|
||||
(function() {
|
||||
var datas, getCookie, getValues, isHiddenFormValueSet, ping, restoreOrder, setCookie, setOrder, setSelector, translate, translatePage, translationFields,
|
||||
var datas, 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 < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
||||
|
||||
translationFields = {};
|
||||
|
@ -71,13 +71,35 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
setSelector = "#appslist";
|
||||
|
||||
setOrder = function() {
|
||||
return setKey('_appsListOrder', $(setSelector).sortable("toArray").join());
|
||||
};
|
||||
|
||||
removeOidcConsent = function(partner) {
|
||||
var r;
|
||||
r = new RegExp(partner, 'g');
|
||||
datas['oidcConsents'] = datas['oidcConsents'].replace(r, '').replace(',+', ',');
|
||||
setKey('_oidcConnectedRP', datas['oidcConsents']);
|
||||
return $(this).text();
|
||||
};
|
||||
|
||||
setKey = function(key, val) {
|
||||
return $.ajax({
|
||||
type: "GET",
|
||||
url: datas['scriptname'] + '/mysession/?gettoken',
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
var d;
|
||||
d = {
|
||||
token: data.token
|
||||
};
|
||||
d[key] = val;
|
||||
return $.ajax({
|
||||
type: "PUT",
|
||||
url: datas['scriptname'] + '/mysession/persistent',
|
||||
data: {
|
||||
_appsListOrder: $(setSelector).sortable("toArray").join()
|
||||
},
|
||||
dataType: 'json'
|
||||
dataType: 'json',
|
||||
data: d
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -261,11 +283,14 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
if (datas['pingInterval'] && datas['pingInterval'] > 0) {
|
||||
window.setTimeout(ping, datas['pingInterval']);
|
||||
}
|
||||
return $(".localeDate").each(function() {
|
||||
$(".localeDate").each(function() {
|
||||
var s;
|
||||
s = new Date($(this).attr("val") * 1000);
|
||||
return $(this).text(s.toLocaleString());
|
||||
});
|
||||
return $('.oidcConsent').on('click', function() {
|
||||
return removeOidcConsent($(this).attr('partner'));
|
||||
});
|
||||
});
|
||||
|
||||
}).call(this);
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user