Cockpit-HQ / Cockpit

Cockpit Core - Content Platform
https://getcockpit.com
Other
388 stars 47 forks source link

Non admin User can't edit it's own account #41

Closed CapsE closed 2 years ago

CapsE commented 2 years ago

I have a role "editor" in my project and if I try to change my account (e.G. the color scheme) I get 401 - Unauthorized as a response and an error in the console:

Uncaught (in promise) TypeError: Cannot read properties of null (reading 'error')
    at data:text/javascript;charset=utf-8,%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20export%20default%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20saving%3A%20false%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20user%3A%20%7B%22active%22%3Atrue%2C%22user%22%3A%22lkr%22%2C%22email%22%3A%22lkr%40elbformat.de%22%2C%22role%22%3A%22editor%22%2C%22theme%22%3A%22auto%22%2C%22i18n%22%3A%22en%22%2C%22twofa%22%3A%7B%22enabled%22%3Afalse%2C%22secret%22%3A%22XEELZYK2F4U2WORABCVC6PGA33K34WEH%22%7D%2C%22name%22%3A%22lkr%22%2C%22_modified%22%3A1668605158%2C%22_created%22%3A1668605158%2C%22_id%22%3A%226374e4e64e0d287b830f7733%22%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20roles%3A%20%5B%7B%22appid%22%3A%22admin%22%2C%22name%22%3A%22Admin%22%7D%2C%7B%22appid%22%3A%22public%22%2C%22name%22%3A%22Public%22%7D%2C%7B%22appid%22%3A%22editor%22%2C%22name%22%3A%22Redakteur%22%7D%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20languages%3A%20%5B%7B%22i18n%22%3A%22en%22%2C%22language%22%3A%22English%22%7D%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20watch%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'user.theme'%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20handler(val)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.documentElement.setAttribute('data-theme'%2C%20val)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20methods%3A%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20generateToken()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.%24request('%2Futils%2FgenerateToken').then(res%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.user.apiKey%20%3D%20%60USR-%24%7Bres.token%7D%60%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20copyToken()%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20App.utils.copyText(this.user.apiKey%2C%20()%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20App.ui.notify('Token%20copied!')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20save()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20isUpdate%20%3D%20this.user._id%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.saving%20%3D%20true%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.%24request('%2Fsystem%2Fusers%2Fsave'%2C%20%7Buser%3A%20this.user%7D).then(user%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.user%20%3D%20user%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.saving%20%3D%20false%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(isUpdate)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20App.ui.notify('User%20updated!')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20App.ui.notify('User%20created!')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D).catch(res%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.saving%20%3D%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20App.ui.notify(:15270/system/users/res.error%20%7C%7C%20'Saving%20failed!'%2C%20'error')%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20:53:47

I'd expect to be able to edit my own account (at least some of the fields) or at least get an error notification in the UI. I tried setting User-Permissions using the UI but I was only able to allow a user group to edit ALL users and not just themselfes.

aheinze commented 2 years ago

Thanks for reporting. 👍 I'll try to reproduce the issue and come back here when I've more insights

aheinze commented 2 years ago

Fixed in the mentioned commit

CapsE commented 1 year ago

Thanks for the quick fix. How long is your release cycle? Will this be fixed in version 2.3.4 when it comes out?