added auth validate route
This commit is contained in:
@@ -131,6 +131,13 @@ func Login(c *fiber.Ctx) error {
|
||||
return c.Status(fiber.StatusOK).JSON(fiber.Map{"message": "Successfully logged in", "username": u.Username, "user_id": userId})
|
||||
}
|
||||
|
||||
//func ValidateToken(c *fiber.Ctx) error {
|
||||
//
|
||||
//}
|
||||
func ValidateToken(c *fiber.Ctx) error {
|
||||
username := c.Locals("username")
|
||||
userId := c.Locals("user_id")
|
||||
|
||||
if userId == nil || username == nil {
|
||||
fmt.Println("userId or username is nil")
|
||||
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "invalid token"})
|
||||
}
|
||||
return c.Status(fiber.StatusOK).JSON(fiber.Map{"message": "authorized", "username": c.Locals("username").(string), "user_id": c.Locals("userId").(string)})
|
||||
}
|
||||
|
||||
@@ -3,7 +3,9 @@ package middleware
|
||||
import (
|
||||
jwtware "github.com/gofiber/contrib/jwt"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"os"
|
||||
"relay-server/model"
|
||||
)
|
||||
|
||||
func Protected() fiber.Handler {
|
||||
@@ -11,6 +13,15 @@ func Protected() fiber.Handler {
|
||||
SigningKey: jwtware.SigningKey{Key: []byte(os.Getenv("JWT_SECRET"))},
|
||||
ErrorHandler: jwtError,
|
||||
TokenLookup: "cookie:token",
|
||||
Claims: &model.UserClaims{},
|
||||
SuccessHandler: func(c *fiber.Ctx) error {
|
||||
user := c.Locals("user").(*jwt.Token)
|
||||
claims := user.Claims.(*model.UserClaims)
|
||||
|
||||
c.Locals("userId", claims.UserId)
|
||||
c.Locals("username", claims.Username)
|
||||
return c.Next()
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package model
|
||||
|
||||
import "github.com/golang-jwt/jwt/v5"
|
||||
|
||||
type LoginStruct struct {
|
||||
Username string `json:"username" xml:"username" form:"username"`
|
||||
Password string `json:"password" xml:"password" form:"password"`
|
||||
@@ -9,3 +11,9 @@ type SignupStruct struct {
|
||||
Username string `json:"username" xml:"username" form:"username"`
|
||||
Password string `json:"password" xml:"password" form:"password"`
|
||||
}
|
||||
|
||||
type UserClaims struct {
|
||||
Username string `json:"username"`
|
||||
UserId string `json:"user_id"`
|
||||
jwt.RegisteredClaims
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ func SetupRoutes(app *fiber.App) {
|
||||
api := app.Group("/api", logger.New())
|
||||
|
||||
// Auth group
|
||||
auth := api.Group("/auth")
|
||||
auth := api.Group("/auth", middleware.Protected(), handlers.ValidateToken)
|
||||
auth.Post("/signup", handlers.Signup)
|
||||
auth.Post("/login", handlers.Login)
|
||||
|
||||
auth.Get("/validate", handlers.ValidateToken)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user