--- loncom/auth/lonlogin.pm 2021/05/03 15:27:44 1.183 +++ loncom/auth/lonlogin.pm 2021/09/21 22:54:26 1.184 @@ -1,7 +1,7 @@ # The LearningOnline Network # Login Screen # -# $Id: lonlogin.pm,v 1.183 2021/05/03 15:27:44 raeburn Exp $ +# $Id: lonlogin.pm,v 1.184 2021/09/21 22:54:26 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -47,7 +47,7 @@ sub handler { (join('&',$ENV{'QUERY_STRING'},$env{'request.querystring'}, $ENV{'REDIRECT_QUERY_STRING'}), ['interface','username','domain','firsturl','localpath','localres', - 'token','role','symb','iptoken','btoken','ltoken','linkkey']); + 'token','role','symb','iptoken','btoken','ltoken','linkkey','saml']); if (!defined($env{'form.firsturl'})) { &Apache::lonacc::get_posted_cgi($r,['firsturl']); } @@ -581,17 +581,9 @@ function enableInput() { ENDSCRIPT -# --------------------------------------------------- Print login screen header - - my %add_entries = ( - bgcolor => "$mainbg", - text => "$font", - link => "$link", - vlink => "$vlink", - alink => "$alink", - onload => 'javascript:enableInput();',); - - my ($lonhost_in_use,$headextra,$headextra_exempt,@hosts,%defaultdomconf); + my ($lonhost_in_use,@hosts,%defaultdomconf,$saml_prefix,$saml_landing, + $samlssotext,$samlnonsso,$samlssoimg,$samlssoalt,$samlssourl,$samltooltip); + %defaultdomconf = &Apache::loncommon::get_domainconf($defdom); @hosts = &Apache::lonnet::current_machine_ids(); $lonhost_in_use = $lonhost; if (@hosts > 1) { @@ -602,7 +594,67 @@ ENDSCRIPT } } } - %defaultdomconf = &Apache::loncommon::get_domainconf($defdom); + $saml_prefix = $defdom.'.login.saml_'; + if ($defaultdomconf{$saml_prefix.$lonhost_in_use}) { + $saml_landing = 1; + $samlssotext = $defaultdomconf{$saml_prefix.'text_'.$lonhost_in_use}; + $samlnonsso = $defaultdomconf{$saml_prefix.'notsso_'.$lonhost_in_use}; + $samlssoimg = $defaultdomconf{$saml_prefix.'img_'.$lonhost_in_use}; + $samlssoalt = $defaultdomconf{$saml_prefix.'alt_'.$lonhost_in_use}; + $samlssourl = $defaultdomconf{$saml_prefix.'url_'.$lonhost_in_use}; + $samltooltip = $defaultdomconf{$saml_prefix.'title_'.$lonhost_in_use}; + } + if ($saml_landing) { + if ($samlssotext eq '') { + $samlssotext = 'SSO Login'; + } + if ($samlnonsso eq '') { + $samlnonsso = 'Non-SSO Login'; + } + $js .= <<"ENDSAMLJS"; + + + +ENDSAMLJS + } + +# --------------------------------------------------- Print login screen header + + my %add_entries = ( + bgcolor => "$mainbg", + text => "$font", + link => "$link", + vlink => "$vlink", + alink => "$alink", + onload => 'javascript:enableInput();',); + + my ($headextra,$headextra_exempt,@hosts,%defaultdomconf); $headextra = $defaultdomconf{$defdom.'.login.headtag_'.$lonhost_in_use}; $headextra_exempt = $defaultdomconf{$domain.'.login.headtag_exempt_'.$lonhost_in_use}; if ($headextra) { @@ -647,6 +699,7 @@ ENDSCRIPT 'helpdesk' => 'Contact Helpdesk', 'forgotpw' => 'Forgot password?', 'newuser' => 'New User?', + 'change' => 'Change?', ); # -------------------------------------------------- Change password field name @@ -708,7 +761,7 @@ ENDSERVERFORM $mobileargs = 'autocapitalize="off" autocorrect="off"'; } my $loginform=(< +
:
@@ -729,8 +782,56 @@ LFORM HEADER } - $r->print(< + + my $stdauthformstyle = 'inline-block'; + my $ssoauthstyle = 'none'; + my $logintype; + $r->print('
'); + if ($saml_landing) { + $ssoauthstyle = 'inline-block'; + $stdauthformstyle = 'none'; + $logintype = $samlssotext; + my $ssologin = '/adm/sso'; + if ($samlssourl ne '') { + $ssologin = $samlssourl; + } + my $ssohref; + if ($samlssoimg ne '') { + $ssohref = ''.$samlssoalt.''; + } else { + $ssohref = ''.$samlssotext.''; + } + if ($env{'form.firsturl'}) { + $ssologin .= '?origurl='.&HTML::Entities::encode($env{'form.firsturl'},'<>&"'); + } + if (($env{'form.saml'} eq 'no') || + (($env{'form.username'} ne '') && ($env{'form.domain'} ne ''))) { + $ssoauthstyle = 'none'; + $stdauthformstyle = 'inline-block'; + $logintype = $samlnonsso; + } + $r->print(< +Log-in type: +$logintype
+$lt{'change'} +

+
+
+$ssohref +$noscript_warning +
+
+$loginhelp +$contactblock +$coursecatalog +
+
+ENDSAML + } + + $r->print(<
$logintitle $loginform @@ -746,8 +847,8 @@ HEADER
-
-ENDTOP +ENDLOGIN + $r->print('
'."\n"); if ($showmainlogo) { $r->print(' '."\n"); }