mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-26 13:52:15 +01:00
changed muster authentication
This commit is contained in:
parent
8f75f714e2
commit
c65af56048
4 changed files with 47 additions and 63 deletions
|
|
@ -4,6 +4,7 @@ from Qt import QtWidgets
|
|||
import os
|
||||
import json
|
||||
from .widget_login import MusterLogin
|
||||
from avalon.vendor import requests
|
||||
|
||||
|
||||
class MusterModule:
|
||||
|
|
@ -70,13 +71,39 @@ class MusterModule:
|
|||
|
||||
return credentials
|
||||
|
||||
def save_credentials(self, username, password):
|
||||
def get_auth_token(self, username, password):
|
||||
"""
|
||||
Authenticate user with Muster and get authToken from server.
|
||||
"""
|
||||
MUSTER_REST_URL = os.environ.get("MUSTER_REST_URL")
|
||||
if not MUSTER_REST_URL:
|
||||
raise AttributeError("Muster REST API url not set")
|
||||
params = {
|
||||
'username': username,
|
||||
'password': password
|
||||
}
|
||||
api_entry = '/api/login'
|
||||
response = requests.post(
|
||||
MUSTER_REST_URL + api_entry, params=params)
|
||||
if response.status_code != 200:
|
||||
self.log.error(
|
||||
'Cannot log into Muster: {}'.format(response.status_code))
|
||||
raise Exception('Cannot login into Muster.')
|
||||
|
||||
try:
|
||||
token = response.json()['ResponseData']['authToken']
|
||||
except ValueError as e:
|
||||
self.log.error('Invalid response from Muster server {}'.format(e))
|
||||
raise Exception('Invalid response from Muster while logging in.')
|
||||
|
||||
self.save_credentials(token)
|
||||
|
||||
def save_credentials(self, token):
|
||||
"""
|
||||
Save credentials to JSON file
|
||||
"""
|
||||
data = {
|
||||
'username': username,
|
||||
'password': password
|
||||
'token': token
|
||||
}
|
||||
|
||||
file = open(self.cred_path, 'w')
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ class MusterLogin(QtWidgets.QWidget):
|
|||
self._close_widget()
|
||||
|
||||
def save_credentials(self, username, password):
|
||||
self.parent_widget.save_credentials(username, password)
|
||||
self.parent_widget.get_auth_token(username, password)
|
||||
|
||||
def closeEvent(self, event):
|
||||
event.ignore()
|
||||
|
|
|
|||
|
|
@ -55,14 +55,12 @@ class CreateRenderGlobals(avalon.maya.Creator):
|
|||
else:
|
||||
self.log.info(">>> Loading Muster credentials ...")
|
||||
self._load_credentials()
|
||||
self.log.info(">>> Logging in Muster ...")
|
||||
self.log.info(">>> Getting pools ...")
|
||||
try:
|
||||
self._authenticate()
|
||||
pools = self._get_muster_pools()
|
||||
except requests.exceptions.ConnectionError:
|
||||
self.log.error("Cannot connect to Muster API endpoint.")
|
||||
raise RuntimeError("Cannot connect to {}".format(muster_url))
|
||||
self.log.info(">>> Getting pools ...")
|
||||
pools = self._get_muster_pools()
|
||||
pool_names = []
|
||||
for pool in pools:
|
||||
self.log.info(" - pool: {}".format(pool['name']))
|
||||
|
|
@ -105,6 +103,10 @@ class CreateRenderGlobals(avalon.maya.Creator):
|
|||
"""
|
||||
Load Muster credentials from file and set `MUSTER_USER`,
|
||||
`MUSTER_PASSWORD`, `MUSTER_REST_URL` is loaded from presets.
|
||||
|
||||
.. todo::
|
||||
|
||||
Show login dialog if access token is invalid or missing.
|
||||
"""
|
||||
app_dir = os.path.normpath(
|
||||
appdirs.user_data_dir('pype-app', 'pype')
|
||||
|
|
@ -113,37 +115,14 @@ class CreateRenderGlobals(avalon.maya.Creator):
|
|||
fpath = os.path.join(app_dir, file_name)
|
||||
file = open(fpath, 'r')
|
||||
muster_json = json.load(file)
|
||||
self.MUSTER_USER = muster_json.get('username', None)
|
||||
self.MUSTER_PASSWORD = muster_json.get('password', None)
|
||||
self._token = muster_json.get('token', None)
|
||||
if not self._token:
|
||||
raise RuntimeError("Invalid access token for Muster")
|
||||
file.close()
|
||||
self.MUSTER_REST_URL = os.environ.get("MUSTER_REST_URL")
|
||||
if not self.MUSTER_REST_URL:
|
||||
raise AttributeError("Muster REST API url not set")
|
||||
|
||||
def _authenticate(self):
|
||||
"""
|
||||
Authenticate user with Muster and get authToken from server.
|
||||
"""
|
||||
params = {
|
||||
'username': self.MUSTER_USER,
|
||||
'password': self.MUSTER_PASSWORD
|
||||
}
|
||||
api_entry = '/api/login'
|
||||
response = requests.post(
|
||||
self.MUSTER_REST_URL + api_entry, params=params)
|
||||
if response.status_code != 200:
|
||||
self.log.error(
|
||||
'Cannot log into Muster: {}'.format(response.status_code))
|
||||
raise Exception('Cannot login into Muster.')
|
||||
|
||||
try:
|
||||
self._token = response.json()['ResponseData']['authToken']
|
||||
except ValueError as e:
|
||||
self.log.error('Invalid response from Muster server {}'.format(e))
|
||||
raise Exception('Invalid response from Muster while logging in.')
|
||||
|
||||
return self._token
|
||||
|
||||
def _get_muster_pools(self):
|
||||
"""
|
||||
Get render pools from muster
|
||||
|
|
|
|||
|
|
@ -141,13 +141,15 @@ class MayaSubmitMuster(pyblish.api.InstancePlugin):
|
|||
icon = "satellite-dish"
|
||||
|
||||
_token = None
|
||||
_user = None
|
||||
_password = None
|
||||
|
||||
def _load_credentials(self):
|
||||
"""
|
||||
Load Muster credentials from file and set `MUSTER_USER`,
|
||||
`MUSTER_PASSWORD`, `MUSTER_REST_URL` is loaded from presets.
|
||||
|
||||
.. todo::
|
||||
|
||||
Show login dialog if access token is invalid or missing.
|
||||
"""
|
||||
app_dir = os.path.normpath(
|
||||
appdirs.user_data_dir('pype-app', 'pype')
|
||||
|
|
@ -156,37 +158,14 @@ class MayaSubmitMuster(pyblish.api.InstancePlugin):
|
|||
fpath = os.path.join(app_dir, file_name)
|
||||
file = open(fpath, 'r')
|
||||
muster_json = json.load(file)
|
||||
self.MUSTER_USER = muster_json.get('username', None)
|
||||
self.MUSTER_PASSWORD = muster_json.get('password', None)
|
||||
self._token = muster_json.get('token', None)
|
||||
if not self._token:
|
||||
raise RuntimeError("Invalid access token for Muster")
|
||||
file.close()
|
||||
self.MUSTER_REST_URL = os.environ.get("MUSTER_REST_URL")
|
||||
if not self.MUSTER_REST_URL:
|
||||
raise AttributeError("Muster REST API url not set")
|
||||
|
||||
def _authenticate(self):
|
||||
"""
|
||||
Authenticate user with Muster and get authToken from server.
|
||||
"""
|
||||
params = {
|
||||
'username': self.MUSTER_USER,
|
||||
'password': self.MUSTER_PASSWORD
|
||||
}
|
||||
api_entry = '/api/login'
|
||||
response = requests.post(
|
||||
self.MUSTER_REST_URL + api_entry, params=params)
|
||||
if response.status_code != 200:
|
||||
self.log.error(
|
||||
'Cannot log into Muster: {}'.format(response.status_code))
|
||||
raise Exception('Cannot login into Muster.')
|
||||
|
||||
try:
|
||||
self._token = response.json()['ResponseData']['authToken']
|
||||
except ValueError as e:
|
||||
self.log.error('Invalid response from Muster server {}'.format(e))
|
||||
raise Exception('Invalid response from Muster while logging in.')
|
||||
|
||||
return self._token
|
||||
|
||||
def _get_templates(self):
|
||||
"""
|
||||
Get Muster templates from server.
|
||||
|
|
@ -273,7 +252,6 @@ class MayaSubmitMuster(pyblish.api.InstancePlugin):
|
|||
raise RuntimeError("MUSTER_REST_URL not set")
|
||||
|
||||
self._load_credentials()
|
||||
self._authenticate()
|
||||
# self._get_templates()
|
||||
|
||||
context = instance.context
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue