work
save startup blend for animation tab & whatnot
This commit is contained in:
@@ -23,13 +23,24 @@ import random
|
||||
import secrets
|
||||
import string
|
||||
import time
|
||||
import uuid
|
||||
from urllib.parse import quote as urlquote
|
||||
from webbrowser import open_new_tab
|
||||
|
||||
import bpy
|
||||
from bpy.props import BoolProperty
|
||||
|
||||
from . import client_lib, client_tasks, datas, global_vars, reports, tasks_queue, utils
|
||||
from . import (
|
||||
client_lib,
|
||||
client_tasks,
|
||||
datas,
|
||||
global_vars,
|
||||
reports,
|
||||
search_price,
|
||||
tasks_queue,
|
||||
utils,
|
||||
)
|
||||
|
||||
|
||||
if bpy.app.version >= (4, 2, 0):
|
||||
from . import override_extension_draw
|
||||
@@ -104,6 +115,7 @@ def clean_login_data():
|
||||
preferences.api_key = ""
|
||||
preferences.api_key_timeout = 0
|
||||
global_vars.BKIT_PROFILE = datas.MineProfile()
|
||||
search_price.clear_price_cache()
|
||||
# Cleanup also the api key in the extensions repository setting and clean the cache
|
||||
if bpy.app.version >= (4, 2, 0):
|
||||
override_extension_draw.ensure_repository(api_key="")
|
||||
@@ -128,14 +140,19 @@ def login(signup: bool) -> None:
|
||||
code_verifier, code_challenge = generate_pkce_pair()
|
||||
state = secrets.token_urlsafe()
|
||||
client_lib.send_oauth_verification_data(code_verifier, state)
|
||||
authorize_url = f"/o/authorize?client_id={CLIENT_ID}&response_type=code&state={state}&redirect_uri={redirect_URI}&code_challenge={code_challenge}&code_challenge_method=S256"
|
||||
system_id = get_system_id()
|
||||
authorize_url = (
|
||||
f"/o/authorize?client_id={CLIENT_ID}&response_type=code&state={state}"
|
||||
f"&redirect_uri={redirect_URI}&code_challenge={code_challenge}"
|
||||
f"&code_challenge_method=S256&system_id={system_id}"
|
||||
)
|
||||
if signup:
|
||||
authorize_url = urlquote(authorize_url)
|
||||
authorize_url = f"{global_vars.SERVER}/accounts/register/?next={authorize_url}"
|
||||
else:
|
||||
authorize_url = f"{global_vars.SERVER}{authorize_url}"
|
||||
ok = open_new_tab(authorize_url)
|
||||
bk_logger.info(f"Login page in browser opened ({ok})")
|
||||
bk_logger.info("Login page in browser opened (%s)", ok)
|
||||
|
||||
|
||||
def generate_pkce_pair() -> tuple[str, str]:
|
||||
@@ -151,12 +168,17 @@ def generate_pkce_pair() -> tuple[str, str]:
|
||||
return code_verifier, code_challenge
|
||||
|
||||
|
||||
def get_system_id() -> str:
|
||||
return f"{uuid.getnode():015d}"
|
||||
|
||||
|
||||
def write_tokens(auth_token, refresh_token, oauth_response):
|
||||
preferences = bpy.context.preferences.addons[__package__].preferences
|
||||
preferences.api_key_timeout = int(time.time() + oauth_response["expires_in"])
|
||||
preferences.login_attempt = False
|
||||
preferences.api_key_refresh = refresh_token
|
||||
preferences.api_key = auth_token # triggers api_key update function
|
||||
search_price.clear_price_cache()
|
||||
# write token also to extensions repository setting and clear the cache
|
||||
if bpy.app.version >= (4, 2, 0):
|
||||
override_extension_draw.ensure_repository(api_key=auth_token)
|
||||
|
||||
Reference in New Issue
Block a user