diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Kerberos.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Kerberos.pm index c192ef6c8..c280c53a9 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Kerberos.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Auth/Kerberos.pm @@ -16,6 +16,8 @@ our $VERSION = '2.0.0'; extends 'Lemonldap::NG::Portal::Auth::Base'; +has keytab => ( is => 'rw' ); + # INITIALIZATION sub init { @@ -36,7 +38,7 @@ sub extractFormInfo { # Case 1: simple usage or first Kerberos Ajax request # => return 401 to initiate Kerberos - if ( !$self->{conf}->{krbByJs} or $req->param('krb') ) { + if ( !$self->{conf}->{krbByJs} or $req->param('kerberos') ) { $self->logger->debug('Initialize Kerberos dialog'); # Case 1.1: Ajax request @@ -75,19 +77,19 @@ sub extractFormInfo { # page with "kerberos=0". Return an error to be able to switch to # another backend (Combination) # switch to another backend - elsif ( defined $req->param('krb') ) { - $self->userLogger->warn('Kerberos authentication has failed'); + elsif ( defined $req->param('kerberos') ) { + $self->userLogger->warn('Kerberos authentication has failed, back to portal'); return PE_BADCREDENTIALS; } # Case 3: Display kerberos auth page (with javascript) else { $self->logger->debug('Send Kerberos javascript'); - $self->p->setHiddenValue( $req, kerberos => 0, '', 0 ); + $self->p->setHiddenFormValue( $req, kerberos => 0, '', 0 ); $req->datas->{customScript} .= ''; + . '/common/js/kerberos.js">'; return PE_FIRSTACCESS; } } diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm index 7aac7148d..91e745ecc 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Main/Run.pm @@ -571,7 +571,7 @@ sub setHiddenFormValue { $base64 = 1 unless defined $base64; # Store value - if ($val) { + if ( defined $val ) { $key = $prefix . $key; $val =~ s/\+/%2B/g; $req->{portalHiddenFormValues}->{$key} = $val; diff --git a/lemonldap-ng-portal/site/coffee/kerberos.coffee b/lemonldap-ng-portal/site/coffee/kerberos.coffee index bfabcd3c8..6030b36d1 100644 --- a/lemonldap-ng-portal/site/coffee/kerberos.coffee +++ b/lemonldap-ng-portal/site/coffee/kerberos.coffee @@ -1,18 +1,18 @@ # Launch Kerberos request $(document).ready -> - $.ajax + $.ajax portal + '?kerberos=1', dataType: 'json' # Called if browser can't find Kerberos ticket will display # PE_BADCREDENTIALS statusCode: 401: () -> - $('#form').submit() + $('#lform').submit() # If request succeed, cookie is set, posting form to get redirection # or menu success: (data) -> - $('#form').submit() + $('#lform').submit() # Case else, will display PE_BADCREDENTIALS or fallback to next auth # backend error: () -> - $('#form').submit() + $('#lform').submit() diff --git a/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.js b/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.js index 562af2192..c572a724a 100644 --- a/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.js +++ b/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.js @@ -1,18 +1,18 @@ // Generated by CoffeeScript 1.10.0 (function() { $(document).ready(function() { - return $.ajax({ + return $.ajax(portal + '?kerberos=1', { dataType: 'json', statusCode: { 401: function() { - return $('#form').submit(); + return $('#lform').submit(); } }, success: function(data) { - return $('#form').submit(); + return $('#lform').submit(); }, error: function() { - return $('#form').submit(); + return $('#lform').submit(); } }); }); diff --git a/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.min.js b/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.min.js index e0e82b319..1bc4d0cec 100644 --- a/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.min.js +++ b/lemonldap-ng-portal/site/htdocs/static/common/js/kerberos.min.js @@ -1 +1 @@ -(function(){$(document).ready(function(){return $.ajax({dataType:"json",statusCode:{401:function(){return $("#form").submit()}},success:function(a){return $("#form").submit()},error:function(){return $("#form").submit()}})})}).call(this); \ No newline at end of file +(function(){$(document).ready(function(){return $.ajax(portal+"?kerberos=1",{dataType:"json",statusCode:{401:function(){return $("#lform").submit()}},success:function(a){return $("#lform").submit()},error:function(){return $("#lform").submit()}})})}).call(this); \ No newline at end of file diff --git a/lemonldap-ng-portal/site/templates/bootstrap/header.tpl b/lemonldap-ng-portal/site/templates/bootstrap/header.tpl index d4e4a2654..d3e93f033 100644 --- a/lemonldap-ng-portal/site/templates/bootstrap/header.tpl +++ b/lemonldap-ng-portal/site/templates/bootstrap/header.tpl @@ -40,6 +40,7 @@ " /> + @@ -102,9 +102,9 @@
-