From 05821df5461211186230fed3cf05126f1e6831a9 Mon Sep 17 00:00:00 2001 From: aitzol Date: Sat, 25 Nov 2023 15:58:37 +0100 Subject: [PATCH] 2fa-2.0 --- _2fa.tpl | 8 +-- app.py | 26 +++++----- index.tpl | 4 +- libs/localization.py | 4 +- locales/base.pot | 72 +++++++++++++------------- locales/en/LC_MESSAGES/base.mo | Bin 6009 -> 5973 bytes locales/en/LC_MESSAGES/base.po | 90 +++++++++++++++++---------------- locales/eu/LC_MESSAGES/base.mo | Bin 6160 -> 6187 bytes locales/eu/LC_MESSAGES/base.po | 72 +++++++++++++------------- 9 files changed, 144 insertions(+), 132 deletions(-) diff --git a/_2fa.tpl b/_2fa.tpl index 5df3b3c..2e1d801 100644 --- a/_2fa.tpl +++ b/_2fa.tpl @@ -18,12 +18,12 @@ % if data['secureAuth'] == True:
{{ str['2fa-info-1'] }}
- +
- - + +
@@ -36,7 +36,7 @@
{{ str['2fa-info-2'] }}
- +
diff --git a/app.py b/app.py index 0c2a310..7e3e357 100644 --- a/app.py +++ b/app.py @@ -161,7 +161,7 @@ def post_user(): if(newSession().get()['secureAuth']): # encrypt and store the credentials sid = newSession().get()['id'] - data = ';'.join([form('username'),form('password'),newSession().get()['authToken']]) + data = ';'.join([form('username'),form('password'),newSession().get()['authCode']]) data_enc = cryptocode.encrypt(data, newSession().get()['id']) data_to_url = base64.urlsafe_b64encode(str.encode(data_enc)) memo.get(data_enc) @@ -195,8 +195,8 @@ def post_user_step2(path): newSession() return error(i18n.msg[27]) - #if not tools._2fa_validation(form('code'), newSession().get()['authToken']): - if not tools._2fa_validation(form('code'), secret): + #if not tools._2fa_validation(form('token'), newSession().get()['authCode']): + if not tools._2fa_validation(form('token'), secret): return error(i18n.msg[6]) else: @@ -533,7 +533,7 @@ def login_user_ldap(conf, username, password): LOG.debug("%s logged in to %s" % (username, conf['base'])) #generate qr if it doenst exists when 2fa enable if(newSession().get()['secureAuth']): - tools.gen_qr(newSession().get()['authToken']) + tools.gen_qr(newSession().get()['authCode']) #LOGOUT def logout(username): @@ -827,14 +827,14 @@ def add_auth_attribute_step3(conf, username, code, action): with connect_ldap(conf, user=superUser.admin_dn, password=superUser.admin_pwd) as c: user_dn = find_user_dn(conf, c, username) if(action == 'enable'): - c.modify(user_dn,{'authToken': [(MODIFY_ADD, [code])]}) + c.modify(user_dn,{'authCode': [(MODIFY_ADD, [code])]}) c.modify(user_dn,{'secureAuth': [MODIFY_REPLACE, [True]]}) elif(action == 'disable'): - c.modify(user_dn,{'authToken': [(MODIFY_DELETE, [])]}) + c.modify(user_dn,{'authCode': [(MODIFY_DELETE, [])]}) c.modify(user_dn,{'secureAuth': [MODIFY_REPLACE, [False]]}) #remove file try: - remove('static/tmp/'+newSession().get()['authToken']+'.png') + remove('static/tmp/'+newSession().get()['authCode']+'.png') except OSError as e: LOG.warning(str(e)) #raise Error(e) @@ -1014,7 +1014,7 @@ def get_user_data(user_dn, conn): search_filter = '(objectClass=*)' conn.search(user_dn, search_filter, attributes=['active','fakeCn','givenName','sn','uid','mail','devices','ip','lastLogin','secureAuth', - 'authToken']) + 'authCode']) data = [] data.append(conn.entries[0].active.values[0]) data.append(conn.entries[0].fakeCn.values[0]) @@ -1029,8 +1029,8 @@ def get_user_data(user_dn, conn): #ts = datetime.strftime(t, '%Y-%m-%d %H:%M:%S') data.append(str(conn.entries[0].lastLogin.values[0])[:-6]) data.append(conn.entries[0].secureAuth.values[0]) - if(conn.entries[0].authToken): - data.append(conn.entries[0].authToken.values[0]) + if(conn.entries[0].authCode): + data.append(conn.entries[0].authCode.values[0]) return(data) @@ -1143,9 +1143,9 @@ def newSession(): self.lastLogin = data[8] self.secureAuth = data[9] try: - self.authToken = data[10] + self.authCode = data[10] except: - self.authToken = None + self.authCode = None self.data['active'] = self.active self.data['fakeCn'] = self.fakeCn @@ -1157,7 +1157,7 @@ def newSession(): self.data['ip'] = self.ip self.data['lastLogin'] = self.lastLogin self.data['secureAuth'] = self.secureAuth - self.data['authToken'] = self.authToken + self.data['authCode'] = self.authCode def close(self): self.data.pop('username') diff --git a/index.tpl b/index.tpl index 258c45d..32b7f67 100644 --- a/index.tpl +++ b/index.tpl @@ -18,8 +18,8 @@ %try: %if two_factor_authentication: - - + + %end %except: diff --git a/libs/localization.py b/libs/localization.py index 6223fe0..507b0ae 100644 --- a/libs/localization.py +++ b/libs/localization.py @@ -46,6 +46,7 @@ class LocalizeTo(object): str_31 = _("Enable") str_32 = _("You must then use the following code to log in. Using the key you will receive by reading the QR code via a OTP or 2FA mobile app.") str_33 = _("Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR.") + str_34 = _("Code") #messages msg_00 = _("The session was closed.") @@ -77,7 +78,6 @@ class LocalizeTo(object): msg_26 = _("Forgot your password? Please try again.") msg_27 = _("The session has expired.") msg_28 = _("Registration is currently closed. We apologize for the inconvenience.") - msg_29 = _("Two factor authentication has been impossible.") msg_30 = _("Two factor authentication has been restored.") msg_31 = _("Two factor authentication has been enabled.") @@ -90,7 +90,7 @@ class LocalizeTo(object): 'or-sign-up':str_17, 'inv-code':str_18, 'edit-fn':str_19, 'edit-email':str_20, 'ch-pwd':str_21, 'del-account':str_22, 'welcome':str_23, 'logs':str_24, 'last-login':str_25, 'devices':str_26, 'show':str_27, '2fa-title':str_28, 'token':str_29, 'disable':str_30, 'enable':str_31, '2fa-info-1':str_32, - '2fa-info-2':str_33, 'pwd-pattern': msg_08} + '2fa-info-2':str_33, 'code':str_34, 'pwd-pattern': msg_08} self.msg = (msg_00, msg_01, msg_02, msg_03, msg_04, msg_05, msg_06, msg_07, msg_08, msg_09, msg_10, msg_11, msg_12, msg_13, msg_14, msg_15, msg_16, msg_17, msg_18, msg_19, msg_20, msg_21, msg_22, msg_23, msg_24, msg_25, msg_26, msg_27, msg_28, msg_29, msg_30, msg_31, msg_32, msg_33) diff --git a/locales/base.pot b/locales/base.pot index 7db3f29..7c22d21 100644 --- a/locales/base.pot +++ b/locales/base.pot @@ -109,7 +109,7 @@ msgstr "Change your password" msgid "Delete your account" msgstr "Delete your account" -#: libs/localization.py:38 libs/localization.py:46 +#: libs/localization.py:38 libs/localization.py:53 msgid "Welcome" msgstr "Welcome" @@ -153,35 +153,39 @@ msgstr "You must then use the following code to log in. Using the key you will r msgid "Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR." msgstr "Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR." -#: libs/localization.py:45 ZUZENTZEA FALTA +#: libs/localization.py:49 +msgid "Code" +msgstr "Code" + +#: libs/localization.py:52 msgid "The session was closed." msgstr "The session was closed." -#: libs/localization.py:47 +#: libs/localization.py:54 msgid "Username must be at least 3 characters long!" msgstr "Username must be at least 3 characters long!" -#: libs/localization.py:48 +#: libs/localization.py:55 msgid "Not allowed characters for the username field." msgstr "Not allowed characters for the username field." -#: libs/localization.py:49 +#: libs/localization.py:56 msgid "Not allowed characters for the firstname field." msgstr "Not allowed characters for the firstname field." -#: libs/localization.py:50 +#: libs/localization.py:57 msgid "Not allowed characters for the surname field." msgstr "Not allowed characters for the surname field." -#: libs/localization.py:51 +#: libs/localization.py:58 msgid "The code is invalid or has expired." msgstr "The code is invalid or has expired." -#: libs/localization.py:52 +#: libs/localization.py:59 msgid "Passwords do not match!" msgstr "Passwords do not match!" -#: libs/localization.py:53 +#: libs/localization.py:60 msgid "" "The password must contain at least 8 characters, at least one number, " "a capital letter and a special character." @@ -189,104 +193,104 @@ msgstr "" "The password must contain at least 8 characters, at least one number, " "a capital letter and a special character." -#: libs/localization.py:54 +#: libs/localization.py:61 msgid "Congratulations, your account has been created!" msgstr "Congratulations, your account has been created!" -#: libs/localization.py:55 +#: libs/localization.py:62 msgid "Your first and last name have not been changed." msgstr "Your first and last name have not been changed." -#: libs/localization.py:56 +#: libs/localization.py:63 msgid "Your firstname is a bit short, don't you think?" msgstr "Your firstname is a bit short, don't you think?" -#: libs/localization.py:57 +#: libs/localization.py:64 msgid "Your surname is a bit short, don't you think?" msgstr "Your surname is a bit short, don't you think?" -#: libs/localization.py:58 +#: libs/localization.py:65 msgid "Your first and last name have been successfully updated." msgstr "Your first and last name have been successfully updated." -#: libs/localization.py:59 +#: libs/localization.py:66 msgid "Invalid email address. Please try again." msgstr "Invalid email address. Please try again." -#: libs/localization.py:60 +#: libs/localization.py:67 msgid "Email address has not been changed." msgstr "Email address has not been changed." -#: libs/localization.py:61 +#: libs/localization.py:68 msgid "Your email has been successfully updated." msgstr "Your email has been successfully updated." -#: libs/localization.py:62 +#: libs/localization.py:69 msgid "The password entered is the same as the current password." msgstr "The password entered is the same as the current password." -#: libs/localization.py:63 +#: libs/localization.py:70 msgid "Password has been changed!" msgstr "Password has been changed!" -#: libs/localization.py:64 +#: libs/localization.py:71 msgid "Please, type your username for account deletion." msgstr "Please, type your username for account deletion." -#: libs/localization.py:65 +#: libs/localization.py:72 msgid "Account successfully deleted!" msgstr "Account successfully deleted!" -#: libs/localization.py:66 +#: libs/localization.py:73 msgid "Username or password is incorrect!" msgstr "Username or password is incorrect!" -#: libs/localization.py:67 +#: libs/localization.py:74 msgid "Unable to connect to the remote server." msgstr "Unable to connect to the remote server." -#: libs/localization.py:68 +#: libs/localization.py:75 msgid "" "Encountered an unexpected error while communicating with the remote server." msgstr "" "Encountered an unexpected error while communicating with the remote server." -#: libs/localization.py:69 +#: libs/localization.py:76 msgid "User already exists." msgstr "User already exists." -#: libs/localization.py:70 +#: libs/localization.py:77 msgid "Email already exists." msgstr "Email already exists." -#: libs/localization.py:71 +#: libs/localization.py:78 msgid "Forgot your password? Please try again." msgstr "Forgot your password? Please try again." -#: libs/localization.py:72 +#: libs/localization.py:79 msgid "The session has expired." msgstr "The session has expired." -#: libs/localization.py:73 +#: libs/localization.py:80 msgid "Registration is currently closed. We apologize for the inconvenience." msgstr "Registration is currently closed. We apologize for the inconvenience." -#: libs/localization.py: +#: libs/localization.py:81 msgid "Two factor authentication has been impossible." msgstr "Two factor authentication has been impossible." -#: libs/localization.py: +#: libs/localization.py:82 msgid "Two factor authentication has been restored." msgstr "Two factor authentication has been restored." -#: libs/localization.py: +#: libs/localization.py:83 msgid "Two factor authentication has been enabled." msgstr "Two factor authentication has been enabled." -#: libs/localization.py: +#: libs/localization.py:84 msgid "Two factor authentication has been disabled." msgstr "Two factor authentication has been disabled." -#: libs/localization.py: +#: libs/localization.py:85 msgid "Two factor authentication was already disabled." msgstr "Two factor authentication was already disabled." diff --git a/locales/en/LC_MESSAGES/base.mo b/locales/en/LC_MESSAGES/base.mo index 649bb3818d6ac3f607a14cc8488c923519c66ab2..3d34c92b2bfd135ec72cd1c26b1cfc390765902b 100644 GIT binary patch delta 1564 zcmX}sOGs2v9LMp$rdd{wnr1K4>@nIrH0`O`lxYOIP%_hYu1 zW49Qvw+-VOe1^IB4f)tKk9tgDm-*O;L2Sih?860k8`JR-YQLwbzaK>%bPN~bYt%tM zV}$ox);vznLJai_U8s#t`<_EScA3X=?8iKOh-LT^>+mnKr`2*w*?#DA!WgG8Z-qo}K@K+b0S zFpN!DguUqKqyr54a0p8a=A6O95r=J1UcUp(xb!Pe})>(uAfg?4Wb??hBMH>drRO z)ppVM(A}>Xs;#4Qqi)6&J@so9^a5Mq-IMN8Z8LoieK)-}k(8R}tY@@=u2|J-Jly0F zqFYumRP4%+ZdczOHg;Pf&q{CTUYx2$l`zw)8K_j%*3x&nquIw^D`&iQcJ3u}6Z2L6 znl4FAUp&<|73N+b_v5zJJhvo1r0z^U+ic7;4Ugk&yo1{4 zBP_$;7+`%)uKSUXIm9CehcF8-U=VL%6MjVIGUe=2R-+D7hih;T#_$}@ z$5a;4JO$`seG{gWjg44}yRih1VE}Ks*$Bvr$)+i|ox* zVkw4jF?OLgdK}|N>71go9J5l5S&b3Y0t2pBu#ESYs0C8e98U;V+(FavTH7) zGI9-z@EMXE^9MTZ+SeGv0dHL?YDz|*ehQ3o1{(@~K;#26-#7Zph#YN8XU3|vOl$W<)G`&feC zP#er8-x}Y9BRGIMNIvOOM%qy)K8QN-AnJr zH8P4?V8YeMZk4eJYJr$*A5tQQ#MoB~b}M#J{W}Zl%W4Y<4rOZeLSueYOHgC>234Tc zp`BhZbwmTfIwqe`TS|BdWwL{s|bqSv*E53}L&Z+WIi#XVq zKnm<+hEYjZLK}%{LbtD$N9aQTH z>DJZs&swEOY1`M!Nb2V*C6J(O&C-)fesT z@`o&YsD7W-)f2M<(f$MBnXOh&XTQ}ME!!Hkx@-Kck+$Y-k>)0UsHv?!+7pQNc7_vY K({3~QkK}*A7?C6Z diff --git a/locales/en/LC_MESSAGES/base.po b/locales/en/LC_MESSAGES/base.po index 12412c7..7c22d21 100644 --- a/locales/en/LC_MESSAGES/base.po +++ b/locales/en/LC_MESSAGES/base.po @@ -1,21 +1,21 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , 2022. +# FIRST AUTHOR , YEAR. # +#, fuzzy msgid "" msgstr "" -"Project-Id-Version: 0.0.1\n" +"Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-04-07 17:20+0200\n" +"POT-Creation-Date: 2022-04-25 16:52+0200\n" "PO-Revision-Date: 2023-04-07 13:28+0200\n" -"Last-Translator: Aitzol Berasategi \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.3\n" #: libs/localization.py:15 msgid "User" @@ -109,7 +109,7 @@ msgstr "Change your password" msgid "Delete your account" msgstr "Delete your account" -#: libs/localization.py:38 libs/localization.py:46 +#: libs/localization.py:38 libs/localization.py:53 msgid "Welcome" msgstr "Welcome" @@ -153,35 +153,39 @@ msgstr "You must then use the following code to log in. Using the key you will r msgid "Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR." msgstr "Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR." -#: libs/localization.py:45 +#: libs/localization.py:49 +msgid "Code" +msgstr "Code" + +#: libs/localization.py:52 msgid "The session was closed." msgstr "The session was closed." -#: libs/localization.py:47 +#: libs/localization.py:54 msgid "Username must be at least 3 characters long!" msgstr "Username must be at least 3 characters long!" -#: libs/localization.py:48 +#: libs/localization.py:55 msgid "Not allowed characters for the username field." msgstr "Not allowed characters for the username field." -#: libs/localization.py:49 +#: libs/localization.py:56 msgid "Not allowed characters for the firstname field." msgstr "Not allowed characters for the firstname field." -#: libs/localization.py:50 +#: libs/localization.py:57 msgid "Not allowed characters for the surname field." msgstr "Not allowed characters for the surname field." -#: libs/localization.py:51 +#: libs/localization.py:58 msgid "The code is invalid or has expired." msgstr "The code is invalid or has expired." -#: libs/localization.py:52 +#: libs/localization.py:59 msgid "Passwords do not match!" msgstr "Passwords do not match!" -#: libs/localization.py:53 +#: libs/localization.py:60 msgid "" "The password must contain at least 8 characters, at least one number, " "a capital letter and a special character." @@ -189,104 +193,104 @@ msgstr "" "The password must contain at least 8 characters, at least one number, " "a capital letter and a special character." -#: libs/localization.py:54 +#: libs/localization.py:61 msgid "Congratulations, your account has been created!" msgstr "Congratulations, your account has been created!" -#: libs/localization.py:55 +#: libs/localization.py:62 msgid "Your first and last name have not been changed." msgstr "Your first and last name have not been changed." -#: libs/localization.py:56 +#: libs/localization.py:63 msgid "Your firstname is a bit short, don't you think?" msgstr "Your firstname is a bit short, don't you think?" -#: libs/localization.py:57 +#: libs/localization.py:64 msgid "Your surname is a bit short, don't you think?" msgstr "Your surname is a bit short, don't you think?" -#: libs/localization.py:58 +#: libs/localization.py:65 msgid "Your first and last name have been successfully updated." msgstr "Your first and last name have been successfully updated." -#: libs/localization.py:59 +#: libs/localization.py:66 msgid "Invalid email address. Please try again." msgstr "Invalid email address. Please try again." -#: libs/localization.py:60 +#: libs/localization.py:67 msgid "Email address has not been changed." msgstr "Email address has not been changed." -#: libs/localization.py:61 +#: libs/localization.py:68 msgid "Your email has been successfully updated." msgstr "Your email has been successfully updated." -#: libs/localization.py:62 +#: libs/localization.py:69 msgid "The password entered is the same as the current password." msgstr "The password entered is the same as the current password." -#: libs/localization.py:63 +#: libs/localization.py:70 msgid "Password has been changed!" msgstr "Password has been changed!" -#: libs/localization.py:64 +#: libs/localization.py:71 msgid "Please, type your username for account deletion." msgstr "Please, type your username for account deletion." -#: libs/localization.py:65 +#: libs/localization.py:72 msgid "Account successfully deleted!" msgstr "Account successfully deleted!" -#: libs/localization.py:66 +#: libs/localization.py:73 msgid "Username or password is incorrect!" msgstr "Username or password is incorrect!" -#: libs/localization.py:67 +#: libs/localization.py:74 msgid "Unable to connect to the remote server." msgstr "Unable to connect to the remote server." -#: libs/localization.py:68 +#: libs/localization.py:75 msgid "" "Encountered an unexpected error while communicating with the remote server." msgstr "" "Encountered an unexpected error while communicating with the remote server." -#: libs/localization.py:69 +#: libs/localization.py:76 msgid "User already exists." msgstr "User already exists." -#: libs/localization.py:70 +#: libs/localization.py:77 msgid "Email already exists." msgstr "Email already exists." -#: libs/localization.py:71 +#: libs/localization.py:78 msgid "Forgot your password? Please try again." msgstr "Forgot your password? Please try again." -#: libs/localization.py:72 +#: libs/localization.py:79 msgid "The session has expired." msgstr "The session has expired." -#: libs/localization.py:73 +#: libs/localization.py:80 msgid "Registration is currently closed. We apologize for the inconvenience." msgstr "Registration is currently closed. We apologize for the inconvenience." -#: libs/localization.py: -msgid "Two factor authentication has been impossible." +#: libs/localization.py:81 +msgid "Two factor authentication has been impossible." msgstr "Two factor authentication has been impossible." -#: libs/localization.py: +#: libs/localization.py:82 msgid "Two factor authentication has been restored." msgstr "Two factor authentication has been restored." -#: libs/localization.py: +#: libs/localization.py:83 msgid "Two factor authentication has been enabled." msgstr "Two factor authentication has been enabled." -#: libs/localization.py: +#: libs/localization.py:84 msgid "Two factor authentication has been disabled." msgstr "Two factor authentication has been disabled." -#: libs/localization.py: +#: libs/localization.py:85 msgid "Two factor authentication was already disabled." msgstr "Two factor authentication was already disabled." diff --git a/locales/eu/LC_MESSAGES/base.mo b/locales/eu/LC_MESSAGES/base.mo index 2dafaf1993343ec36438696b309530ee5878b661..fa21a48f5b046c630d09c11ef0e641b9491ff8df 100644 GIT binary patch delta 1538 zcmYk*OGs2v9LMp$HZy5ilV)j_kEU#9a@48GUe-+Mj0FZIMPS*&QYeTFqAZIBT)1eH zDYzkLY{d{>!YaIv3h=G-{5L*i9UyIGGKGHphsxMb7RtB=)v5>*n;pau zwxADhVp5Sl;HDQxF^HjMW;^jXYJ=O36Iji92DL%y@{B&L%VJ|xWlniBfm}wNfg7j< z`;ng85SHVpm-;J!*F4~V?LBHejf(giuEsgknaJU!DZ?_*Z&Uy@$ z$YaOv$j^NFnLr}>)Sqfv6AxqyQUq&5_Ox@j1+QTQQy9h1s27!yjsmYmt)obL?J(-A zX+`zA8+T(r>MXoL?c+{TA7xyC0W3jn)QD%X8&!d6)J8v1nR;lfDv*b@7{m~^qB8Dt zo=@Ni>lqB=0A<{alc+$GKe(Zt_6sY}!){vpQ4!Z+4PHdfm)*lhn8GqVNyGivgE~|r zs107C0-8l7SV|cbcqMXF(&vC&bpA7=YW@cG*=SP@Wl8W>uLXnm*&e3aqr<3jsxoSm z#y(~vQ)O2`8kJ17M`uOBD!~Y|+}38kY4t**j=6}rpBW#_au+2xai@IrU1&69NFPH= zkZxKG)dc04V5$MUI6W%3s*W1UU#Cosm>+w&Q6n@qGIhEZj3(R4YR7^n`tY_fReTK< sSwqK74dP^`za9FS9_zVoAN=T!W_NUs7kkd+x|_Q?I@`y4yhAzv0q>x9TmS$7 delta 1513 zcmX}sOGs2v9LMp0>iEiWn$gm+GRtzz=hXP9w9zTeAZXX37)%Lz5D_gT=)piFEs7ej zaTkO{h>-;YC2rc}u3Ge3L`7|)6p2=C0{i~%y?VIke$G8O_kaH9{I8Fq>1gU}C@*8Q zKKcfFcaGUGCiA$_zWK~H;&;^45|(3LzS$ZKV=FcwmmT9)hQnBZBc4|=!1E}EFoV1* zWs?kQnV814_!hbBC$~fR8;h`uw?(iY>+u|}#&Imh3FL+L81?%sYQeKuf-g`DeTB{V z4_k97Vn8q~`_XvMb!Ga1<->K1Oi{`|%g@E^B3#vJ;h15AMbjcpmRzCHe`X z_tc?}_!egn#y)JqL2SgE*n-c!`5*X@=Q7e(CbJm9c~r(B(p1J_)Dcx9YqJ@|?nEoM#W3@KaR}x2^aT537 z2&x92qT68?+zxRhd`K=tg`X-uMaU=9`NGb+;s)DHZ?RxIU!n=p>b_$+Gv0Z!n1 zjN(PMu>mJh3w?*2qJ6;{Of7g5B}CPVtFQ%+Aa!Ne@d>7}8hbhD2p&fj(+yOBDb#{K zpfb#18?^9Zq(qDjbZP;drr*$1|L%)aU~22>B7}ROdSJ<)%&7!7R6K1}b$m{g>G5j8<+3obu~fd3Hav7|$v%wMG~Bdtj_G a)P{55POIVGKDOwKXQTN;McMH{rtm*I5pfj& diff --git a/locales/eu/LC_MESSAGES/base.po b/locales/eu/LC_MESSAGES/base.po index 0dd208e..4481ace 100644 --- a/locales/eu/LC_MESSAGES/base.po +++ b/locales/eu/LC_MESSAGES/base.po @@ -109,7 +109,7 @@ msgstr "Pasahitza eguneratu" msgid "Delete your account" msgstr "Kontua ezabatu" -#: libs/localization.py:38 libs/localization.py:46 +#: libs/localization.py:38 libs/localization.py:53 msgid "Welcome" msgstr "Ongi etorri" @@ -155,134 +155,138 @@ msgstr "" msgid "Two factor authentication is additional security. By enabling this you will be asked at the login, in addition to the user and password, a key you will receive by QR." msgstr "Bi urratseko autentifikazioa segurtasun gehigarri bat da. Hau gaituz saio hasieran erabiltzaile eta pasahitzaz gain QR bidez jasoko duzun gako bat eskatuko zaizu." -#: libs/localization.py:45 +#: libs/localization.py:49 +msgid "Code" +msgstr "Kodea" + +#: libs/localization.py:52 msgid "The session was closed." msgstr "Saioa itxi da." -#: libs/localization.py:47 +#: libs/localization.py:54 msgid "Username must be at least 3 characters long!" msgstr "Erabiltzaile izenak gutxienez 3 karaktere izan behar ditu!" -#: libs/localization.py:48 +#: libs/localization.py:55 msgid "Not allowed characters for the username field." msgstr "Erabiltzaile-izenaren eremurako onartzen ez diren karaktereak." -#: libs/localization.py:49 +#: libs/localization.py:56 msgid "Not allowed characters for the firstname field." msgstr "Izenaren eremurako onartzen ez diren karaktereak." -#: libs/localization.py:50 +#: libs/localization.py:57 msgid "Not allowed characters for the surname field." msgstr "Abizenaren eremurako onartzen ez diren karaktereak." -#: libs/localization.py:51 +#: libs/localization.py:58 msgid "The code is invalid or has expired." msgstr "Kodea baliogabea da edo iraungi egin da." -#: libs/localization.py:52 +#: libs/localization.py:59 msgid "Passwords do not match!" msgstr "Pasahitzak ez datoz bat!" -#: libs/localization.py:53 +#: libs/localization.py:60 msgid "The password must contain at least 8 characters, at least one number, a capital letter and a special character." msgstr "Pasahitzak gutxienez 8 karaktere izan behar ditu, zenbaki bat, hizki larri bat eta karaktere berezi bat." -#: libs/localization.py:54 +#: libs/localization.py:61 msgid "Congratulations, your account has been created!" msgstr "Zorionak, zure kontua sortu da!" -#: libs/localization.py:55 +#: libs/localization.py:62 msgid "Your first and last name have not been changed." msgstr "Zure izen-abizenak ez dira aldatu." -#: libs/localization.py:56 +#: libs/localization.py:63 msgid "Your firstname is a bit short, don't you think?" msgstr "Zure izena labur-xamarra da, ez duzu uste?" -#: libs/localization.py:57 +#: libs/localization.py:64 msgid "Your surname is a bit short, don't you think?" msgstr "Zure abizena labur-xamarra da, ez duzu uste?" -#: libs/localization.py:58 +#: libs/localization.py:65 msgid "Your first and last name have been successfully updated." msgstr "Zure izen-abizenak ongi eguneratu dira." -#: libs/localization.py:59 +#: libs/localization.py:66 msgid "Invalid email address. Please try again." msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez." -#: libs/localization.py:60 +#: libs/localization.py:67 msgid "Email address has not been changed." msgstr "Email helbidea ez da aldatu." -#: libs/localization.py:61 +#: libs/localization.py:68 msgid "Your email has been successfully updated." msgstr "Zure emaila ongi eguneratu da." -#: libs/localization.py:62 +#: libs/localization.py:69 msgid "The password entered is the same as the current password." msgstr "Sartutako pasahitza egungo pasahitzaren berdina da." -#: libs/localization.py:63 +#: libs/localization.py:70 msgid "Password has been changed!" msgstr "Pasahitza eguneratua izan da!" -#: libs/localization.py:64 +#: libs/localization.py:71 msgid "Please, type your username for account deletion." msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez." -#: libs/localization.py:65 +#: libs/localization.py:72 msgid "Account successfully deleted!" msgstr "Kontua ongi ezabatu da!" -#: libs/localization.py:66 +#: libs/localization.py:73 msgid "Username or password is incorrect!" msgstr "Erabiltzaile izena edo pasahitza okerrak dira!" -#: libs/localization.py:67 +#: libs/localization.py:74 msgid "Unable to connect to the remote server." msgstr "Ezinezkoa urruneko zerbitzara konektatzea." -#: libs/localization.py:68 +#: libs/localization.py:75 msgid "Encountered an unexpected error while communicating with the remote server." msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean." -#: libs/localization.py:69 +#: libs/localization.py:76 msgid "User already exists." msgstr "Erabiltzaile hori existitzen da." -#: libs/localization.py:70 +#: libs/localization.py:77 msgid "Email already exists." msgstr "Email hori existitzen da." -#: libs/localization.py:71 +#: libs/localization.py:78 msgid "Forgot your password? Please try again." msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez." -#: libs/localization.py:72 +#: libs/localization.py:79 msgid "The session has expired." msgstr "Saioa iraungi egin da." -#: libs/localization.py:73 +#: libs/localization.py:80 msgid "Registration is currently closed. We apologize for the inconvenience." msgstr "Izen-ematea itxita dago une honetan. Barkatu eragozpenak." -#: libs/localization.py: +#: libs/localization.py:81 msgid "Two factor authentication has been impossible." msgstr "Ezinezkoa izan da bi urratseko autentifikazioa burutzea." -#: libs/localization.py: +#: libs/localization.py:82 msgid "Two factor authentication has been restored." msgstr "Bi urratseko autentifikazioa birgaitua izan da." -#: libs/localization.py: +#: libs/localization.py:83 msgid "Two factor authentication has been enabled." msgstr "Bi urratseko autentifikazioa gaitua izan da." -#: libs/localization.py: +#: libs/localization.py:84 msgid "Two factor authentication has been disabled." msgstr "Bi urratseko autentifikazioa desgaitua izan da." -#: libs/localization.py: +#: libs/localization.py:85 msgid "Two factor authentication was already disabled." msgstr "Bi urratseko autentifikazioa desgaiturik zegoen."