token.go 2.8 KB

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