|
@@ -17,6 +17,7 @@ from libs.passport import PassportService
|
|
|
from libs.password import compare_password, hash_password, valid_password
|
|
|
from libs.rsa import generate_key_pair
|
|
|
from models.account import *
|
|
|
+from models.model import DifySetup
|
|
|
from services.errors.account import (
|
|
|
AccountAlreadyInTenantError,
|
|
|
AccountLoginError,
|
|
@@ -119,10 +120,11 @@ class AccountService:
|
|
|
return account
|
|
|
|
|
|
@staticmethod
|
|
|
- def create_account(email: str, name: str, interface_language: str,
|
|
|
- password: str = None,
|
|
|
- interface_theme: str = 'light',
|
|
|
- timezone: str = 'America/New_York', ) -> Account:
|
|
|
+ def create_account(email: str,
|
|
|
+ name: str,
|
|
|
+ interface_language: str,
|
|
|
+ password: Optional[str] = None,
|
|
|
+ interface_theme: str = 'light') -> Account:
|
|
|
"""create account"""
|
|
|
account = Account()
|
|
|
account.email = email
|
|
@@ -200,7 +202,6 @@ class AccountService:
|
|
|
account.last_login_ip = ip_address
|
|
|
db.session.add(account)
|
|
|
db.session.commit()
|
|
|
- logging.info(f'Account {account.id} logged in successfully.')
|
|
|
|
|
|
@staticmethod
|
|
|
def login(account: Account, *, ip_address: Optional[str] = None):
|
|
@@ -444,8 +445,51 @@ class RegisterService:
|
|
|
return f'member_invite:token:{token}'
|
|
|
|
|
|
@classmethod
|
|
|
- def register(cls, email, name, password: str = None, open_id: str = None, provider: str = None,
|
|
|
- language: str = None, status: AccountStatus = None) -> Account:
|
|
|
+ def setup(cls, email: str, name: str, password: str, ip_address: str) -> None:
|
|
|
+ """
|
|
|
+ Setup dify
|
|
|
+
|
|
|
+ :param email: email
|
|
|
+ :param name: username
|
|
|
+ :param password: password
|
|
|
+ :param ip_address: ip address
|
|
|
+ """
|
|
|
+ try:
|
|
|
+ # Register
|
|
|
+ account = AccountService.create_account(
|
|
|
+ email=email,
|
|
|
+ name=name,
|
|
|
+ interface_language=languages[0],
|
|
|
+ password=password,
|
|
|
+ )
|
|
|
+
|
|
|
+ account.last_login_ip = ip_address
|
|
|
+ account.initialized_at = datetime.now(timezone.utc).replace(tzinfo=None)
|
|
|
+
|
|
|
+ TenantService.create_owner_tenant_if_not_exist(account)
|
|
|
+
|
|
|
+ dify_setup = DifySetup(
|
|
|
+ version=current_app.config['CURRENT_VERSION']
|
|
|
+ )
|
|
|
+ db.session.add(dify_setup)
|
|
|
+ db.session.commit()
|
|
|
+ except Exception as e:
|
|
|
+ db.session.query(DifySetup).delete()
|
|
|
+ db.session.query(TenantAccountJoin).delete()
|
|
|
+ db.session.query(Account).delete()
|
|
|
+ db.session.query(Tenant).delete()
|
|
|
+ db.session.commit()
|
|
|
+
|
|
|
+ logging.exception(f'Setup failed: {e}')
|
|
|
+ raise ValueError(f'Setup failed: {e}')
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ def register(cls, email, name,
|
|
|
+ password: Optional[str] = None,
|
|
|
+ open_id: Optional[str] = None,
|
|
|
+ provider: Optional[str] = None,
|
|
|
+ language: Optional[str] = None,
|
|
|
+ status: Optional[AccountStatus] = None) -> Account:
|
|
|
db.session.begin_nested()
|
|
|
"""Register account"""
|
|
|
try:
|