admin_backend/controller/auth.go
2025-07-31 15:39:08 +08:00

92 lines
2.0 KiB
Go

package controller
import (
"backend/model"
"github.com/gin-gonic/gin"
)
func Login(c *gin.Context) {
type LoginRequest struct {
Username string `json:"username" binding:"required"`
Password string `json:"password" binding:"required"`
}
var req LoginRequest
if err := c.ShouldBindJSON(&req); err != nil {
failed(c, "Invalid input: "+err.Error())
}
admin := model.Admin{
Username: req.Username,
Password: req.Password,
}
if admin.Username == "" || admin.Password == "" {
failed(c, "Username and password are required")
return
}
adminInfo, err := admin.Login()
if err != nil {
failed(c, "Login failed: "+err.Error())
return
}
// 这里可以添加逻辑来验证用户名和密码
success(c, map[string]interface{}{
"accessToken": adminInfo.Token,
})
}
func Codes(c *gin.Context) {
c.JSON(200, gin.H{
"code": 0,
"data": []string{"AC_100100", "AC_100110", "AC_100120", "AC_100010"},
"message": "Success",
})
}
func LoginCode(c *gin.Context) {
type LoginCodeRequest struct {
Phone string `json:"phoneNumber" binding:"required"`
Code string `json:"code" binding:"required"`
}
var req LoginCodeRequest
if err := c.ShouldBindJSON(&req); err != nil {
failed(c, "Invalid input: "+err.Error())
return
}
if req.Code == "" {
failed(c, "Code is required")
return
}
admin := model.Admin{}
adminInfo, err := admin.LoginByCode(req.Phone, req.Code)
if err != nil {
failed(c, "Login failed: "+err.Error())
return
}
success(c, map[string]interface{}{
"accessToken": adminInfo.Token,
})
}
func PhoneCode(c *gin.Context) {
type PhoneCodeRequest struct {
Phone string `json:"phoneNumber" binding:"required"`
}
var req PhoneCodeRequest
if err := c.ShouldBindJSON(&req); err != nil {
failed(c, "Invalid input: "+err.Error())
return
}
if req.Phone == "" {
failed(c, "Phone number is required")
return
}
err := model.SendPhoneCode(req.Phone)
if err != nil {
failed(c, "Failed to send phone code: "+err.Error())
return
}
success(c, map[string]interface{}{
"code": 1,
})
}