From fb65e965441a3e32eff33a0d1360e547badd7dee Mon Sep 17 00:00:00 2001 From: sachin Date: Thu, 25 Feb 2021 23:01:39 -0800 Subject: [PATCH] Implemented a route for updating email address 1. This route works accordingly to user's role 2 if user is admin, it will changes his email alongwith all the admin field of his users 3. and if role of user is not admin then only his email will udpated 4. Also handled all the possible errors like - Missing parameters - check for registered email id - checked that previous email should not be equal to new email id --- flask-backend/api/routes/user.py | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/flask-backend/api/routes/user.py b/flask-backend/api/routes/user.py index ffd952af..6be1b00c 100644 --- a/flask-backend/api/routes/user.py +++ b/flask-backend/api/routes/user.py @@ -200,3 +200,36 @@ def deleteuser(): db.session.delete(user) db.session.commit() return 'user deleted', 202 + + +@user.route('update-email', methods=['PUT']) +@login_required +def update_email(): + try: + req = request.get_json() + newEmail = str(req['new_email']) + except: + return 'Please provide all parameters', 409 + + # check for new email id + if current_user.email != newEmail: + user = User.query.filter_by(email=newEmail).first() + + # check for registered email id + if not user: + + # if user is admin + if not current_user.has_admin: + admins_user = User.query.filter_by(admin=current_user.email).order_by(User.timestamp).all() + for i in admins_user: + i.admin = newEmail + current_user.email = newEmail + db.session.commit() + return 'Your email address changed', 200 + + # if user if not admin + current_user.email = newEmail + db.session.commit() + return 'Your email address is changed', 200 + return 'Email address is already registered', 409 + return 'Please provide a new email address', 409 \ No newline at end of file