9 [% INCLUDE 'doc-head-open.inc' %]
11 [% IF TwoFA_prompt %]Two-factor authentication[% END %]
12 [% IF ( loginprompt ) %]Log in to Koha[% END %]
13 [% IF too_many_login_attempts %]This account has been locked.
14 [% ELSIF invalid_username_or_password %]Invalid username or password[% END %]
15 [% IF ( different_ip ) %]IP address change[% END %]
16 [% IF ( timed_out ) %]Session timed out[% END %]
17 [% IF ( nopermission ) %]Access denied[% END %] › Koha
19 [% INCLUDE 'doc-head-close.inc' %]
21 <body id="main_auth" class="main_main-auth">
23 <div class="main container-fluid">
26 <h1><a href="http://koha-community.org">Koha</a></h1>
27 [% IF (Koha.Preference('StaffLoginInstructions')) %]<div id="login_instructions">[% Koha.Preference('StaffLoginInstructions') | $raw %]</div>[% END %]
28 [% IF ( nopermission ) %]
29 <div id="login_error">
30 <strong>Error:</strong>
31 You do not have permission to access this page.
33 <p><strong>Log in as a different user</strong></p></h2>
36 [% IF ( timed_out ) %]
37 <div id="login_error"><strong>Error: </strong>Session timed out.<br /> Please log in again</div>
40 [% IF ( different_ip ) %]
41 <div id="login_error"><strong>Error: </strong>IP address has changed. Please log in again </div>
45 <div id="login_error"><strong>Error: </strong>Autolocation is switched on and you are logging in with an IP address that doesn't match your library. </div>
48 [% IF too_many_login_attempts %]
49 <div id="login_error"><strong>Error: </strong>This account has been locked!</div>
50 [% IF Categories.can_any_reset_password && Koha.Preference('OpacBaseURL') %]
51 <a href="[% Koha.Preference('OpacBaseURL') | url %]/cgi-bin/koha/opac-password-recovery.pl">You must reset your password</a>.
53 [% ELSIF password_has_expired %]
54 <div id="login_error"><strong>Error: </strong>Your password has expired!</div>
55 [% IF Koha.Preference('EnableExpiredPasswordReset') && Koha.Preference('OpacBaseURL') %]
56 <a href="[% Koha.Preference('OpacBaseURL') | url %]/cgi-bin/koha/opac-reset-password.pl">You must reset your password</a>.
57 [% ELSIF Categories.can_any_reset_password && Koha.Preference('OpacBaseURL') %]
58 <a href="[% Koha.Preference('OpacBaseURL') | url %]/cgi-bin/koha/opac-password-recovery.pl">You must reset your password</a>.
60 <p>You must contact the library to reset your password</p>
62 [% ELSIF invalid_username_or_password %]
63 <div id="login_error"><strong>Error: </strong>Invalid username or password</div>
66 [% IF (shibbolethAuthentication) %]
67 <!-- This is what is displayed if shib login has failed -->
68 [% IF (invalidShibLogin ) %]
69 <div id="login_error"><Strong>Error: </strong>Shibboleth login failed</div>
71 <p><a href="[% shibbolethLoginUrl | $raw %]">Log in using a Shibboleth account</a>.</p>
74 [% IF !TwoFA_prompt && !Koha.Preference('staffShibOnly') %]
75 <!-- login prompt time-->
76 <form action="[% script_name | html %]" method="post" name="loginform" id="loginform">
77 <input type="hidden" name="koha_login_context" value="intranet" />
78 [% FOREACH INPUT IN INPUTS %]
79 <input type="hidden" name="[% INPUT.name | html %]" value="[% INPUT.value | html %]" />
81 <p><label for="userid">Username:</label>
82 <input type="text" name="userid" id="userid" class="input focus" value="[% userid | html %]" size="20" tabindex="1" autocomplete="off" />
84 <p><label for="password">Password:</label>
85 <input type="password" name="password" id="password" class="input" value="" size="20" tabindex="2" autocomplete="off" />
88 [% UNLESS IndependentBranches %]
90 <label for="branch">Library:</label>
91 <select name="branch" id="branch" class="input" tabindex="3">
92 <option value="">My library</option>
93 [% FOREACH l IN Branches.all( unfiltered => 1 ) %]
94 <option value="[% l.branchcode | html %]">[% l.branchname | html %]</option>
99 [% IF Koha.Preference('UseCirculationDesks') && Desks.all %]
101 <label for="desk">Desk:</label>
102 <select name="desk_id" id="desk_id" class="input" tabindex="3">
103 <option id="nodesk" value="">---</option>
104 [% FOREACH d IN Desks.all %]
105 <option class="[% d.branchcode | html %]" value="[% d.desk_id | html %]" disabled >[% d.desk_name | html %]</option>
111 [% IF Koha.Preference('UseCashRegisters') && Registers.all().size %]
113 <label for="register_id">Cash register:</label>
114 <select name="register_id" id="register_id" class="input" tabindex="4">
115 <option id="noregister" value="" selected="selected">Library default</option>
116 [% PROCESS options_for_registers registers => Registers.all() %]
123 <!-- <p><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="3" />Remember me</label></p> -->
125 <p class="submit"><input id="submit-button" type="submit" value="Log in" tabindex="4" /></p>
128 [% IF ( casAuthentication ) %]
131 [% IF ( invalidCasLogin ) %]
132 <!-- This is what is displayed if cas login has failed -->
133 <p>Sorry, the CAS login failed.</p>
136 [% IF ( casServerUrl ) %]
137 <p><a href="[% casServerUrl | $raw %]">If you have a CAS account, please click here to login</a>.<p>
140 [% IF ( casServersLoop ) %]
141 <p>If you have a CAS account, please choose against which one you would like to authenticate:</p>
143 [% FOREACH casServer IN casServersLoop %]
144 <li><a href="[% casServer.value | $raw %]">[% casServer.name | html %]</a></li>
148 [% ELSIF TwoFA_prompt %]
149 <form action="[% script_name | html %]" method="post" name="loginform" id="loginform">
150 <input type="hidden" name="koha_login_context" value="intranet" />
151 [% FOREACH INPUT IN INPUTS %]
152 <input type="hidden" name="[% INPUT.name | html %]" value="[% INPUT.value | html %]" />
154 [% IF invalid_otp_token %]
155 <div id="login_error">Invalid two-factor code</div>
158 <div id="email_error" class="dialog alert" style="display: none;"></div>
159 <div id="email_success" class="dialog message" style="display: none;"></div>
161 <label for="otp_token">Two-factor authentication code:</label>
162 <input type="text" name="otp_token" id="otp_token" class="input focus" value="" size="20" tabindex="1" />
165 <input id="submit-button" type="submit" value="Verify code" />
166 <a class="send_otp" id="send_otp" href="#">Send the code by email</a>
167 <a class="cancel" id="logout" href="/cgi-bin/koha/mainpage.pl?logout.x=1">Cancel</a>
173 [% IF ( nopermission ) %]
174 <p><a id="previous_page" href="javascript:window.history.back()">[Previous page]</a>
175 <a id="mainpage" href="/">[Main page]</a></p>
180 <!-- <li><a href="/cgi-bin/koha/lostpassword.pl" title="Password lost and found">Lost your password?</a></li> -->
185 [% MACRO jsinclude BLOCK %]
186 [% Asset.js("js/desk_selection.js") | $raw %]
187 [% Asset.js("js/register_selection.js") | $raw %]
189 $(document).ready( function() {
190 if ( document.location.hash ) {
191 $( '#loginform' ).append( '<input name="auth_forwarded_hash" type="hidden" value="' + document.location.hash + '"/>' );
193 // Clear last borrowers, rememberd sql reports, carts, etc.
196 $("#send_otp").on("click", function(e){
198 [% UNLESS notice_email_address %]
199 alert("Cannot send the notice, you don't have an email address defined.")
201 $("#email_success").hide();
202 $("#email_error").hide();
204 url: '/api/v1/auth/otp/token_delivery',
206 success: function(data){
207 let message = _("The code has been sent by email, please check your inbox.")
208 $("#email_success").show().html(message);
210 error: function(data){
211 let error = data.responseJSON && data.responseJSON.error == "email_not_sent"
212 ? _("Email not sent, please contact the Koha administrator")
213 : _("Something wrong happened, please contact the Koha administrator");
214 $("#email_error").show().html(error);
222 <!-- the main div is closed in intranet-bottom.inc -->
223 [% INCLUDE 'intranet-bottom.inc' %]