Skip to content

Commit 67c7911

Browse files
authored
fix: fix default user when clearing ratings (#253)
1 parent 80a105d commit 67c7911

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

pkg/http/http.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -871,7 +871,11 @@ func (s *Server) AddCatalogHandler(db *database.Catalog) {
871871

872872
updated, err := db.UpdateRating(r.Context(), user, &rating)
873873
if err != nil {
874-
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
874+
if errors.Is(err, database.ErrGlobalOperationNotPermitted) {
875+
s.writeJSONErrorResponse(w, r, err, http.StatusForbidden)
876+
} else {
877+
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
878+
}
875879
return
876880
}
877881

@@ -902,7 +906,11 @@ func (s *Server) AddCatalogHandler(db *database.Catalog) {
902906

903907
err := db.DeleteRatings(r.Context(), user)
904908
if err != nil {
905-
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
909+
if errors.Is(err, database.ErrGlobalOperationNotPermitted) {
910+
s.writeJSONErrorResponse(w, r, err, http.StatusForbidden)
911+
} else {
912+
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
913+
}
906914
return
907915
}
908916

@@ -924,7 +932,11 @@ func (s *Server) AddCatalogHandler(db *database.Catalog) {
924932

925933
err = db.DeleteRating(r.Context(), user, idParam)
926934
if err != nil {
927-
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
935+
if errors.Is(err, database.ErrGlobalOperationNotPermitted) {
936+
s.writeJSONErrorResponse(w, r, err, http.StatusForbidden)
937+
} else {
938+
s.writeJSONErrorResponse(w, r, err, http.StatusBadRequest)
939+
}
928940
return
929941
}
930942

pkg/web/src/routes/login/+page.svelte

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,23 @@
9191
}
9292
9393
async function deleteRatings() {
94-
await fetch(`${PUBLIC_BACKEND_ENDPOINT}/api/ratings`, {
94+
const res = await fetch(`${PUBLIC_BACKEND_ENDPOINT}/api/ratings`, {
9595
method: 'DELETE',
9696
credentials: 'same-origin'
9797
});
98+
99+
if (!res.ok) {
100+
if (res.status === 403) {
101+
const json = await res.json();
102+
alert('Cannot clear ratings: The default user is not allowed to delete ratings. Please create your own user account.');
103+
} else if (res.status === 401) {
104+
alert('You need to be logged in to clear ratings.');
105+
} else {
106+
alert('Failed to clear ratings: ' + res.statusText);
107+
}
108+
return;
109+
}
110+
98111
location.reload();
99112
}
100113

0 commit comments

Comments
 (0)