SsoController.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package partial
  2. import (
  3. "fmt"
  4. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  5. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  6. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  7. "strconv"
  8. "strings"
  9. "time"
  10. //"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  11. )
  12. // _Login
  13. // @Title _Login
  14. // @Description 用户登录
  15. // @Param logininfo false "登录信息"
  16. // @Success 200 {object} Account
  17. // @Failure 403 :id is empty
  18. func Sso_Login(c *entitys.CtrlContext) {
  19. var logininfo sysmodel.LoginInfo
  20. c.Ctx.BindJSON(&logininfo)
  21. //fmt.Println(logininfo)
  22. var user sysmodel.SysUser
  23. ret, err := c.PlatformDbEngine.SQL(sysmodel.SqlUserLogin, logininfo.Account).Get(&user)
  24. if ret && err == nil {
  25. //TODO check password
  26. timestamp := uint64(time.Now().UnixNano())
  27. md5Pwd := sysutils.HashPassword(logininfo.Password, "")
  28. //密码错误
  29. if !strings.EqualFold(user.Password, md5Pwd) {
  30. c.Ctx.JSON(200, sysmodel.SysReturn{400, "passowrd incorrect!", nil})
  31. return
  32. }
  33. token := &entitys.Token{}
  34. timestamp_str := strconv.FormatUint(timestamp, 10)
  35. sec_tooken := sysutils.GenerateToken(logininfo.Account + timestamp_str)
  36. if v := sysutils.GetGlobalTokenStore().Get(sec_tooken); v == nil {
  37. token.AccessToken = sec_tooken
  38. token.RefreshToken = sec_tooken
  39. token.LoginID = logininfo.Account
  40. token.UserId = user.Id
  41. token.Result = 200
  42. //token.Password = pwd
  43. token.ServerIp = ""
  44. token.Domain = user.Domain
  45. sysutils.GetGlobalTokenStore().Set(sec_tooken, token)
  46. } else {
  47. token = v
  48. }
  49. data := sysmodel.LoginReturnInfo{}
  50. data.Id = user.Id
  51. data.LoginId = user.LoginId
  52. data.Name = user.Name
  53. data.Mobile = user.Mobile
  54. data.Email = user.Email
  55. data.Token = token.AccessToken
  56. data.Type = user.Type
  57. data.Domain = user.Domain
  58. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
  59. } else {
  60. //fmt.Println(err.Error())
  61. c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or passowrd incorrect!", nil})
  62. }
  63. }
  64. // _Logout
  65. // @Title _Logout
  66. // @Description 用户退出
  67. // @Success 200 {object} Account
  68. // @Failure 403 :id is empty
  69. func Sso_Logout(c *entitys.CtrlContext) {
  70. token := c.Ctx.GetHeader("token")
  71. fmt.Println("delete token: ", token)
  72. sysutils.GetGlobalTokenStore().Remove(token)
  73. ret := __none_func_sso__()
  74. if ret {
  75. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  76. } else {
  77. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  78. }
  79. }
  80. func __none_func_sso__(params ...interface{}) bool {
  81. return true
  82. }