diff --git a/pkg/internal/http/api/index.go b/pkg/internal/http/api/index.go index 5e906da..8cf03d2 100644 --- a/pkg/internal/http/api/index.go +++ b/pkg/internal/http/api/index.go @@ -152,6 +152,7 @@ func MapAPIs(app *fiber.App, baseURL string) { realms.Delete("/:realmId", deleteRealm) realms.Post("/:realm/members", addRealmMember) realms.Delete("/:realm/members/:memberId", removeRealmMember) + realms.Delete("/:realm/me", leaveRealm) } developers := api.Group("/dev").Name("Developers API") diff --git a/pkg/internal/http/api/realm_members_api.go b/pkg/internal/http/api/realm_members_api.go index 8fb1780..c571111 100644 --- a/pkg/internal/http/api/realm_members_api.go +++ b/pkg/internal/http/api/realm_members_api.go @@ -7,7 +7,6 @@ import ( "git.solsynth.dev/hypernet/passport/pkg/internal/services" "github.com/gofiber/fiber/v2" "strconv" - "strings" ) func listRealmMembers(c *fiber.Ctx) error { @@ -93,7 +92,7 @@ func removeRealmMember(c *fiber.Ctx) error { } user := c.Locals("user").(models.Account) alias := c.Params("realm") - memberId := c.Params("memberId") + memberId, _ := c.ParamsInt("memberId", 0) realm, err := services.GetRealmWithAlias(alias) if err != nil { @@ -101,25 +100,11 @@ func removeRealmMember(c *fiber.Ctx) error { } var member models.RealmMember - if strings.EqualFold(memberId, "me") { - if err := database.C.Where(&models.RealmMember{ - BaseModel: models.BaseModel{ID: user.ID}, - RealmID: realm.ID, - }).First(&member).Error; err != nil { - return fiber.NewError(fiber.StatusNotFound, err.Error()) - } - } else { - numericId, err := strconv.Atoi(memberId) - if err != nil { - return fiber.NewError(fiber.StatusBadRequest, "invalid member id") - } - - if err := database.C.Where(&models.RealmMember{ - BaseModel: models.BaseModel{ID: uint(numericId)}, - RealmID: realm.ID, - }).First(&member).Error; err != nil { - return fiber.NewError(fiber.StatusNotFound, err.Error()) - } + if err := database.C.Where(&models.RealmMember{ + BaseModel: models.BaseModel{ID: uint(memberId)}, + RealmID: realm.ID, + }).First(&member).Error; err != nil { + return fiber.NewError(fiber.StatusNotFound, err.Error()) } if err := services.RemoveRealmMember(user, member, realm); err != nil {