Feat: Founding Partner login with autocreation of User, User Role Link, Company, User Company Link as necessary and autologin with new user - for approved Founding Partners only, otherwise redirected to login page.

This commit is contained in:
2025-08-21 18:37:31 +01:00
parent 07543994bf
commit 12f5fc994f
29 changed files with 1843 additions and 324 deletions

View File

@@ -15,6 +15,7 @@ Contact Page Controller.
from business_objects.api import API
from business_objects.dog.company import Company
from datastores.datastore_dog import DataStore_Dog
from datastores.datastore_user import DataStore_User
from forms.dog.company import Filters_Company
from helpers.helper_app import Helper_App
from models.model_view_user_company import Model_View_User_Company
@@ -97,7 +98,7 @@ def save_company():
for company in companies:
objs_company.append(Company.from_json(company))
Helper_App.console_log(f'objs_company={objs_company}')
errors = DataStore_Dog.save_companies(data.get('comment', 'No comment'), objs_company)
errors = DataStore_User.save_companies(data.get('comment', 'No comment'), objs_company)
if (len(errors) > 0):
return jsonify({

View File

@@ -110,52 +110,12 @@ def login_callback():
# Helper_App.console_log('login_callback')
try:
# Helper_App.console_log(f'Redceived state: {request.args.get("state")}')
error_state = request.args.get(Model_View_User.FLAG_ERROR_OAUTH)
has_error = error_state is not None
if has_error:
error_description = request.args.get(Model_View_User.FLAG_ERROR_DESCRIPTION_OAUTH)
error_text = f'Error: {error_state}: {error_description}'
Helper_App.console_log(error_text)
return redirect(f"{current_app.config['URL_HOST']}{hash_callback}") # login()
token = None
try:
token = oauth.auth0.authorize_access_token()
except Exception as e:
Helper_App.console_log(f"Error: {str(e)}")
session[current_app.config['ID_TOKEN_USER']] = token
user = User.from_json_auth0(token)
Helper_App.console_log(f'user: {user}')
filters = Parameters_User.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(filters, user)
try:
user = users[0]
Helper_App.console_log('User logged in')
Helper_App.console_log(f'user ({str(type(user))}): {user}')
Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
Helper_App.console_log(f'User JSON: {user_json}')
session[Model_View_Base.FLAG_USER] = user_json
Helper_App.console_log(f'user stored on session')
except:
# Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}')
user = User.from_json_auth0(token)
errors = datastore_user.save_new_founding_partner(user)
filters = Parameters_User.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(filters, user)
try:
user = users[0]
Helper_App.console_log('User logged in')
Helper_App.console_log(f'user ({str(type(user))}): {user}')
Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
Helper_App.console_log(f'User JSON: {user_json}')
session[Model_View_Base.FLAG_USER] = user_json
Helper_App.console_log(f'user stored on session')
except:
Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}')
try:
hash_callback = token.get('hash_callback')
@@ -168,6 +128,55 @@ def login_callback():
except:
Helper_App.console_log("get hash callback failed")
error_state = request.args.get(Model_View_User.FLAG_ERROR_OAUTH)
has_error = error_state is not None
if has_error:
error_description = request.args.get(Model_View_User.FLAG_ERROR_DESCRIPTION_OAUTH)
error_text = f'Error: {error_state}: {error_description}'
Helper_App.console_log(error_text)
return redirect(f"{current_app.config['URL_HOST']}{hash_callback}") # login()
user = User.from_json_auth0(token)
Helper_App.console_log(f'user: {user}')
filters = Parameters_User.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(filters, user)
try:
if (len(errors) > 0): raise ValueError(f'Database errors: {errors}')
user = users[0]
Helper_App.console_log('User logged in')
Helper_App.console_log(f'user ({str(type(user))}): {user}')
Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
Helper_App.console_log(f'User JSON: {user_json}')
session[Model_View_Base.FLAG_USER] = user_json
Helper_App.console_log(f'user stored on session')
except:
# Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}')
Helper_App.console_log(f'User not found. Creating new founding partner')
user = User.from_json_auth0(token)
errors = datastore_user.save_new_founding_partner(user)
try:
if (len(errors) > 0): raise ValueError(f'Database errors: {errors}')
filters = Parameters_User.from_user(user)
datastore_user = DataStore_User()
users, errors = datastore_user.get_many_user(filters, user)
if (len(errors) > 0): raise ValueError(f'Database errors: {errors}')
try:
user = users[0]
Helper_App.console_log('User logged in')
Helper_App.console_log(f'user ({str(type(user))}): {user}')
Helper_App.console_log(f'user key: {Model_View_Base.FLAG_USER}')
user_json = user.to_json()
Helper_App.console_log(f'User JSON: {user_json}')
session[Model_View_Base.FLAG_USER] = user_json
Helper_App.console_log(f'user stored on session')
except:
Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}')
except:
Helper_App.console_log(f'User not found: {filters}\nDatabase query error: {errors}')
Helper_App.console_log(f'user session: {session.get(Model_View_Base.FLAG_USER, "(Key not found)")}')
return redirect(f"{current_app.config['URL_HOST']}{hash_callback}")
except Exception as e: