2fa-2.0
This commit is contained in:
parent
3a88b7db3b
commit
05821df546
8
_2fa.tpl
8
_2fa.tpl
@ -18,12 +18,12 @@
|
||||
% if data['secureAuth'] == True:
|
||||
<div class="info">{{ str['2fa-info-1'] }}</div>
|
||||
<div class="qr-code">
|
||||
<img src="{{'static/tmp/'+data['authToken']+'.png'}}" />
|
||||
<img src="{{'static/tmp/'+data['authCode']+'.png'}}" />
|
||||
</div>
|
||||
<form name="disable2faForm" method="post" action="/disable_2fa">
|
||||
|
||||
<label for="token">{{ str['token'] }}</label>
|
||||
<input id="token" name="token" type="text" value="{{data['authToken']}}" readonly>
|
||||
<label for="code">{{ str['code'] }}</label>
|
||||
<input id="" name="code" type="text" value="{{data['authCode']}}" readonly>
|
||||
|
||||
<div class="form-buttons">
|
||||
<a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a>
|
||||
@ -36,7 +36,7 @@
|
||||
<div class="info">{{ str['2fa-info-2'] }}</div>
|
||||
<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">
|
||||
<a href="/user"><button class="green" type="button">{{ str['back'] }}</button></a>
|
||||
|
26
app.py
26
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')
|
||||
|
@ -18,8 +18,8 @@
|
||||
%try:
|
||||
%if two_factor_authentication:
|
||||
<form method="post" action="/user/{{path}}">
|
||||
<label for="code">kodea</label>
|
||||
<input id="code" name="code" value="" type="text" required autofocus>
|
||||
<label for="token">{{ str['token'] }}</label>
|
||||
<input id="token" name="token" value="" type="text" required autofocus>
|
||||
%end
|
||||
%except:
|
||||
<form method="post" action="/user">
|
||||
|
@ -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)
|
||||
|
@ -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."
|
||||
|
Binary file not shown.
@ -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 <aitzol@lainoa.eus>, 2022.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 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 <aitzol@lainoa.eus>\n"
|
||||
"Language-Team: LANGUAGE <EN@en.org>\n"
|
||||
"Language: en\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\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:
|
||||
#: 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."
|
||||
|
Binary file not shown.
@ -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."
|
||||
|
Loading…
Reference in New Issue
Block a user