diff --git a/odex25_mobile/odex_mobile/controllers/rest_api_v2/authentication.py b/odex25_mobile/odex_mobile/controllers/rest_api_v2/authentication.py index f7ea0792e..7dd00297d 100644 --- a/odex25_mobile/odex_mobile/controllers/rest_api_v2/authentication.py +++ b/odex25_mobile/odex_mobile/controllers/rest_api_v2/authentication.py @@ -111,20 +111,48 @@ class AuthenticationController(http.Controller): @http.route(['/rest_api/reset'], type='http', auth='none', csrf=False, methods=['POST']) def reset_email(self, **kw): http_method, body, headers, token = http_helper.parse_request() - if not body.get('email'): + email =kw.get('email') + if not email: return http_helper.response(code=400, message="Email must not be empty", success=False) - user = http.request.env['res.users'].sudo().search([('login', '=', kw.get('email'))]) - if user: - if user: - try: - user.sudo().with_context(company_id=user.company_id.id).action_reset_password() - except Exception as e: - return http_helper.response(message=_(e.__str__()), - data={}) - return http_helper.response(message=_("A verification link has been sent to you email account"), - data={}) - else: - return http_helper.errcode(code=403, message="Password reset failed") + + try: + users = http.request.env['res.users'].sudo().search([('login', '=', email)]) + if users: + if len(users) > 1: + return http_helper.response(code=409, message="Multiple accounts found for this email", + success=False) + users.sudo().with_context(company_id=users.company_id.id).action_reset_password() + return http_helper.response(message="A verification link has been sent to your email account", data={}) + + employee = http.request.env['hr.employee'].sudo().search([('work_email', '=', email)], limit=1) + if employee: + if not employee.user_id: + return http_helper.response(code=404, message="This employee is not linked to any user", + success=False) + employee.user_id.sudo().with_context(company_id=employee.company_id.id).action_reset_password() + return http_helper.response(message="A verification link has been sent to your email account", data={}) + + return http_helper.response(code=403, message="Password reset failed", success=False) + + except Exception as e: + return http_helper.response(code=500, message=str(e), success=False) + + # def reset_email(self, **kw): + # http_method, body, headers, token = http_helper.parse_request() + # if not body.get('email'): + # return http_helper.response(code=400, message="Email must not be empty", success=False) + # user = http.request.env['res.users'].sudo().search([('login', '=', kw.get('email'))]) + # if user: + # if user: + # try: + # user.sudo().with_context(company_id=user.company_id.id).action_reset_password() + # except Exception as e: + # return http_helper.response(message=_(e.__str__()), + # data={}) + # return http_helper.response(message=_("A verification link has been sent to you email account"), + # data={}) + # else: + # return http_helper.errcode(code=403, message="Password reset failed") @http.route('/rest_api/get_language',type='http', auth='none', csrf=False ,methods=['GET']) def get_language(self, **kw):