Skip to content

Commit 4eccc73

Browse files
committed
add refresh token route and implement authenticate middleware
1 parent 7fe62b9 commit 4eccc73

File tree

1 file changed

+38
-9
lines changed

1 file changed

+38
-9
lines changed

app/http/controller/user_controller.go

+38-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"govel/app/exception"
66
"govel/app/helper"
7+
"govel/app/http/middleware"
78
"govel/app/model"
89
"govel/app/service"
910
"strconv"
@@ -26,9 +27,10 @@ func (controller *UserController) Route(route fiber.Router) {
2627
group.Get("/search/:query", controller.Search)
2728

2829
group.Post("/login", controller.Login)
30+
group.Post("/refresh-token", controller.RefreshToken).Name("refresh-token")
2931
group.Post("/register", controller.Register)
30-
group.Post("/update/:id", controller.Update)
31-
group.Post("/delete/:id", controller.Delete)
32+
group.Post("/update/:id", middleware.Authenticate, controller.Update)
33+
group.Post("/delete/:id", middleware.Authenticate, controller.Delete)
3234

3335
// Add this endpoint at the bottom to avoid the path conflict
3436
group.Get("/:id", controller.Show)
@@ -97,14 +99,41 @@ func (ctx *UserController) Login(c *fiber.Ctx) error {
9799

98100
token := helper.MakeECDSAToken(&data, jwt.SigningMethodES256)
99101

102+
refreshTokenURL, err := c.GetRouteURL("refresh-token", nil)
103+
exception.PanicIfNeeded(err)
104+
105+
return c.Status(200).JSON(model.WebResponse{
106+
Code: 200,
107+
Message: "OK",
108+
Data: model.TokenResponse{
109+
Type: "bearer",
110+
Alg: "es256",
111+
RefreshTokenURL: c.BaseURL() + refreshTokenURL,
112+
Token: token,
113+
Claims: data,
114+
},
115+
})
116+
}
117+
118+
func (ctx *UserController) RefreshToken(c *fiber.Ctx) error {
119+
data := ctx.service.RefreshToken(model.RefreshTokenUserRequest{
120+
Token: c.FormValue("token"),
121+
})
122+
123+
token := helper.MakeECDSAToken(&data, jwt.SigningMethodES256)
124+
125+
refreshTokenURL, err := c.GetRouteURL("refresh-token", nil)
126+
exception.PanicIfNeeded(err)
127+
100128
return c.Status(200).JSON(model.WebResponse{
101129
Code: 200,
102130
Message: "OK",
103131
Data: model.TokenResponse{
104-
Type: "bearer",
105-
Alg: "es256",
106-
Token: token,
107-
Claims: data,
132+
Type: "bearer",
133+
Alg: "es256",
134+
RefreshTokenURL: c.BaseURL() + refreshTokenURL,
135+
Token: token,
136+
Claims: data,
108137
},
109138
})
110139
}
@@ -144,9 +173,8 @@ func (ctx *UserController) Update(c *fiber.Ctx) error {
144173
id, err := c.ParamsInt("id")
145174
exception.PanicIfNeeded(err)
146175

147-
fmt.Printf("Value name: %s", c.Params("name"))
148-
149176
data := ctx.service.Update(model.UpdateUserRequest{
177+
Token: c.FormValue("token"),
150178
Id: id,
151179
Name: c.FormValue("name"),
152180
Location: c.FormValue("location"),
@@ -166,7 +194,8 @@ func (ctx *UserController) Delete(c *fiber.Ctx) error {
166194
exception.PanicIfNeeded(err)
167195

168196
data := ctx.service.Delete(model.DeleteUserRequest{
169-
Id: id,
197+
Token: c.FormValue("token"),
198+
Id: id,
170199
})
171200

172201
// Return non pagination response

0 commit comments

Comments
 (0)