package controllers import ( "encoding/json" "strings" "github.com/astaxie/beego" "dashoo.cn/backend/api/models" "dashoo.cn/business2/auth" "dashoo.cn/business2/userRole" "dashoo.cn/utils" ) // Operations about tokens type TokenController struct { BaseController } // @Title CreateToken // @Description create token // @Param body body models.User4CreateToken true "The user info for create token" // @Success 200 {object} models.UserToken // @Failure 403 body is empty // @router / [post] func (this *TokenController) Post() { var user4CreateToken models.User4CreateToken json.Unmarshal(this.Ctx.Input.RequestBody, &user4CreateToken) svc := auth.GetAuthServic(utils.DBE) var user userRole.Base_User if user4CreateToken.Flag == 1 { userToken, err := models.CreateToken(user4CreateToken.Username) if err != nil { beego.Error("token:", err) this.Abort("401") } //写入登录日志 ip := strings.Split(this.Ctx.Request.RemoteAddr, ":")[0] ipaddr := this.Ctx.Request.RemoteAddr svc.WriteLoginLog(utils.ToStr(user.Id), user.Username, user.AccCode, ip, ipaddr, "登录成功") this.Data["json"] = &userToken this.ServeJSON() } else { if svc.VerifyUser3DES(user4CreateToken.Username, user4CreateToken.Password, &user) { userToken, err := models.CreateToken(user4CreateToken.Username) if err != nil { beego.Error("token:", err) this.Abort("401") } //写入登录日志 ip := strings.Split(this.Ctx.Request.RemoteAddr, ":")[0] ipaddr := this.Ctx.Request.RemoteAddr svc.WriteLoginLog(utils.ToStr(user.Id), user.Username, user.AccCode, ip, ipaddr, "登录成功") this.Data["json"] = &userToken this.ServeJSON() } else { this.Abort("401") } } } // @Title CheckToken // @Description check token // @Success 200 {string} message // @Failure 401 :auth error // @router / [get] func (this *TokenController) Get() { _, err := this.ParseToken() if err != nil { beego.Error("checkToken:", err) this.Abort("401") } this.Data["json"] = map[string]string{"msg": "Token is validated"} this.ServeJSON() } // @Title Logout // @Description Logout // @Success 200 // @router /logout [get] func (this *TokenController) Logout() { this.Data["json"] = map[string]string{"msg": "logout"} this.ServeJSON() }