|
@@ -6,7 +6,7 @@ import secrets
|
|
|
import uuid
|
|
|
from datetime import datetime, timedelta
|
|
|
from hashlib import sha256
|
|
|
-from typing import Optional
|
|
|
+from typing import Optional, Dict, Any
|
|
|
|
|
|
from werkzeug.exceptions import Forbidden, Unauthorized
|
|
|
from flask import session, current_app
|
|
@@ -24,7 +24,8 @@ from libs.passport import PassportService
|
|
|
from models.account import *
|
|
|
from tasks.mail_invite_member_task import send_invite_member_mail_task
|
|
|
|
|
|
-def _create_tenant_for_account(account):
|
|
|
+
|
|
|
+def _create_tenant_for_account(account) -> Tenant:
|
|
|
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
|
|
|
|
|
|
TenantService.create_tenant_member(tenant, account, role='owner')
|
|
@@ -505,7 +506,7 @@ class RegisterService:
|
|
|
redis_client.delete(cls._get_invitation_token_key(token))
|
|
|
|
|
|
@classmethod
|
|
|
- def get_invitation_if_token_valid(cls, workspace_id: str, email: str, token: str) -> Optional[Account]:
|
|
|
+ def get_invitation_if_token_valid(cls, workspace_id: str, email: str, token: str) -> Optional[Dict[str, Any]]:
|
|
|
invitation_data = cls._get_invitation_by_token(token, workspace_id, email)
|
|
|
if not invitation_data:
|
|
|
return None
|
|
@@ -539,7 +540,7 @@ class RegisterService:
|
|
|
}
|
|
|
|
|
|
@classmethod
|
|
|
- def _get_invitation_by_token(cls, token: str, workspace_id: str, email: str) -> Optional[str]:
|
|
|
+ def _get_invitation_by_token(cls, token: str, workspace_id: str, email: str) -> Optional[Dict[str, str]]:
|
|
|
if workspace_id is not None and email is not None:
|
|
|
email_hash = sha256(email.encode()).hexdigest()
|
|
|
cache_key = f'member_invite_token:{workspace_id}, {email_hash}:{token}'
|