From 1a80ce456f35a9f9ca4bbe713bdd84af9066e787 Mon Sep 17 00:00:00 2001 From: Alexis POYEN <apoyen@grandlyon.com> Date: Mon, 6 Jul 2020 12:06:00 +0200 Subject: [PATCH] Resolve "Update role should remove capturer" --- internal/models/capturer.go | 2 +- web/components/users/handleUser.js | 15 +++++++++++---- web/services/model/capturer-model.js | 8 ++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/internal/models/capturer.go b/internal/models/capturer.go index f404ef3..d8c4d1c 100644 --- a/internal/models/capturer.go +++ b/internal/models/capturer.go @@ -137,7 +137,7 @@ func (d *DataHandler) deleteCapturerAdmin(w http.ResponseWriter, r *http.Request http.Error(w, ErrorIDIsMissing, http.StatusNotFound) return } - d.db.Delete(&o) + d.db.Unscoped().Delete(&o) } else { http.Error(w, ErrorIDIsMissing, http.StatusNotFound) } diff --git a/web/components/users/handleUser.js b/web/components/users/handleUser.js index 33ce4ac..dbd0df6 100644 --- a/web/components/users/handleUser.js +++ b/web/components/users/handleUser.js @@ -226,6 +226,11 @@ class HandleUser { let user = await response.json(); if (user != undefined && user.role == "CAPTURER") await this.postCapturer(user, method); + else if (user.role != "CAPTURER") { + let capturer = await Auth.getCapturerByUserID(user.id, current_user); + if (capturer != undefined) + await this.CapturerModel.deleteCapturer(capturer.ID); + } this.parent.displayUsers(); } catch (e) { Messages.Show("is-warning", e.message); @@ -236,9 +241,11 @@ class HandleUser { async postCapturer(user, method) { let capturer; - if (method === "PUT") - capturer = await Auth.getCapturerByUserID(user.id, current_user); - else capturer = {}; - this.CapturerModel.saveCapturer(method, capturer.ID, user.ID, user.name); + capturer = await Auth.getCapturerByUserID(user.id, current_user); + if (capturer == undefined) { + capturer = { ID: 0 }; + method = "POST"; + } + this.CapturerModel.saveCapturer(method, capturer.ID, user.id, user.name); } } diff --git a/web/services/model/capturer-model.js b/web/services/model/capturer-model.js index 04ad05b..dce3f9f 100644 --- a/web/services/model/capturer-model.js +++ b/web/services/model/capturer-model.js @@ -55,10 +55,10 @@ class CapturerModel { async saveCapturer(method, ID, UserID, Name) { try { - const response = await fetch("/api/Capturer/" + capturer.ID, { + const response = await fetch("/api/Capturer/" + ID, { method: method, headers: new Headers({ - "XSRF-Token": current_user.xsrftoken, + "XSRF-Token": this.current_user.xsrftoken, }), body: JSON.stringify({ ID: ID, @@ -68,11 +68,10 @@ class CapturerModel { }); if (response.status !== 200) { throw new Error( - `Capturer could not be deleted (status ${response.status})` + `Capturer could not be saved (status ${response.status})` ); } this.refreshCapturers(); - Messages.Show("is-success", "Bureau de vote mis à jour"); return await response.json(); } catch (e) { Messages.Show("is-warning", e.message); @@ -94,6 +93,7 @@ class CapturerModel { `Capturer could not be deleted (status ${response.status})` ); } + this.refreshCapturers(); } catch (e) { Messages.Show("is-warning", e.message); console.error(e); -- GitLab