diff --git a/controller/user.go b/controller/user.go index c5c2ec3..981f6dc 100644 --- a/controller/user.go +++ b/controller/user.go @@ -1,9 +1,11 @@ package controller import ( + "electricity_bill_calc/cache" "electricity_bill_calc/exceptions" "electricity_bill_calc/model" "electricity_bill_calc/response" + "electricity_bill_calc/security" "electricity_bill_calc/service" "net/http" @@ -11,6 +13,7 @@ import ( ) func InitializeUserHandlers(router *fiber.App) { + router.Delete("/login", security.MustAuthenticated, doLogout) router.Post("/login", doLogin) } @@ -47,3 +50,16 @@ func doLogin(c *fiber.Ctx) error { } return result.LoginSuccess(session) } + +func doLogout(c *fiber.Ctx) error { + result := response.NewResult(c) + session := c.Locals("session") + if session == nil { + return result.Success("用户会话已结束。") + } + _, err := cache.ClearSession(session.(*model.Session).Token) + if err != nil { + return result.Error(http.StatusInternalServerError, err.Error()) + } + return result.Success("用户已成功登出系统。") +}