[server] Gracefully handle deleted users

This commit is contained in:
Neeraj Gupta
2024-08-29 18:01:06 +05:30
parent 0c48f53ab1
commit 236d24c79b
3 changed files with 17 additions and 2 deletions

View File

@@ -141,6 +141,12 @@ var ErrNotFoundError = ApiError{
HttpStatusCode: http.StatusNotFound,
}
var ErrUserNotFound = &ApiError{
Code: "USER_NOT_FOUND",
Message: "User is either deleted or not found",
HttpStatusCode: http.StatusNotFound,
}
var ErrMaxPasskeysReached = ApiError{
Code: MaxPasskeysReached,
Message: "Max passkeys limit reached",

View File

@@ -356,7 +356,7 @@ func (h *UserHandler) FinishPasskeyAuthenticationCeremony(c *gin.Context) {
return
}
user, err := h.UserController.UserRepo.Get(userID)
user, err := h.UserController.GetUser(userID)
if err != nil {
handler.Error(c, stacktrace.Propagate(err, ""))
return

View File

@@ -1,6 +1,7 @@
package user
import (
"errors"
"github.com/ente-io/museum/ente"
"github.com/ente-io/museum/ente/details"
bonus "github.com/ente-io/museum/ente/storagebonus"
@@ -11,6 +12,14 @@ import (
"golang.org/x/sync/errgroup"
)
func (c *UserController) GetUser(userID int64) (ente.User, error) {
user, err := c.UserRepo.Get(userID)
if err != nil && errors.Is(err, ente.ErrUserDeleted) {
return ente.User{}, stacktrace.Propagate(ente.ErrUserNotFound, "")
}
return user, err
}
func (c *UserController) GetDetailsV2(ctx *gin.Context, userID int64, fetchMemoryCount bool, app ente.App) (details.UserDetailsResponse, error) {
g := new(errgroup.Group)
@@ -21,7 +30,7 @@ func (c *UserController) GetDetailsV2(ctx *gin.Context, userID int64, fetchMemor
var fileCount, sharedCollectionCount, usage int64
var bonus *bonus.ActiveStorageBonus
g.Go(func() error {
resp, err := c.UserRepo.Get(userID)
resp, err := c.GetUser(userID)
if err != nil {
return stacktrace.Propagate(err, "failed to get user")
}