mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-30 00:45:13 +08:00
Merge branch 'CURA-7180_keyring_storage' into big_merge_v49
This commit is contained in:
commit
315898864c
@ -1,11 +1,16 @@
|
||||
# Copyright (c) 2021 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from typing import Optional, Type
|
||||
from typing import Type, TYPE_CHECKING
|
||||
|
||||
import keyring
|
||||
from keyring.backend import KeyringBackend
|
||||
from keyring.errors import NoKeyringError, PasswordSetError
|
||||
|
||||
from UM.Logger import Logger
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from cura.OAuth2.Models import BaseModel
|
||||
|
||||
|
||||
class KeyringAttribute:
|
||||
"""
|
||||
@ -15,7 +20,7 @@ class KeyringAttribute:
|
||||
if self._store_secure:
|
||||
try:
|
||||
return keyring.get_password("cura", self._keyring_name)
|
||||
except keyring.errors.NoKeyringError:
|
||||
except NoKeyringError:
|
||||
self._store_secure = False
|
||||
Logger.logException("w", "No keyring backend present")
|
||||
return getattr(instance, self._name)
|
||||
@ -27,14 +32,20 @@ class KeyringAttribute:
|
||||
setattr(instance, self._name, None)
|
||||
try:
|
||||
keyring.set_password("cura", self._keyring_name, value)
|
||||
except keyring.errors.PasswordSetError:
|
||||
except PasswordSetError:
|
||||
self._store_secure = False
|
||||
setattr(instance, self._name, value)
|
||||
Logger.logException("w", "Keyring access denied")
|
||||
except keyring.errors.NoKeyringError:
|
||||
except NoKeyringError:
|
||||
self._store_secure = False
|
||||
setattr(instance, self._name, value)
|
||||
Logger.logException("w", "No keyring backend present")
|
||||
except BaseException as e:
|
||||
# A BaseException can occur in Windows when the keyring attempts to write a token longer than 1024
|
||||
# characters in the Windows Credentials Manager.
|
||||
self._store_secure = False
|
||||
setattr(instance, self._name, value)
|
||||
Logger.log("w", "Keyring failed: {}".format(e))
|
||||
else:
|
||||
setattr(instance, self._name, value)
|
||||
|
||||
@ -43,7 +54,7 @@ class KeyringAttribute:
|
||||
self._keyring_name = name
|
||||
self._store_secure = False
|
||||
try:
|
||||
self._store_secure = keyring.backend.KeyringBackend.viable
|
||||
except keyring.errors.NoKeyringError:
|
||||
self._store_secure = KeyringBackend.viable
|
||||
except NoKeyringError:
|
||||
Logger.logException("w", "Could not use keyring")
|
||||
setattr(owner, self._name, None)
|
||||
|
@ -32,3 +32,5 @@ urllib3==1.25.6
|
||||
PyYAML==5.1.2
|
||||
zeroconf==0.24.1
|
||||
comtypes==1.1.7
|
||||
pywin32==300
|
||||
keyring==23.0.1
|
||||
|
@ -159,6 +159,7 @@ UM.Dialog
|
||||
projectsModel.append({ name: "libnest2d", description: catalog.i18nc("@label", "Polygon packing library, developed by Prusa Research"), license: "LGPL", url: "https://github.com/tamasmeszaros/libnest2d" });
|
||||
projectsModel.append({ name: "pynest2d", description: catalog.i18nc("@label", "Python bindings for libnest2d"), license: "LGPL", url: "https://github.com/Ultimaker/pynest2d" });
|
||||
projectsModel.append({ name: "keyring", description: catalog.i18nc("@label", "Support library for system keyring access"), license: "MIT", url: "https://github.com/jaraco/keyring" });
|
||||
projectsModel.append({ name: "pywin32", description: catalog.i18nc("@label", "Python extensions for Microsoft Windows"), license: "PSF", url: "https://github.com/mhammond/pywin32" });
|
||||
projectsModel.append({ name: "Noto Sans", description: catalog.i18nc("@label", "Font"), license: "Apache 2.0", url: "https://www.google.com/get/noto/" });
|
||||
projectsModel.append({ name: "Font-Awesome-SVG-PNG", description: catalog.i18nc("@label", "SVG icons"), license: "SIL OFL 1.1", url: "https://github.com/encharm/Font-Awesome-SVG-PNG" });
|
||||
projectsModel.append({ name: "AppImageKit", description: catalog.i18nc("@label", "Linux cross-distribution application deployment"), license: "MIT", url: "https://github.com/AppImage/AppImageKit" });
|
||||
|
Loading…
x
Reference in New Issue
Block a user