From fbdc0b813944937af29da74f4790e52a2522c480 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Sat, 6 May 2023 19:53:25 +0300 Subject: feat: logout endpoint --- backend/controllers/loginController.go | 25 ++++++++++++++++++++++++ backend/routes/routes.go | 1 + docs/docs.go | 35 ++++++++++++++++++++++++++++++++++ docs/swagger.json | 35 ++++++++++++++++++++++++++++++++++ docs/swagger.yaml | 20 +++++++++++++++++++ 5 files changed, 116 insertions(+) diff --git a/backend/controllers/loginController.go b/backend/controllers/loginController.go index 6e1c299..cfe086d 100644 --- a/backend/controllers/loginController.go +++ b/backend/controllers/loginController.go @@ -107,6 +107,31 @@ func GetCookie(c *gin.Context) { }) } +// DELETE Token +// +// @Summary Deletes the token cookie from the user. +// @Tags auth +// @Produce json +// +// @Success 200 {object} models.Response{data=models.LoginResponse} +// @Failure 404 {object} models.Response +// @Router /token [delete] +func DeleteCookie(c *gin.Context) { + cookie, err := c.Cookie("token") + if err != nil { + c.JSON(http.StatusNotFound, models.ErrorResponse("No token cookie found.")) + return + } + c.SetCookie("token", "", -1, "/", "", true, true) + c.JSON(http.StatusOK, models.Response{ + Success: true, + Message: "Token cookie successfully deleted.", + Data: models.LoginResponse{ + Token: cookie, + }, + }) +} + func GetPlayerSummaries(steamId, apiKey string) (*models.PlayerSummaries, error) { url := fmt.Sprintf("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=%s&steamids=%s", apiKey, steamId) resp, err := http.Get(url) diff --git a/backend/routes/routes.go b/backend/routes/routes.go index 19382ab..96da1ce 100644 --- a/backend/routes/routes.go +++ b/backend/routes/routes.go @@ -17,6 +17,7 @@ func InitRoutes(router *gin.Engine) { c.File("docs/index.html") }) v1.GET("/token", controllers.GetCookie) + v1.DELETE("/token", controllers.DeleteCookie) v1.GET("/home", middleware.CheckAuth, controllers.Home) v1.GET("/login", controllers.Login) v1.GET("/profile", middleware.CheckAuth, controllers.Profile) diff --git a/docs/docs.go b/docs/docs.go index bb6f6ab..d39fd1c 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -715,6 +715,41 @@ const docTemplate = `{ } } } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Deletes the token cookie from the user.", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/models.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.LoginResponse" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/models.Response" + } + } + } } }, "/users/{id}": { diff --git a/docs/swagger.json b/docs/swagger.json index 5ba8a71..ad2a659 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -708,6 +708,41 @@ } } } + }, + "delete": { + "produces": [ + "application/json" + ], + "tags": [ + "auth" + ], + "summary": "Deletes the token cookie from the user.", + "responses": { + "200": { + "description": "OK", + "schema": { + "allOf": [ + { + "$ref": "#/definitions/models.Response" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/definitions/models.LoginResponse" + } + } + } + ] + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/models.Response" + } + } + } } }, "/users/{id}": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index a39aed4..d62b46b 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -594,6 +594,26 @@ paths: tags: - search /token: + delete: + produces: + - application/json + responses: + "200": + description: OK + schema: + allOf: + - $ref: '#/definitions/models.Response' + - properties: + data: + $ref: '#/definitions/models.LoginResponse' + type: object + "404": + description: Not Found + schema: + $ref: '#/definitions/models.Response' + summary: Deletes the token cookie from the user. + tags: + - auth get: produces: - application/json -- cgit v1.2.3