|
|
|
|
@ -6,9 +6,13 @@ from flask_restful import Resource, reqparse # type: ignore
|
|
|
|
|
|
|
|
|
|
from constants.languages import languages
|
|
|
|
|
from controllers.console import api
|
|
|
|
|
from controllers.console.auth.error import EmailCodeError, InvalidEmailError, InvalidTokenError, PasswordMismatchError
|
|
|
|
|
from controllers.console.error import AccountInFreezeError, AccountNotFound, EmailSendIpLimitError
|
|
|
|
|
from controllers.console.wraps import email_password_login_enabled, setup_required
|
|
|
|
|
from controllers.console.auth.error import (EmailCodeError, InvalidEmailError,
|
|
|
|
|
InvalidTokenError,
|
|
|
|
|
PasswordMismatchError)
|
|
|
|
|
from controllers.console.error import (AccountInFreezeError, AccountNotFound,
|
|
|
|
|
EmailSendIpLimitError)
|
|
|
|
|
from controllers.console.wraps import (email_password_login_enabled,
|
|
|
|
|
setup_required)
|
|
|
|
|
from events.tenant_event import tenant_was_created
|
|
|
|
|
from extensions.ext_database import db
|
|
|
|
|
from libs.helper import email, extract_remote_ip
|
|
|
|
|
@ -16,7 +20,8 @@ from libs.password import hash_password, valid_password
|
|
|
|
|
from models.account import Account
|
|
|
|
|
from services.account_service import AccountService, TenantService
|
|
|
|
|
from services.errors.account import AccountRegisterError
|
|
|
|
|
from services.errors.workspace import WorkSpaceNotAllowedCreateError, WorkspacesLimitExceededError
|
|
|
|
|
from services.errors.workspace import (WorkSpaceNotAllowedCreateError,
|
|
|
|
|
WorkspacesLimitExceededError)
|
|
|
|
|
from services.feature_service import FeatureService
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -106,6 +111,9 @@ class ForgotPasswordResetApi(Resource):
|
|
|
|
|
|
|
|
|
|
if reset_data is None:
|
|
|
|
|
raise InvalidTokenError()
|
|
|
|
|
# Must use token in reset phase
|
|
|
|
|
if reset_data.get("phase", "") != "reset":
|
|
|
|
|
raise InvalidTokenError()
|
|
|
|
|
|
|
|
|
|
AccountService.revoke_reset_password_token(token)
|
|
|
|
|
|
|
|
|
|
|