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 649bb38..3d34c92 100644 Binary files a/locales/en/LC_MESSAGES/base.mo and b/locales/en/LC_MESSAGES/base.mo differ 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 2dafaf1..fa21a48 100644 Binary files a/locales/eu/LC_MESSAGES/base.mo and b/locales/eu/LC_MESSAGES/base.mo differ 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."