testfb/.history/routes/auth_20240925152339.go
2024-09-25 16:06:22 +08:00

83 lines
2.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package routes
import (
"log"
"testfb/utils"
"github.com/gofiber/fiber/v2"
)
// 注册路由
func SetupRoutes(app *fiber.App) {
app.Post("/login", login)
}
// 处理登录
func login(c *fiber.Ctx) error {
//请求参数是JSON格式解析JSON数据
var data map[string]string
if err := c.BodyParser(&data); err != nil {
log.Println(err)
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"message": "Invalid request",
})
}
//把JSON数据中的用户名和密码取出来
if data["username"] == "" || data["password"] == "" {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
"message": "Invalid request",
})
}
username := data["username"]
password := data["password"]
log.Printf("Login request for user: %s", username)
log.Printf("Password: %s", password)
//验证用户名和密码
if utils.ValiddateUser(username, password) {
token, err := utils.GenerateJWT(username)
if err != nil {
log.Println(err)
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"message": "Cannot get token, Internal server error",
})
}
log.Println("Token generated for user:", username)
return c.Status(fiber.StatusOK).JSON(fiber.Map{
"token": token,
})
}
log.Printf("Invalid username or password for user: %s", username)
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"message": "Invalid username or password",
})
}
// 得到用户信息。GET /userInfo
// 验证token。GET /validateToken
func userInfo(c *fiber.Ctx) error {
// 从请求头中获取token
token := c.Get("Authorization")
if token == "" {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"message": "Unauthorized",
})
}
// 验证token
username, err := utils.ValidateJWT(token)
if err != nil {
log.Println(err)
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{
"message": "Unauthorized",
})
}
// 得到用户信息
user, err := utils.GetUser(username)
if err != nil {
log.Println(err)
return c.Status(fiber.StatusInternalServerError).JSON(fiber.Map{
"message": "Internal server error",
})
}
return c.Status(fiber.StatusOK).JSON(user)
}