SsoController.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package partial
  2. import (
  3. "time"
  4. "strings"
  5. "strconv"
  6. "fmt"
  7. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  8. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  9. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  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.Email = user.Email
  54. data.Token = token.AccessToken
  55. data.Type = user.Type
  56. data.Domain = user.Domain
  57. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
  58. } else {
  59. //fmt.Println(err.Error())
  60. c.Ctx.JSON(200, sysmodel.SysReturn{400, "username or passowrd incorrect!", nil})
  61. }
  62. }
  63. // _Logout
  64. // @Title _Logout
  65. // @Description 用户退出
  66. // @Success 200 {object} Account
  67. // @Failure 403 :id is empty
  68. func Sso_Logout(c *entitys.CtrlContext) {
  69. token := c.Ctx.GetHeader("token")
  70. fmt.Println("delete token: ", token)
  71. sysutils.GetGlobalTokenStore().Remove(token)
  72. ret := __none_func_sso__()
  73. if ret {
  74. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  75. }else{
  76. c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
  77. }
  78. }
  79. func __none_func_sso__(params ... interface{}) bool{
  80. return true
  81. }