12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import os
- from flask import current_app, session
- from flask_restful import Resource, reqparse
- from libs.helper import str_len
- 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=str_len(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 current_app.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')
|