[root dialog] 3 password attempts for root authentication

This commit is contained in:
Vinicius Moreira
2019-10-21 19:13:14 -03:00
parent d80cac19af
commit a33ede646a
5 changed files with 29 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [0.7.1] 2019- ## [0.7.1] 2019-
### Improvements ### Improvements
- 3 password attempts for root authentication
- AUR: - AUR:
- showing a "user-friendly" popup when there are integrity issues with the source-files of a building package - showing a "user-friendly" popup when there are integrity issues with the source-files of a building package
### Fixes ### Fixes

View File

@@ -13,28 +13,41 @@ def is_root():
return os.getuid() == 0 return os.getuid() == 0
def ask_root_password(locale_keys: dict): def ask_root_password(i18n: dict):
diag = QInputDialog() diag = QInputDialog()
diag.setStyleSheet("""QLineEdit { border-radius: 5px; font-size: 16px }""") diag.setStyleSheet("""QLineEdit { border-radius: 5px; font-size: 16px }""")
diag.setInputMode(QInputDialog.TextInput) diag.setInputMode(QInputDialog.TextInput)
diag.setTextEchoMode(QLineEdit.Password) diag.setTextEchoMode(QLineEdit.Password)
diag.setWindowIcon(QIcon(resource.get_path('img/lock.png'))) diag.setWindowIcon(QIcon(resource.get_path('img/lock.png')))
diag.setWindowTitle(locale_keys['popup.root.title']) diag.setWindowTitle(i18n['popup.root.title'])
diag.setLabelText('') diag.setLabelText('')
diag.setCancelButtonText(locale_keys['popup.button.cancel']) diag.setCancelButtonText(i18n['popup.button.cancel'])
diag.resize(400, 200) diag.resize(400, 200)
ok = diag.exec_() for attempt in range(3):
if ok: ok = diag.exec_()
if not validate_password(diag.textValue()):
show_message(title=locale_keys['popup.root.bad_password.title'],
body=locale_keys['popup.root.bad_password.body'],
type_=MessageType.ERROR)
ok = False
return diag.textValue(), ok if ok:
if not validate_password(diag.textValue()):
body = i18n['popup.root.bad_password.body']
if attempt == 2:
body += '. ' + i18n['popup.root.bad_password.last_try']
show_message(title=i18n['popup.root.bad_password.title'],
body=body,
type_=MessageType.ERROR)
ok = False
diag.setTextValue('')
if ok:
return diag.textValue(), ok
else:
break
return '', False
def validate_password(password: str) -> bool: def validate_password(password: str) -> bool:

View File

@@ -38,6 +38,7 @@ manage_window.checkbox.show_details=Show details
popup.root.title=Requires your password to continue popup.root.title=Requires your password to continue
popup.root.bad_password.title=Error popup.root.bad_password.title=Error
popup.root.bad_password.body=Wrong password popup.root.bad_password.body=Wrong password
popup.root.bad_password.last_try=Attempts finished. Action cancelled.
popup.history.title=History popup.history.title=History
popup.history.selected.tooltip=Current version popup.history.selected.tooltip=Current version
popup.button.yes=Yes popup.button.yes=Yes

View File

@@ -39,6 +39,7 @@ manage_window.checkbox.show_details=Mostrar detalles
popup.root.title=Requiere tu contraseña para continuar popup.root.title=Requiere tu contraseña para continuar
popup.root.bad_password.title=Error popup.root.bad_password.title=Error
popup.root.bad_password.body=Contraseña incorrecta popup.root.bad_password.body=Contraseña incorrecta
popup.root.bad_password.last_try=Intentos finalizados. Acción cancelada.
popup.history.title=Historia popup.history.title=Historia
popup.history.selected.tooltip=Versión actual popup.history.selected.tooltip=Versión actual
popup.button.yes=Sí popup.button.yes=Sí

View File

@@ -39,6 +39,7 @@ manage_window.checkbox.show_details=Mostrar detalhes
popup.root.title=Requer sua senha para prosseguir popup.root.title=Requer sua senha para prosseguir
popup.root.bad_password.title=Erro popup.root.bad_password.title=Erro
popup.root.bad_password.body=Senha incorreta popup.root.bad_password.body=Senha incorreta
popup.root.bad_password.last_try=Tentativas finalizadas. Ação cancelada.
popup.history.title=Histórico popup.history.title=Histórico
popup.history.selected.tooltip=Versão atual popup.history.selected.tooltip=Versão atual
popup.button.yes=Sim popup.button.yes=Sim