fix(users): Improve error handling of some fields update

Signed-off-by: Louis Chemineau <louis@chmn.me>
pull/46418/head
Louis Chemineau 5 months ago
parent 1768bd6280
commit 1af827fdb3
No known key found for this signature in database
  1. 56
      apps/settings/src/components/Users/UserRow.vue
  2. 27
      apps/settings/src/store/users.js

@ -624,18 +624,21 @@ export default {
*
* @param {string} displayName The display name
*/
updateDisplayName() {
async updateDisplayName() {
this.loading.displayName = true
this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'displayname',
value: this.editedDisplayName,
}).then(() => {
this.loading.displayName = false
try {
await this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'displayname',
value: this.editedDisplayName,
})
if (this.editedDisplayName === this.user.displayname) {
showSuccess(t('setting', 'Display name was successfully changed'))
}
})
} finally {
this.loading.displayName = false
}
},
/**
@ -643,21 +646,23 @@ export default {
*
* @param {string} password The email address
*/
updatePassword() {
async updatePassword() {
this.loading.password = true
if (this.editedPassword.length === 0) {
showError(t('setting', "Password can't be empty"))
this.loading.password = false
} else {
this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'password',
value: this.editedPassword,
}).then(() => {
this.loading.password = false
try {
await this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'password',
value: this.editedPassword,
})
this.editedPassword = ''
showSuccess(t('setting', 'Password was successfully changed'))
})
} finally {
this.loading.password = false
}
}
},
@ -666,23 +671,26 @@ export default {
*
* @param {string} mailAddress The email address
*/
updateEmail() {
async updateEmail() {
this.loading.mailAddress = true
if (this.editedMail === '') {
showError(t('setting', "Email can't be empty"))
this.loading.mailAddress = false
this.editedMail = this.user.email
} else {
this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'email',
value: this.editedMail,
}).then(() => {
this.loading.mailAddress = false
try {
await this.$store.dispatch('setUserData', {
userid: this.user.id,
key: 'email',
value: this.editedMail,
})
if (this.editedMail === this.user.email) {
showSuccess(t('setting', 'Email was successfully changed'))
}
})
} finally {
this.loading.mailAddress = false
}
}
},

@ -641,11 +641,14 @@ const actions = {
* @param {string} userid User id
* @return {Promise}
*/
wipeUserDevices(context, userid) {
return api.requireAdmin().then((response) => {
return api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))
.catch((error) => { throw error })
}).catch((error) => context.commit('API_FAILURE', { userid, error }))
async wipeUserDevices(context, userid) {
try {
await api.requireAdmin()
return await api.post(generateOcsUrl('cloud/users/{userid}/wipe', { userid }))
} catch (error) {
context.commit('API_FAILURE', { userid, error })
return Promise.reject(new Error('Failed to wipe user devices'))
}
},
/**
@ -735,7 +738,7 @@ const actions = {
* @param {string} options.value Value of the change
* @return {Promise}
*/
setUserData(context, { userid, key, value }) {
async setUserData(context, { userid, key, value }) {
const allowedEmpty = ['email', 'displayname', 'manager']
if (['email', 'language', 'quota', 'displayname', 'password', 'manager'].indexOf(key) !== -1) {
// We allow empty email or displayname
@ -745,11 +748,13 @@ const actions = {
|| allowedEmpty.indexOf(key) !== -1
)
) {
return api.requireAdmin().then((response) => {
return api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })
.then((response) => context.commit('setUserData', { userid, key, value }))
.catch((error) => { throw error })
}).catch((error) => context.commit('API_FAILURE', { userid, error }))
try {
await api.requireAdmin()
await api.put(generateOcsUrl('cloud/users/{userid}', { userid }), { key, value })
return context.commit('setUserData', { userid, key, value })
} catch (error) {
context.commit('API_FAILURE', { userid, error })
}
}
}
return Promise.reject(new Error('Invalid request data'))

Loading…
Cancel
Save