83 lines
2.1 KiB
Go
83 lines
2.1 KiB
Go
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.ValidateToken(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)
|
||
}
|