Use OpenPypeSecureRegistry for authentication

This commit is contained in:
Félix David 2022-03-02 11:38:47 +01:00
parent e8831947e6
commit cde925c09b
3 changed files with 33 additions and 24 deletions

View file

@ -6,4 +6,4 @@ be found by OpenPype discovery.
from .kitsu_module import KitsuModule
__all__ = ("KitsuModule", )
__all__ = ("KitsuModule",)

View file

@ -8,6 +8,7 @@ from pymongo import DeleteOne, UpdateOne
from avalon.api import AvalonMongoDB
from openpype.api import get_project_settings
from openpype.lib.local_settings import OpenPypeSecureRegistry
from openpype.modules import OpenPypeModule, ModulesManager
from openpype.settings.lib import get_local_settings
from openpype_interfaces import IPluginPaths, ITrayAction
@ -28,7 +29,9 @@ class KitsuModule(OpenPypeModule, IPluginPaths, ITrayAction):
def initialize(self, settings):
"""Initialization of module."""
module_settings = settings[self.name]
local_kitsu_settings = get_local_settings().get("kitsu", {})
# Get user registry
user_registry = OpenPypeSecureRegistry("kitsu_user")
# Enabled by settings
self.enabled = module_settings.get("enabled", False)
@ -49,8 +52,8 @@ class KitsuModule(OpenPypeModule, IPluginPaths, ITrayAction):
self.server_url = kitsu_url
# Set credentials
self.kitsu_login = local_kitsu_settings["login"]
self.kitsu_password = local_kitsu_settings["password"]
self.kitsu_login = user_registry.get_item("login", None)
self.kitsu_password = user_registry.get_item("password", None)
# Prepare variables that can be used or set afterwards
self._connected_modules = None
@ -359,7 +362,13 @@ def sync_openpype(listen: bool):
gazu.client.set_host(os.environ["KITSU_SERVER"])
# Authenticate
gazu.log_in(os.environ["KITSU_LOGIN"], os.environ["KITSU_PWD"])
kitsu_login = os.environ.get("KITSU_LOGIN")
kitsu_pwd = os.environ.get("KITSU_PWD")
if not kitsu_login or not kitsu_pwd: # Sentinel to log-in
log_in_dialog()
return
gazu.log_in(kitsu_login, kitsu_pwd)
# Iterate projects
dbcon = AvalonMongoDB()
@ -462,6 +471,11 @@ def listen():
@cli_main.command()
def sign_in():
"""Sign-in command."""
log_in_dialog()
def log_in_dialog():
"""Show credentials dialog."""
from openpype.tools.utils.lib import qt_app_context

View file

@ -4,11 +4,10 @@ import gazu
from Qt import QtWidgets, QtCore, QtGui
from openpype import style
from openpype.lib.local_settings import OpenPypeSecureRegistry
from openpype.resources import get_resource
from openpype.settings.lib import (
get_local_settings,
get_system_settings,
save_local_settings,
)
from openpype.widgets.password_dialog import PressHoverButton
@ -26,8 +25,11 @@ class PasswordDialog(QtWidgets.QDialog):
self.resize(300, 120)
system_settings = get_system_settings()
kitsu_settings = get_local_settings().get("kitsu", {})
remembered = kitsu_settings.get("remember")
user_registry = OpenPypeSecureRegistry("kitsu_user")
remembered = bool(
user_registry.get_item("login", None)
or user_registry.get_item("password", None)
)
self._final_result = None
self._connectable = bool(
@ -47,7 +49,7 @@ class PasswordDialog(QtWidgets.QDialog):
login_input = QtWidgets.QLineEdit(
login_widget,
text=kitsu_settings.get("login") if remembered else None,
text=user_registry.get_item("login") if remembered else None,
)
login_input.setPlaceholderText("Your Kitsu account login...")
@ -63,7 +65,7 @@ class PasswordDialog(QtWidgets.QDialog):
password_input = QtWidgets.QLineEdit(
password_widget,
text=kitsu_settings.get("password") if remembered else None,
text=user_registry.get_item("password") if remembered else None,
)
password_input.setPlaceholderText("Your password...")
password_input.setEchoMode(QtWidgets.QLineEdit.Password)
@ -161,30 +163,23 @@ class PasswordDialog(QtWidgets.QDialog):
os.environ["KITSU_LOGIN"] = login_value
os.environ["KITSU_PWD"] = pwd_value
# Get settings
local_settings = get_local_settings()
local_settings.setdefault("kitsu", {})
# Get user registry
user_registry = OpenPypeSecureRegistry("kitsu_user")
# Remember password cases
if remember:
# Set local settings
local_settings["kitsu"]["login"] = login_value
local_settings["kitsu"]["password"] = pwd_value
user_registry.set_item("login", login_value)
user_registry.set_item("password", pwd_value)
else:
# Clear local settings
local_settings["kitsu"]["login"] = None
local_settings["kitsu"]["password"] = None
user_registry.delete_item("login")
user_registry.delete_item("password")
# Clear input fields
self.login_input.clear()
self.password_input.clear()
# Keep 'remember' parameter
local_settings["kitsu"]["remember"] = remember
# Save settings
save_local_settings(local_settings)
self._final_result = True
self.close()