mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-30 00:35: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.
|
# Copyright (c) 2021 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
from typing import Optional, Type
|
from typing import Type, TYPE_CHECKING
|
||||||
|
|
||||||
import keyring
|
import keyring
|
||||||
|
from keyring.backend import KeyringBackend
|
||||||
|
from keyring.errors import NoKeyringError, PasswordSetError
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from cura.OAuth2.Models import BaseModel
|
||||||
|
|
||||||
|
|
||||||
class KeyringAttribute:
|
class KeyringAttribute:
|
||||||
"""
|
"""
|
||||||
@ -15,7 +20,7 @@ class KeyringAttribute:
|
|||||||
if self._store_secure:
|
if self._store_secure:
|
||||||
try:
|
try:
|
||||||
return keyring.get_password("cura", self._keyring_name)
|
return keyring.get_password("cura", self._keyring_name)
|
||||||
except keyring.errors.NoKeyringError:
|
except NoKeyringError:
|
||||||
self._store_secure = False
|
self._store_secure = False
|
||||||
Logger.logException("w", "No keyring backend present")
|
Logger.logException("w", "No keyring backend present")
|
||||||
return getattr(instance, self._name)
|
return getattr(instance, self._name)
|
||||||
@ -27,14 +32,20 @@ class KeyringAttribute:
|
|||||||
setattr(instance, self._name, None)
|
setattr(instance, self._name, None)
|
||||||
try:
|
try:
|
||||||
keyring.set_password("cura", self._keyring_name, value)
|
keyring.set_password("cura", self._keyring_name, value)
|
||||||
except keyring.errors.PasswordSetError:
|
except PasswordSetError:
|
||||||
self._store_secure = False
|
self._store_secure = False
|
||||||
setattr(instance, self._name, value)
|
setattr(instance, self._name, value)
|
||||||
Logger.logException("w", "Keyring access denied")
|
Logger.logException("w", "Keyring access denied")
|
||||||
except keyring.errors.NoKeyringError:
|
except NoKeyringError:
|
||||||
self._store_secure = False
|
self._store_secure = False
|
||||||
setattr(instance, self._name, value)
|
setattr(instance, self._name, value)
|
||||||
Logger.logException("w", "No keyring backend present")
|
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:
|
else:
|
||||||
setattr(instance, self._name, value)
|
setattr(instance, self._name, value)
|
||||||
|
|
||||||
@ -43,7 +54,7 @@ class KeyringAttribute:
|
|||||||
self._keyring_name = name
|
self._keyring_name = name
|
||||||
self._store_secure = False
|
self._store_secure = False
|
||||||
try:
|
try:
|
||||||
self._store_secure = keyring.backend.KeyringBackend.viable
|
self._store_secure = KeyringBackend.viable
|
||||||
except keyring.errors.NoKeyringError:
|
except NoKeyringError:
|
||||||
Logger.logException("w", "Could not use keyring")
|
Logger.logException("w", "Could not use keyring")
|
||||||
setattr(owner, self._name, None)
|
setattr(owner, self._name, None)
|
||||||
|
@ -32,3 +32,5 @@ urllib3==1.25.6
|
|||||||
PyYAML==5.1.2
|
PyYAML==5.1.2
|
||||||
zeroconf==0.24.1
|
zeroconf==0.24.1
|
||||||
comtypes==1.1.7
|
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: "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: "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: "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: "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: "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" });
|
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