API - add endpoint to confirm email change
This commit is contained in:
@ -1302,3 +1302,60 @@ def update_password() -> Union[Dict, HttpResponse]:
|
||||
}
|
||||
except (exc.OperationalError, ValueError) as e:
|
||||
return handle_error_and_return_response(e, db=db)
|
||||
|
||||
|
||||
@auth_blueprint.route('/auth/email/update', methods=['POST'])
|
||||
def update_email() -> Union[Dict, HttpResponse]:
|
||||
"""
|
||||
update user email after confirmation
|
||||
|
||||
**Example request**:
|
||||
|
||||
.. sourcecode:: http
|
||||
|
||||
POST /api/auth/email/update HTTP/1.1
|
||||
Content-Type: application/json
|
||||
|
||||
**Example response**:
|
||||
|
||||
HTTP/1.1 200 OK
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"message": "email updated",
|
||||
"status": "success"
|
||||
}
|
||||
|
||||
:<json string token: password reset token
|
||||
|
||||
:statuscode 200: email updated
|
||||
:statuscode 400: invalid payload
|
||||
:statuscode 500: error, please try again or contact the administrator
|
||||
|
||||
"""
|
||||
post_data = request.get_json()
|
||||
if not post_data or post_data.get('token') is None:
|
||||
return InvalidPayloadErrorResponse()
|
||||
token = post_data.get('token')
|
||||
|
||||
try:
|
||||
user = User.query.filter_by(confirmation_token=token).first()
|
||||
|
||||
if not user:
|
||||
return InvalidPayloadErrorResponse()
|
||||
|
||||
user.email = user.email_to_confirm
|
||||
user.email_to_confirm = None
|
||||
user.confirmation_token = None
|
||||
|
||||
db.session.commit()
|
||||
|
||||
response = {
|
||||
'status': 'success',
|
||||
'message': 'email updated',
|
||||
}
|
||||
|
||||
return response
|
||||
|
||||
except (exc.OperationalError, ValueError) as e:
|
||||
return handle_error_and_return_response(e, db=db)
|
||||
|
Reference in New Issue
Block a user