mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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')
 | 
