Feat: site code can be explicitly set to a specified value when being reset

pull/107/head
lethe 3 years ago
parent 37c3b8979c
commit 0a9ae5df13

@ -47,3 +47,9 @@ class AppMoreLikeThisDisabledError(BaseHTTPException):
error_code = 'app_more_like_this_disabled'
description = "More like this disabled."
code = 403
class SiteCodeExistedError(BaseHTTPException):
error_code = 'site_code_existed_error'
description = 'Site code already existed'
code = 400

@ -5,6 +5,7 @@ from werkzeug.exceptions import NotFound, Forbidden
from controllers.console import api
from controllers.console.app import _get_app
from controllers.console.app.error import SiteCodeExistedError
from controllers.console.setup import setup_required
from controllers.console.wraps import account_initialization_required
from libs.helper import supported_language
@ -95,6 +96,10 @@ class AppSiteAccessTokenReset(Resource):
app_id = str(app_id)
app_model = _get_app(app_id)
parser = reqparse.RequestParser()
parser.add_argument('code', type=str, location='json')
args = parser.parse_args()
# The role of the current user in the ta table must be admin or owner
if current_user.current_tenant.current_role not in ['admin', 'owner']:
raise Forbidden()
@ -104,7 +109,11 @@ class AppSiteAccessTokenReset(Resource):
if not site:
raise NotFound
site.code = Site.generate_code(16)
code = args.get('code', Site.generate_code(16))
if db.session.query(Site).filter(Site.code == code).first():
raise SiteCodeExistedError(description=f'Site code already existed: {code}')
site.code = code
db.session.commit()
return site

Loading…
Cancel
Save