diff --git a/addons/website_profile/controllers/main.py b/addons/website_profile/controllers/main.py index 3d14024d1a0..1b1502978a1 100644 --- a/addons/website_profile/controllers/main.py +++ b/addons/website_profile/controllers/main.py @@ -120,8 +120,13 @@ class WebsiteProfile(http.Controller): # --------------------------------------------------- @http.route('/profile/edit', type='http', auth="user", website=True) def view_user_profile_edition(self, **kwargs): + user_id = int(kwargs.get('user_id')) countries = request.env['res.country'].search([]) - values = self._prepare_user_values(searches=kwargs) + if user_id and request.env.user.id != user_id and request.env.user._is_admin(): + user = request.env['res.users'].browse(user_id) + values = self._prepare_user_values(searches=kwargs, user=user, is_public_user=False) + else: + values = self._prepare_user_values(searches=kwargs) values.update({ 'email_required': kwargs.get('email_required'), 'countries': countries, @@ -151,7 +156,11 @@ class WebsiteProfile(http.Controller): @http.route('/profile/user/save', type='http', auth="user", methods=['POST'], website=True) def save_edited_profile(self, **kwargs): - user = request.env.user + user_id = int(kwargs.get('user_id')) + if user_id and request.env.user.id != user_id and request.env.user._is_admin(): + user = request.env['res.users'].browse(user_id) + else: + user = request.env.user values = self._profile_edition_preprocess_values(user, **kwargs) whitelisted_values = {key: values[key] for key in type(user).SELF_WRITEABLE_FIELDS if key in values} user.write(whitelisted_values) diff --git a/addons/website_profile/views/website_profile.xml b/addons/website_profile/views/website_profile.xml index adfd3c2ff3d..1849d3f6257 100644 --- a/addons/website_profile/views/website_profile.xml +++ b/addons/website_profile/views/website_profile.xml @@ -204,7 +204,9 @@