This commit is contained in:
aitzol 2023-11-25 15:58:37 +01:00
parent 3a88b7db3b
commit 05821df546
9 changed files with 144 additions and 132 deletions

View File

@ -18,12 +18,12 @@
% if data['secureAuth'] == True: % if data['secureAuth'] == True:
<div class="info">{{ str['2fa-info-1'] }}</div> <div class="info">{{ str['2fa-info-1'] }}</div>
<div class="qr-code"> <div class="qr-code">
<img src="{{'static/tmp/'+data['authToken']+'.png'}}" /> <img src="{{'static/tmp/'+data['authCode']+'.png'}}" />
</div> </div>
<form name="disable2faForm" method="post" action="/disable_2fa"> <form name="disable2faForm" method="post" action="/disable_2fa">
<label for="token">{{ str['token'] }}</label> <label for="code">{{ str['code'] }}</label>
<input id="token" name="token" type="text" value="{{data['authToken']}}" readonly> <input id="" name="code" type="text" value="{{data['authCode']}}" readonly>
<div class="form-buttons"> <div class="form-buttons">
<a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a> <a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a>
@ -36,7 +36,7 @@
<div class="info">{{ str['2fa-info-2'] }}</div> <div class="info">{{ str['2fa-info-2'] }}</div>
<form name="enable2faForm" method="post" action="/enable_2fa"> <form name="enable2faForm" method="post" action="/enable_2fa">
<!--<input id="token" name="token" type="text" value="{{data['authToken']}}" readonly>--> <!--<input id="token" name="token" type="text" value="{{data['authCode']}}" readonly>-->
<div class="form-buttons"> <div class="form-buttons">
<a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a> <a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a>

26
app.py
View File

@ -161,7 +161,7 @@ def post_user():
if(newSession().get()['secureAuth']): if(newSession().get()['secureAuth']):
# encrypt and store the credentials # encrypt and store the credentials
sid = newSession().get()['id'] 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_enc = cryptocode.encrypt(data, newSession().get()['id'])
data_to_url = base64.urlsafe_b64encode(str.encode(data_enc)) data_to_url = base64.urlsafe_b64encode(str.encode(data_enc))
memo.get(data_enc) memo.get(data_enc)
@ -195,8 +195,8 @@ def post_user_step2(path):
newSession() newSession()
return error(i18n.msg[27]) return error(i18n.msg[27])
#if not tools._2fa_validation(form('code'), newSession().get()['authToken']): #if not tools._2fa_validation(form('token'), newSession().get()['authCode']):
if not tools._2fa_validation(form('code'), secret): if not tools._2fa_validation(form('token'), secret):
return error(i18n.msg[6]) return error(i18n.msg[6])
else: else:
@ -533,7 +533,7 @@ def login_user_ldap(conf, username, password):
LOG.debug("%s logged in to %s" % (username, conf['base'])) LOG.debug("%s logged in to %s" % (username, conf['base']))
#generate qr if it doenst exists when 2fa enable #generate qr if it doenst exists when 2fa enable
if(newSession().get()['secureAuth']): if(newSession().get()['secureAuth']):
tools.gen_qr(newSession().get()['authToken']) tools.gen_qr(newSession().get()['authCode'])
#LOGOUT #LOGOUT
def logout(username): 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: with connect_ldap(conf, user=superUser.admin_dn, password=superUser.admin_pwd) as c:
user_dn = find_user_dn(conf, c, username) user_dn = find_user_dn(conf, c, username)
if(action == 'enable'): 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]]}) c.modify(user_dn,{'secureAuth': [MODIFY_REPLACE, [True]]})
elif(action == 'disable'): 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]]}) c.modify(user_dn,{'secureAuth': [MODIFY_REPLACE, [False]]})
#remove file #remove file
try: try:
remove('static/tmp/'+newSession().get()['authToken']+'.png') remove('static/tmp/'+newSession().get()['authCode']+'.png')
except OSError as e: except OSError as e:
LOG.warning(str(e)) LOG.warning(str(e))
#raise Error(e) #raise Error(e)
@ -1014,7 +1014,7 @@ def get_user_data(user_dn, conn):
search_filter = '(objectClass=*)' search_filter = '(objectClass=*)'
conn.search(user_dn, search_filter, conn.search(user_dn, search_filter,
attributes=['active','fakeCn','givenName','sn','uid','mail','devices','ip','lastLogin','secureAuth', attributes=['active','fakeCn','givenName','sn','uid','mail','devices','ip','lastLogin','secureAuth',
'authToken']) 'authCode'])
data = [] data = []
data.append(conn.entries[0].active.values[0]) data.append(conn.entries[0].active.values[0])
data.append(conn.entries[0].fakeCn.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') #ts = datetime.strftime(t, '%Y-%m-%d %H:%M:%S')
data.append(str(conn.entries[0].lastLogin.values[0])[:-6]) data.append(str(conn.entries[0].lastLogin.values[0])[:-6])
data.append(conn.entries[0].secureAuth.values[0]) data.append(conn.entries[0].secureAuth.values[0])
if(conn.entries[0].authToken): if(conn.entries[0].authCode):
data.append(conn.entries[0].authToken.values[0]) data.append(conn.entries[0].authCode.values[0])
return(data) return(data)
@ -1143,9 +1143,9 @@ def newSession():
self.lastLogin = data[8] self.lastLogin = data[8]
self.secureAuth = data[9] self.secureAuth = data[9]
try: try:
self.authToken = data[10] self.authCode = data[10]
except: except:
self.authToken = None self.authCode = None
self.data['active'] = self.active self.data['active'] = self.active
self.data['fakeCn'] = self.fakeCn self.data['fakeCn'] = self.fakeCn
@ -1157,7 +1157,7 @@ def newSession():
self.data['ip'] = self.ip self.data['ip'] = self.ip
self.data['lastLogin'] = self.lastLogin self.data['lastLogin'] = self.lastLogin
self.data['secureAuth'] = self.secureAuth self.data['secureAuth'] = self.secureAuth
self.data['authToken'] = self.authToken self.data['authCode'] = self.authCode
def close(self): def close(self):
self.data.pop('username') self.data.pop('username')

View File

@ -18,8 +18,8 @@
%try: %try:
%if two_factor_authentication: %if two_factor_authentication:
<form method="post" action="/user/{{path}}"> <form method="post" action="/user/{{path}}">
<label for="code">kodea</label> <label for="token">{{ str['token'] }}</label>
<input id="code" name="code" value="" type="text" required autofocus> <input id="token" name="token" value="" type="text" required autofocus>
%end %end
%except: %except:
<form method="post" action="/user"> <form method="post" action="/user">

View File

@ -46,6 +46,7 @@ class LocalizeTo(object):
str_31 = _("Enable") 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_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_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 #messages
msg_00 = _("The session was closed.") msg_00 = _("The session was closed.")
@ -77,7 +78,6 @@ class LocalizeTo(object):
msg_26 = _("Forgot your password? Please try again.") msg_26 = _("Forgot your password? Please try again.")
msg_27 = _("The session has expired.") msg_27 = _("The session has expired.")
msg_28 = _("Registration is currently closed. We apologize for the inconvenience.") msg_28 = _("Registration is currently closed. We apologize for the inconvenience.")
msg_29 = _("Two factor authentication has been impossible.") msg_29 = _("Two factor authentication has been impossible.")
msg_30 = _("Two factor authentication has been restored.") msg_30 = _("Two factor authentication has been restored.")
msg_31 = _("Two factor authentication has been enabled.") 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, '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, '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, '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, 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_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) msg_24, msg_25, msg_26, msg_27, msg_28, msg_29, msg_30, msg_31, msg_32, msg_33)

View File

@ -109,7 +109,7 @@ msgstr "Change your password"
msgid "Delete your account" msgid "Delete your account"
msgstr "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" msgid "Welcome"
msgstr "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." 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." 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." msgid "The session was closed."
msgstr "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!" msgid "Username must be at least 3 characters long!"
msgstr "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." msgid "Not allowed characters for the username field."
msgstr "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." msgid "Not allowed characters for the firstname field."
msgstr "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." msgid "Not allowed characters for the surname field."
msgstr "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." msgid "The code is invalid or has expired."
msgstr "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!" msgid "Passwords do not match!"
msgstr "Passwords do not match!" msgstr "Passwords do not match!"
#: libs/localization.py:53 #: libs/localization.py:60
msgid "" msgid ""
"The password must contain at least 8 characters, at least one number, " "The password must contain at least 8 characters, at least one number, "
"a capital letter and a special character." "a capital letter and a special character."
@ -189,104 +193,104 @@ msgstr ""
"The password must contain at least 8 characters, at least one number, " "The password must contain at least 8 characters, at least one number, "
"a capital letter and a special character." "a capital letter and a special character."
#: libs/localization.py:54 #: libs/localization.py:61
msgid "Congratulations, your account has been created!" msgid "Congratulations, your account has been created!"
msgstr "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." msgid "Your first and last name have not been changed."
msgstr "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?" msgid "Your firstname is a bit short, don't you think?"
msgstr "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?" msgid "Your surname is a bit short, don't you think?"
msgstr "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." msgid "Your first and last name have been successfully updated."
msgstr "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." msgid "Invalid email address. Please try again."
msgstr "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." msgid "Email address has not been changed."
msgstr "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." msgid "Your email has been successfully updated."
msgstr "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." msgid "The password entered is the same as the current password."
msgstr "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!" msgid "Password has been changed!"
msgstr "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." msgid "Please, type your username for account deletion."
msgstr "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!" msgid "Account successfully deleted!"
msgstr "Account successfully deleted!" msgstr "Account successfully deleted!"
#: libs/localization.py:66 #: libs/localization.py:73
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "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." msgid "Unable to connect to the remote server."
msgstr "Unable to connect to the remote server." msgstr "Unable to connect to the remote server."
#: libs/localization.py:68 #: libs/localization.py:75
msgid "" msgid ""
"Encountered an unexpected error while communicating with the remote server." "Encountered an unexpected error while communicating with the remote server."
msgstr "" msgstr ""
"Encountered an unexpected error while communicating with the remote server." "Encountered an unexpected error while communicating with the remote server."
#: libs/localization.py:69 #: libs/localization.py:76
msgid "User already exists." msgid "User already exists."
msgstr "User already exists." msgstr "User already exists."
#: libs/localization.py:70 #: libs/localization.py:77
msgid "Email already exists." msgid "Email already exists."
msgstr "Email already exists." msgstr "Email already exists."
#: libs/localization.py:71 #: libs/localization.py:78
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "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." msgid "The session has expired."
msgstr "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." msgid "Registration is currently closed. We apologize for the inconvenience."
msgstr "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." msgid "Two factor authentication has been impossible."
msgstr "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." msgid "Two factor authentication has been restored."
msgstr "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." msgid "Two factor authentication has been enabled."
msgstr "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." msgid "Two factor authentication has been disabled."
msgstr "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." msgid "Two factor authentication was already disabled."
msgstr "Two factor authentication was already disabled." msgstr "Two factor authentication was already disabled."

Binary file not shown.

View File

@ -1,21 +1,21 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package. # This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <aitzol@lainoa.eus>, 2022. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 0.0.1\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \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" "PO-Revision-Date: 2023-04-07 13:28+0200\n"
"Last-Translator: Aitzol Berasategi <aitzol@lainoa.eus>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <EN@en.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: en\n" "Language: \n"
"MIME-Version: 1.0\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" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
#: libs/localization.py:15 #: libs/localization.py:15
msgid "User" msgid "User"
@ -109,7 +109,7 @@ msgstr "Change your password"
msgid "Delete your account" msgid "Delete your account"
msgstr "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" msgid "Welcome"
msgstr "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." 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." 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." msgid "The session was closed."
msgstr "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!" msgid "Username must be at least 3 characters long!"
msgstr "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." msgid "Not allowed characters for the username field."
msgstr "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." msgid "Not allowed characters for the firstname field."
msgstr "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." msgid "Not allowed characters for the surname field."
msgstr "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." msgid "The code is invalid or has expired."
msgstr "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!" msgid "Passwords do not match!"
msgstr "Passwords do not match!" msgstr "Passwords do not match!"
#: libs/localization.py:53 #: libs/localization.py:60
msgid "" msgid ""
"The password must contain at least 8 characters, at least one number, " "The password must contain at least 8 characters, at least one number, "
"a capital letter and a special character." "a capital letter and a special character."
@ -189,104 +193,104 @@ msgstr ""
"The password must contain at least 8 characters, at least one number, " "The password must contain at least 8 characters, at least one number, "
"a capital letter and a special character." "a capital letter and a special character."
#: libs/localization.py:54 #: libs/localization.py:61
msgid "Congratulations, your account has been created!" msgid "Congratulations, your account has been created!"
msgstr "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." msgid "Your first and last name have not been changed."
msgstr "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?" msgid "Your firstname is a bit short, don't you think?"
msgstr "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?" msgid "Your surname is a bit short, don't you think?"
msgstr "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." msgid "Your first and last name have been successfully updated."
msgstr "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." msgid "Invalid email address. Please try again."
msgstr "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." msgid "Email address has not been changed."
msgstr "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." msgid "Your email has been successfully updated."
msgstr "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." msgid "The password entered is the same as the current password."
msgstr "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!" msgid "Password has been changed!"
msgstr "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." msgid "Please, type your username for account deletion."
msgstr "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!" msgid "Account successfully deleted!"
msgstr "Account successfully deleted!" msgstr "Account successfully deleted!"
#: libs/localization.py:66 #: libs/localization.py:73
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "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." msgid "Unable to connect to the remote server."
msgstr "Unable to connect to the remote server." msgstr "Unable to connect to the remote server."
#: libs/localization.py:68 #: libs/localization.py:75
msgid "" msgid ""
"Encountered an unexpected error while communicating with the remote server." "Encountered an unexpected error while communicating with the remote server."
msgstr "" msgstr ""
"Encountered an unexpected error while communicating with the remote server." "Encountered an unexpected error while communicating with the remote server."
#: libs/localization.py:69 #: libs/localization.py:76
msgid "User already exists." msgid "User already exists."
msgstr "User already exists." msgstr "User already exists."
#: libs/localization.py:70 #: libs/localization.py:77
msgid "Email already exists." msgid "Email already exists."
msgstr "Email already exists." msgstr "Email already exists."
#: libs/localization.py:71 #: libs/localization.py:78
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "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." msgid "The session has expired."
msgstr "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." msgid "Registration is currently closed. We apologize for the inconvenience."
msgstr "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." msgid "Two factor authentication has been impossible."
msgstr "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." msgid "Two factor authentication has been restored."
msgstr "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." msgid "Two factor authentication has been enabled."
msgstr "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." msgid "Two factor authentication has been disabled."
msgstr "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." msgid "Two factor authentication was already disabled."
msgstr "Two factor authentication was already disabled." msgstr "Two factor authentication was already disabled."

Binary file not shown.

View File

@ -109,7 +109,7 @@ msgstr "Pasahitza eguneratu"
msgid "Delete your account" msgid "Delete your account"
msgstr "Kontua ezabatu" msgstr "Kontua ezabatu"
#: libs/localization.py:38 libs/localization.py:46 #: libs/localization.py:38 libs/localization.py:53
msgid "Welcome" msgid "Welcome"
msgstr "Ongi etorri" 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." 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." 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." msgid "The session was closed."
msgstr "Saioa itxi da." msgstr "Saioa itxi da."
#: libs/localization.py:47 #: libs/localization.py:54
msgid "Username must be at least 3 characters long!" msgid "Username must be at least 3 characters long!"
msgstr "Erabiltzaile izenak gutxienez 3 karaktere izan behar ditu!" 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." msgid "Not allowed characters for the username field."
msgstr "Erabiltzaile-izenaren eremurako onartzen ez diren karaktereak." msgstr "Erabiltzaile-izenaren eremurako onartzen ez diren karaktereak."
#: libs/localization.py:49 #: libs/localization.py:56
msgid "Not allowed characters for the firstname field." msgid "Not allowed characters for the firstname field."
msgstr "Izenaren eremurako onartzen ez diren karaktereak." msgstr "Izenaren eremurako onartzen ez diren karaktereak."
#: libs/localization.py:50 #: libs/localization.py:57
msgid "Not allowed characters for the surname field." msgid "Not allowed characters for the surname field."
msgstr "Abizenaren eremurako onartzen ez diren karaktereak." msgstr "Abizenaren eremurako onartzen ez diren karaktereak."
#: libs/localization.py:51 #: libs/localization.py:58
msgid "The code is invalid or has expired." msgid "The code is invalid or has expired."
msgstr "Kodea baliogabea da edo iraungi egin da." msgstr "Kodea baliogabea da edo iraungi egin da."
#: libs/localization.py:52 #: libs/localization.py:59
msgid "Passwords do not match!" msgid "Passwords do not match!"
msgstr "Pasahitzak ez datoz bat!" 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." 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." 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!" msgid "Congratulations, your account has been created!"
msgstr "Zorionak, zure kontua sortu da!" msgstr "Zorionak, zure kontua sortu da!"
#: libs/localization.py:55 #: libs/localization.py:62
msgid "Your first and last name have not been changed." msgid "Your first and last name have not been changed."
msgstr "Zure izen-abizenak ez dira aldatu." 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?" msgid "Your firstname is a bit short, don't you think?"
msgstr "Zure izena labur-xamarra da, ez duzu uste?" 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?" msgid "Your surname is a bit short, don't you think?"
msgstr "Zure abizena labur-xamarra da, ez duzu uste?" 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." msgid "Your first and last name have been successfully updated."
msgstr "Zure izen-abizenak ongi eguneratu dira." msgstr "Zure izen-abizenak ongi eguneratu dira."
#: libs/localization.py:59 #: libs/localization.py:66
msgid "Invalid email address. Please try again." msgid "Invalid email address. Please try again."
msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez." msgstr "Baliogabeko email helbidea. Saia zaitez berriz, mesedez."
#: libs/localization.py:60 #: libs/localization.py:67
msgid "Email address has not been changed." msgid "Email address has not been changed."
msgstr "Email helbidea ez da aldatu." msgstr "Email helbidea ez da aldatu."
#: libs/localization.py:61 #: libs/localization.py:68
msgid "Your email has been successfully updated." msgid "Your email has been successfully updated."
msgstr "Zure emaila ongi eguneratu da." 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." msgid "The password entered is the same as the current password."
msgstr "Sartutako pasahitza egungo pasahitzaren berdina da." msgstr "Sartutako pasahitza egungo pasahitzaren berdina da."
#: libs/localization.py:63 #: libs/localization.py:70
msgid "Password has been changed!" msgid "Password has been changed!"
msgstr "Pasahitza eguneratua izan da!" msgstr "Pasahitza eguneratua izan da!"
#: libs/localization.py:64 #: libs/localization.py:71
msgid "Please, type your username for account deletion." msgid "Please, type your username for account deletion."
msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez." msgstr "Kontua ezabatzeko idatzi zure erabiltzaile izena, mesedez."
#: libs/localization.py:65 #: libs/localization.py:72
msgid "Account successfully deleted!" msgid "Account successfully deleted!"
msgstr "Kontua ongi ezabatu da!" msgstr "Kontua ongi ezabatu da!"
#: libs/localization.py:66 #: libs/localization.py:73
msgid "Username or password is incorrect!" msgid "Username or password is incorrect!"
msgstr "Erabiltzaile izena edo pasahitza okerrak dira!" msgstr "Erabiltzaile izena edo pasahitza okerrak dira!"
#: libs/localization.py:67 #: libs/localization.py:74
msgid "Unable to connect to the remote server." msgid "Unable to connect to the remote server."
msgstr "Ezinezkoa urruneko zerbitzara konektatzea." msgstr "Ezinezkoa urruneko zerbitzara konektatzea."
#: libs/localization.py:68 #: libs/localization.py:75
msgid "Encountered an unexpected error while communicating with the remote server." msgid "Encountered an unexpected error while communicating with the remote server."
msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean." msgstr "Ezusteko errore bat gertatu da urruneko zerbitzariarekin komunikatzean."
#: libs/localization.py:69 #: libs/localization.py:76
msgid "User already exists." msgid "User already exists."
msgstr "Erabiltzaile hori existitzen da." msgstr "Erabiltzaile hori existitzen da."
#: libs/localization.py:70 #: libs/localization.py:77
msgid "Email already exists." msgid "Email already exists."
msgstr "Email hori existitzen da." msgstr "Email hori existitzen da."
#: libs/localization.py:71 #: libs/localization.py:78
msgid "Forgot your password? Please try again." msgid "Forgot your password? Please try again."
msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez." msgstr "Zure pasahitza ahaztu duzu? Saia zeitez berriz, mesedez."
#: libs/localization.py:72 #: libs/localization.py:79
msgid "The session has expired." msgid "The session has expired."
msgstr "Saioa iraungi egin da." msgstr "Saioa iraungi egin da."
#: libs/localization.py:73 #: libs/localization.py:80
msgid "Registration is currently closed. We apologize for the inconvenience." msgid "Registration is currently closed. We apologize for the inconvenience."
msgstr "Izen-ematea itxita dago une honetan. Barkatu eragozpenak." msgstr "Izen-ematea itxita dago une honetan. Barkatu eragozpenak."
#: libs/localization.py: #: libs/localization.py:81
msgid "Two factor authentication has been impossible." msgid "Two factor authentication has been impossible."
msgstr "Ezinezkoa izan da bi urratseko autentifikazioa burutzea." msgstr "Ezinezkoa izan da bi urratseko autentifikazioa burutzea."
#: libs/localization.py: #: libs/localization.py:82
msgid "Two factor authentication has been restored." msgid "Two factor authentication has been restored."
msgstr "Bi urratseko autentifikazioa birgaitua izan da." msgstr "Bi urratseko autentifikazioa birgaitua izan da."
#: libs/localization.py: #: libs/localization.py:83
msgid "Two factor authentication has been enabled." msgid "Two factor authentication has been enabled."
msgstr "Bi urratseko autentifikazioa gaitua izan da." msgstr "Bi urratseko autentifikazioa gaitua izan da."
#: libs/localization.py: #: libs/localization.py:84
msgid "Two factor authentication has been disabled." msgid "Two factor authentication has been disabled."
msgstr "Bi urratseko autentifikazioa desgaitua izan da." msgstr "Bi urratseko autentifikazioa desgaitua izan da."
#: libs/localization.py: #: libs/localization.py:85
msgid "Two factor authentication was already disabled." msgid "Two factor authentication was already disabled."
msgstr "Bi urratseko autentifikazioa desgaiturik zegoen." msgstr "Bi urratseko autentifikazioa desgaiturik zegoen."