SsoController.go 2.3 KB

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