diff --git a/internal/models/capturer.go b/internal/models/capturer.go index f404ef30bea434f447d3a573b2dd312d0c3eb3a3..d8c4d1cd7885cfa7bd3d94f7a5a94668deb825bb 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 33ce4ac7e9138ceb742306d583ef2b1c986d8227..dbd0df6bd11565b06e7a2bc910bc94fd973e61f7 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 04ad05bf8078ce0d11c386ae4c3834364293043b..dce3f9fe7f190be0f740f6e6b6aa69b6cba0e478 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);