From 43a467b15ae3d8b54fb3f5715b6d4f6a4f1d8a7a Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Sat, 22 Apr 2023 18:56:13 +0200 Subject: [PATCH] Login form: add remember username feature --- example/includes/config.yml | 6 ++++++ locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo | Bin 14878 -> 14941 bytes locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po | 16 +++++++++------ locales/messages.pot | 18 ++++++++++------- skel/config.yml | 6 ++++++ src/Auth/Form.php | 23 +++++++++++++++++++--- templates/login.tpl | 11 ++++++++++- 7 files changed, 63 insertions(+), 17 deletions(-) diff --git a/example/includes/config.yml b/example/includes/config.yml index b04dc28..697ef8d 100644 --- a/example/includes/config.yml +++ b/example/includes/config.yml @@ -172,6 +172,12 @@ auth: http: "HTTP" cas: "SSO" + # Remember username + # Enable the feature (default: true) + # remember_username: true + # Cookie name (default: remember_username) + # remember_username_cookie_name: "remember_username" + # # HTTP Authentication Configuration # diff --git a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.mo index ff101fe92f9f0ca44b56efadc0bdf82b5529bd8a..cd497953657aada33e65628835bc6ff7585c6f24 100644 GIT binary patch delta 2469 zcmX}teN5F=9LMo53V1JqgvoN;M%qC+r)?)@TwDn>Q&$m7*kJ9mn`^D5)=Lb2+pXKurfhFk03Y>|XP!l|e zbMP|eW8_0-)wlxZV?UPRHMgA^XO=>HD=y*rc7TdPbpap2Tc`n}$2y@cz(usT;S4;6 zEY3bft>kOBeG9W_|Bfqh+QZI-TJcHRgP4H-Vim>{zF;<$9aI$3eq@sN6)I%6@p1IT zJA1wc6{%-Yd;K;}!C!GaCNR1tmgSm<+JaTcpOy150vk~a4I~hMCDjXblb0xllm3R|>!F*EuXUv@FoR$fsxW-$8nn)8WQXRM*kD%@!4!S?6 zB;E>bEh_ZAd}u`juBVYn+c{LIzr=dHi;7%XvXev4VHoWJ*AuRTsL-EuJ?-`f&r(U{ zj`vXK_8RfkjKh3p$_+2(;bKh3J-8Q-q0WCYF9#jBB4jPL6PMy)w|yChXx~K+h`ml2 zl%zvAU+4cO6+a!x90Bd!ek9s<1PgEwweowYz4Nd?`dut;#8lLT_aQ@B4|d}KYLBP0 zsxF+1JkSP^e6=4iTIc^yD$4rEY0d)@QOT8zT44q@V+9uDhuDZQgyR72!crVY{jPMn z**bh56}foM>?T}`%keZW#J@0)=UXmM(abuq1_y8fdU?xe<%OsjZ*bdfsDXP>N%Rqx zppOJnyA2h=kFgEEM?J8deJa9U`Te5DB zbG)vgl4&8!&ki#?gA?$lxz4M3B>TosECV&MjmQwT4fkUowqeQwXF`W?CGDd~e%g0I zDsfaIiMM8)go)@w65bZzKCH$?cmwBQ5)I~IC9b8e<*3kCxK_ITRjxWQ3}H`D*cFRt z=3__b$5Clvl_9TZX1p?0p)8_k=DO-aMV^$H05z>q*RD{PCuO|fY1~i7_0$_F4V2o@ z2~S#ZtNZO9*A1vQhc5QPe3U|pmLE>pPHCa&T1L?ZE9zO;+wuR^ zL~WIms7_xs=)Xs))4cyScsdmDri9gmdcCvbtLUFW;auBVN++c|^o2Kl`A%x}6z$A| zYqML~@}L8iLaQldly-^^#cqmH+0~gx6}pvrw%4w96xFG jg*O7N?G5z#T3Q3XE$LmI4b2T5b)EjM_ET%JFM0k0CI1Wz delta 2415 zcmX}se@sNhvYRr0nJcrKi_r9Lzx%Zs&obU5}&T#9I z*3eIJ;a$ejMob|t-e7hdzq^qyj;1KHX}B3R)PXtZ;9UF)XW^f?5|eH+yA6Xl1E0lY zJcf(04|SibxYsOX{%Erp242Gqd>hm8dt8mzyx$A?lb?P$F2rVx$2Tz?KSZu+pI`=_ z#0b2EDL97pn0&Jtm$cnj!~JbPjrk1x?){K(i~EP^$j37InuyCW5({x2mZB!uhPn6! zF2}!dBj&}L<)ee^@msGyb&^>s{SCO3``b<$N>vZe#6i>r$55%wiZfe+6*vbwk%zHQ zQBQKp>kncU{a>*N6DPY9s>2fc-I$0MFo+XLUnrZ#CK^hqgG|!CL8a_Ryc;iL4z5UW zGqoMH)<A&2s^236>%sTgBG|tVTU(O(OYMQSD{mcHED5;AiN=e>}rk zc$yZ2O5IGbM21iqJA<0Qc|ZAIKqD^69k|Q05np7y z0~;}($5Tq%uoC<60;W*fqZoawyGt&ku9r-SYa+#{43%LMwxZ4-_I}R`k!Ka(GE~Z& z`O=fLdv+p|wbxN8?!kH-KxHgzs#`k^7)HO{v%~WMD&;SGc6#GoIE@oRhiGWOeneh1 z=K(?(FSKtBElb=Sd-EXM>oyS`I7d7Ep7LrR?BR-Aos5Oq@sdnIG)D7E_ zILMiR?NjUcoetbD87Ij(pgs=M*S~yHe>h(Dsz8f z9prLwq|&Bo_2h}-ZCYC>hKXAxE*b!l(mBs_`weJDi3Pvb07 z&~^p)U<&J?cm5INUN(fx!(thfah~z0lqY%yyzwcXsw*w&Jp|deWo=5!;D2=WJwp;Z9nc2(8ihQSUV#93Max(>h{3 e@i?Jf@dQEnSY^+;sM468_x)c6dJbj}`2GWjGys_Z diff --git a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po index ce07897..ed9a609 100644 --- a/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po +++ b/locales/fr_FR.UTF8/LC_MESSAGES/EESYPHP.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2023-03-22 19:13+0100\n" +"POT-Creation-Date: 2023-04-22 18:48+0200\n" "PO-Revision-Date: \n" "Last-Translator: Benjamin Renard \n" "Language-Team: \n" @@ -28,11 +28,11 @@ msgstr "Inconnu" msgid "Unable to connect to the database." msgstr "Impossible de se connecter à la base de données." -#: Auth/Form.php:41 +#: Auth/Form.php:51 msgid "Invalid username or password." msgstr "Nom d'utilisateur ou mot de passe invalide." -#: Auth/Form.php:74 +#: Auth/Form.php:92 msgid "Sign in" msgstr "Connexion" @@ -581,15 +581,19 @@ msgstr "Merci de patienter pendant le traitement de votre requête." msgid "Are you sure?" msgstr "Êtes-vous sure ?" -#: templates/login.tpl:19 templates/login.tpl:20 +#: templates/login.tpl:20 templates/login.tpl:21 msgid "Username" msgstr "Nom d'utilisateur" -#: templates/login.tpl:24 templates/login.tpl:25 +#: templates/login.tpl:26 templates/login.tpl:27 msgid "Password" msgstr "Mot de passe" -#: templates/login.tpl:29 +#: templates/login.tpl:33 +msgid "Remember username" +msgstr "Mémoriser nom d'utilisateur" + +#: templates/login.tpl:38 msgid "Submit" msgstr "Envoyer" diff --git a/locales/messages.pot b/locales/messages.pot index 2608939..f2af714 100644 --- a/locales/messages.pot +++ b/locales/messages.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" -"POT-Creation-Date: 2023-03-22 19:13+0100\n" -"PO-Revision-Date: 2023-03-22 19:13+0100\n" +"POT-Creation-Date: 2023-04-22 18:48+0200\n" +"PO-Revision-Date: 2023-04-22 18:48+0200\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,11 +22,11 @@ msgstr "" msgid "Unable to connect to the database." msgstr "" -#: Auth/Form.php:41 +#: Auth/Form.php:51 msgid "Invalid username or password." msgstr "" -#: Auth/Form.php:74 +#: Auth/Form.php:92 msgid "Sign in" msgstr "" @@ -504,15 +504,19 @@ msgstr "" msgid "Are you sure?" msgstr "" -#: templates/login.tpl:19 templates/login.tpl:20 +#: templates/login.tpl:20 templates/login.tpl:21 msgid "Username" msgstr "" -#: templates/login.tpl:24 templates/login.tpl:25 +#: templates/login.tpl:26 templates/login.tpl:27 msgid "Password" msgstr "" -#: templates/login.tpl:29 +#: templates/login.tpl:33 +msgid "Remember username" +msgstr "" + +#: templates/login.tpl:38 msgid "Submit" msgstr "" diff --git a/skel/config.yml b/skel/config.yml index 21480ef..2b4bfab 100644 --- a/skel/config.yml +++ b/skel/config.yml @@ -172,6 +172,12 @@ auth: http: "HTTP" cas: "SSO" + # Remember username + # Enable the feature (default: true) + # remember_username: true + # Cookie name (default: remember_username) + # remember_username_cookie_name: "remember_username" + # # HTTP Authentication Configuration # diff --git a/src/Auth/Form.php b/src/Auth/Form.php index 30edd43..c04efd5 100644 --- a/src/Auth/Form.php +++ b/src/Auth/Form.php @@ -22,6 +22,8 @@ class Form extends Method { array( 'display_other_methods' => array(), 'include_navbar' => true, + 'remember_username' => true, + 'remember_username_cookie_name' => 'remember_username', ) ); Url :: add_url_handler('#^login$#', array('EesyPHP\\Auth\\Form', 'handle_login'), null, false); @@ -38,7 +40,15 @@ class Form extends Method { $user = null; if (isset($_REQUEST['username']) && isset($_REQUEST['password'])) { $user = Auth :: authenticate($_REQUEST['username'], $_REQUEST['password']); - if (!$user) Tpl::add_error(_('Invalid username or password.')); + if ($user) { + setcookie( + App::get('auth.login_form.remember_username_cookie_name'), + App::get('auth.login_form.remember_username') && isset($_REQUEST['remember-username'])? + $user->username:null + ); + } + else + Tpl::add_error(_('Invalid username or password.')); } if ($force && !$user) { if (Url :: get_current_url() != 'login') @@ -67,8 +77,15 @@ class Form extends Method { } if ($user) Url :: redirect(isset($_REQUEST['next'])?urldecode($_REQUEST['next']):null); - else - Tpl :: assign('next', (isset($_REQUEST['next'])?urldecode($_REQUEST['next']):'')); + + $remember_username = App::get('auth.login_form.remember_username', null, 'bool'); + Tpl :: assign('remember_username', $remember_username); + if ($remember_username) { + $cookie_name = App::get('auth.login_form.remember_username_cookie_name'); + Tpl :: assign('username', isset($_COOKIE[$cookie_name])?$_COOKIE[$cookie_name]:null); + } + + Tpl :: assign('next', isset($_REQUEST['next'])?urldecode($_REQUEST['next']):''); Tpl :: assign('display_other_methods', $display_other_methods); Tpl :: assign('include_navbar', App::get('auth.login_form.include_navbar', null, 'bool')); Tpl :: display('login.tpl', I18n::_('Sign in')); diff --git a/templates/login.tpl b/templates/login.tpl index ce67497..91cae70 100644 --- a/templates/login.tpl +++ b/templates/login.tpl @@ -16,7 +16,7 @@
+ placeholder="{t domain=$CORE_TEXT_DOMAIN}Username{/t}" value="{if $remember_username && $username}{$username|escape:"quotes"}{/if}"/>
@@ -25,6 +25,15 @@
+ {if $remember_username} +
+ +
+ {/if} +