123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package api
- import (
- "crazy-fox-backend-api/model"
- "crazy-fox-backend-api/service"
- "crazy-fox-backend-api/utils"
- "crazy-fox-backend-api/utils/answer"
- "crazy-fox-backend-api/utils/jwt"
- "github.com/gin-gonic/gin"
- )
- type loginApi struct{}
- // Login 用户登录
- func (Api *loginApi) Login(c *gin.Context) {
- var req model.ReqLogin
- utils.Verify(&req, utils.LoginVerify, c)
- err, resInfo := service.Login.Login(req)
- if err != nil {
- answer.FailWithMessage("登录失败", err, c)
- }
- // 获取登录信息
- loginInfo := service.Login.BuildLoginInfo(resInfo)
- answer.OkWithDetailed(loginInfo, "登录成功", c)
- }
- // FsLogin 飞书扫码登录/web登录
- func (Api *loginApi) FsLogin(c *gin.Context) {
- code, _ := c.GetQuery("code")
- // 登录逻辑
- if res, err := service.Login.FsLogin(code); err != nil {
- c.HTML(200, "error.html", model.LoginE{Err: err.Error()})
- } else {
- c.HTML(200, "login.html", service.Login.BuildFsLoginInfo(res))
- }
- }
- // FsBind 用户飞书ID绑定
- func (Api *loginApi) FsBind(c *gin.Context) {
- code, _ := c.GetQuery("code")
- token, _ := c.GetQuery("state")
- // parseToken 解析token包含的信息
- claims, err := jwt.NewJWT().ParseToken(token)
- if err != nil || claims == nil {
- c.HTML(200, "error.html", model.LoginE{Err: "Token 信息有误,绑定失败"})
- }
- userId := claims.BaseClaims.ID
- if fsUserInfo, err := service.Login.BindFs(code, userId); err != nil {
- c.HTML(200, "error.html", model.LoginE{Err: err.Error()})
- } else {
- c.HTML(200, "bindSuccess.html", service.Login.BuildFsBindInfo(fsUserInfo))
- }
- }
|