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})
|
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 (
|
import (
|
||||||
jwtware "github.com/gofiber/contrib/jwt"
|
jwtware "github.com/gofiber/contrib/jwt"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
|
"github.com/golang-jwt/jwt/v5"
|
||||||
"os"
|
"os"
|
||||||
|
"relay-server/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Protected() fiber.Handler {
|
func Protected() fiber.Handler {
|
||||||
@@ -11,6 +13,15 @@ func Protected() fiber.Handler {
|
|||||||
SigningKey: jwtware.SigningKey{Key: []byte(os.Getenv("JWT_SECRET"))},
|
SigningKey: jwtware.SigningKey{Key: []byte(os.Getenv("JWT_SECRET"))},
|
||||||
ErrorHandler: jwtError,
|
ErrorHandler: jwtError,
|
||||||
TokenLookup: "cookie:token",
|
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
|
package model
|
||||||
|
|
||||||
|
import "github.com/golang-jwt/jwt/v5"
|
||||||
|
|
||||||
type LoginStruct struct {
|
type LoginStruct struct {
|
||||||
Username string `json:"username" xml:"username" form:"username"`
|
Username string `json:"username" xml:"username" form:"username"`
|
||||||
Password string `json:"password" xml:"password" form:"password"`
|
Password string `json:"password" xml:"password" form:"password"`
|
||||||
@@ -9,3 +11,9 @@ type SignupStruct struct {
|
|||||||
Username string `json:"username" xml:"username" form:"username"`
|
Username string `json:"username" xml:"username" form:"username"`
|
||||||
Password string `json:"password" xml:"password" form:"password"`
|
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())
|
api := app.Group("/api", logger.New())
|
||||||
|
|
||||||
// Auth group
|
// Auth group
|
||||||
auth := api.Group("/auth")
|
auth := api.Group("/auth", middleware.Protected(), handlers.ValidateToken)
|
||||||
auth.Post("/signup", handlers.Signup)
|
auth.Post("/signup", handlers.Signup)
|
||||||
auth.Post("/login", handlers.Login)
|
auth.Post("/login", handlers.Login)
|
||||||
|
auth.Get("/validate", handlers.ValidateToken)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user