1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import os
- from flask import session
- from flask_restful import Resource, reqparse # type: ignore
- from configs import dify_config
- from libs.helper import StrLen
- from models.model import DifySetup
- from services.account_service import TenantService
- from . import api
- from .error import AlreadySetupError, InitValidateFailedError
- from .wraps import only_edition_self_hosted
- class InitValidateAPI(Resource):
- def get(self):
- init_status = get_init_validate_status()
- if init_status:
- return {"status": "finished"}
- return {"status": "not_started"}
- @only_edition_self_hosted
- def post(self):
- # is tenant created
- tenant_count = TenantService.get_tenant_count()
- if tenant_count > 0:
- raise AlreadySetupError()
- parser = reqparse.RequestParser()
- parser.add_argument("password", type=StrLen(30), required=True, location="json")
- input_password = parser.parse_args()["password"]
- if input_password != os.environ.get("INIT_PASSWORD"):
- session["is_init_validated"] = False
- raise InitValidateFailedError()
- session["is_init_validated"] = True
- return {"result": "success"}, 201
- def get_init_validate_status():
- if dify_config.EDITION == "SELF_HOSTED":
- if os.environ.get("INIT_PASSWORD"):
- return session.get("is_init_validated") or DifySetup.query.first()
- return True
- api.add_resource(InitValidateAPI, "/init")
|