token.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "strings"
  5. "github.com/astaxie/beego"
  6. "dashoo.cn/backend/api/models"
  7. "dashoo.cn/business2/auth"
  8. "dashoo.cn/business2/userRole"
  9. "dashoo.cn/utils"
  10. )
  11. // Operations about tokens
  12. type TokenController struct {
  13. BaseController
  14. }
  15. // @Title CreateToken
  16. // @Description create token
  17. // @Param body body models.User4CreateToken true "The user info for create token"
  18. // @Success 200 {object} models.UserToken
  19. // @Failure 403 body is empty
  20. // @router / [post]
  21. func (this *TokenController) Post() {
  22. var user4CreateToken models.User4CreateToken
  23. json.Unmarshal(this.Ctx.Input.RequestBody, &user4CreateToken)
  24. svc := auth.GetAuthServic(utils.DBE)
  25. var user userRole.Base_User
  26. if user4CreateToken.Flag == 1 {
  27. userToken, err := models.CreateToken(user4CreateToken.Username)
  28. if err != nil {
  29. beego.Error("token:", err)
  30. this.Abort("401")
  31. }
  32. //写入登录日志
  33. ip := strings.Split(this.Ctx.Request.RemoteAddr, ":")[0]
  34. ipaddr := this.Ctx.Request.RemoteAddr
  35. svc.WriteLoginLog(utils.ToStr(user.Id), user.Username, user.AccCode, ip, ipaddr, "登录成功")
  36. this.Data["json"] = &userToken
  37. this.ServeJSON()
  38. } else {
  39. if svc.VerifyUser3DES(user4CreateToken.Username, user4CreateToken.Password, &user) {
  40. userToken, err := models.CreateToken(user4CreateToken.Username)
  41. if err != nil {
  42. beego.Error("token:", err)
  43. this.Abort("401")
  44. }
  45. //写入登录日志
  46. ip := strings.Split(this.Ctx.Request.RemoteAddr, ":")[0]
  47. ipaddr := this.Ctx.Request.RemoteAddr
  48. svc.WriteLoginLog(utils.ToStr(user.Id), user.Username, user.AccCode, ip, ipaddr, "登录成功")
  49. this.Data["json"] = &userToken
  50. this.ServeJSON()
  51. } else {
  52. this.Abort("401")
  53. }
  54. }
  55. }
  56. // @Title CheckToken
  57. // @Description check token
  58. // @Success 200 {string} message
  59. // @Failure 401 :auth error
  60. // @router / [get]
  61. func (this *TokenController) Get() {
  62. _, err := this.ParseToken()
  63. if err != nil {
  64. beego.Error("checkToken:", err)
  65. this.Abort("401")
  66. }
  67. this.Data["json"] = map[string]string{"msg": "Token is validated"}
  68. this.ServeJSON()
  69. }
  70. // @Title Logout
  71. // @Description Logout
  72. // @Success 200
  73. // @router /logout [get]
  74. func (this *TokenController) Logout() {
  75. this.Data["json"] = map[string]string{"msg": "logout"}
  76. this.ServeJSON()
  77. }