add api check-email-unique

pull/22390/head
Yansong Zhang 10 months ago
parent 2ad4697317
commit f365677fd5

@ -74,3 +74,8 @@ class EmailChangeLimitError(BaseHTTPException):
error_code = "email_change_limit"
description = "Too many failed email change attempts. Please try again in 24 hours."
code = 429
class EmailAlreadyInUseError(BaseHTTPException):
error_code = "email_already_in_use"
description = "A user with this email already exists."
code = 400

@ -15,6 +15,7 @@ from controllers.console.auth.error import (
EmailCodeError,
InvalidEmailError,
InvalidTokenError,
EmailAlreadyInUseError,
)
from controllers.console.error import AccountNotFound, EmailSendIpLimitError
from controllers.console.workspace.error import (
@ -492,6 +493,18 @@ class ChangeEmailResetApi(Resource):
return updated_account
class CheckEmailUnique(Resource):
@setup_required
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("email", type=email, required=True, location="json")
args = parser.parse_args()
with Session(db.engine) as session:
# check if email is already in use
account = session.execute(select(Account).filter_by(email=args["email"])).scalar_one_or_none()
if account is not None:
raise EmailAlreadyInUseError()
return {"result": "success"}
# Register API resources
api.add_resource(AccountInitApi, "/account/init")
@ -513,5 +526,6 @@ api.add_resource(EducationAutoCompleteApi, "/account/education/autocomplete")
api.add_resource(ChangeEmailSendEmailApi, "/account/change-email")
api.add_resource(ChangeEmailCheckApi, "/account/change-email/validity")
api.add_resource(ChangeEmailResetApi, "/account/change-email/reset")
api.add_resource(CheckEmailUnique, "/account/change-email/check-email-unique")
# api.add_resource(AccountEmailApi, '/account/email')
# api.add_resource(AccountEmailVerifyApi, '/account/email-verify')

Loading…
Cancel
Save