light_auth.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package auth
  2. import (
  3. "fmt"
  4. "strings"
  5. "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
  6. sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
  7. sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
  8. )
  9. type LightAuth struct {
  10. }
  11. func init() {
  12. lightAuth := &LightAuth{}
  13. RegisterAuth("qianqiusoft.com", lightAuth)
  14. }
  15. func (la *LightAuth) Init() {
  16. }
  17. func (la *LightAuth) Login(c *entitys.CtrlContext) {
  18. var logininfo sysmodel.LoginInfo
  19. c.Ctx.BindJSON(&logininfo)
  20. var sqlUserLogin string
  21. if logininfo.Type == "mobile" {
  22. sqlUserLogin = fmt.Sprintf(sysmodel.SqlUserLogin, "mobile")
  23. } else if logininfo.Type == "account" {
  24. sqlUserLogin = fmt.Sprintf(sysmodel.SqlUserLogin, "login_id")
  25. } else {
  26. sqlUserLogin = fmt.Sprintf(sysmodel.SqlUserLogin, "login_id")
  27. }
  28. var user sysmodel.SysUser
  29. ret, err := c.PlatformDbEngine.SQL(sqlUserLogin, logininfo.Account).Get(&user)
  30. if ret && err == nil && user.Status == 0 {
  31. //TODO check password
  32. md5Pwd := sysutils.HashPassword(logininfo.Password, "")
  33. //密码错误
  34. if !strings.EqualFold(user.Password, md5Pwd) {
  35. c.Ctx.JSON(200, sysmodel.SysReturn{400, "password incorrect!", nil})
  36. return
  37. }
  38. data, err := AddToGlobalTokenStore(c, &user)
  39. if err != nil {
  40. c.Ctx.JSON(200, sysmodel.SysReturn{400, err.Error(), nil})
  41. return
  42. }
  43. TCPClient.SendToken(sysutils.GetGlobalTokenStore().Get(data.Token))
  44. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", data})
  45. } else if user.Status == 1 {
  46. c.Ctx.JSON(200, sysmodel.SysReturn{400, "account disable!", nil})
  47. } else {
  48. //fmt.Println(err.Error())
  49. c.Ctx.JSON(200, sysmodel.SysReturn{400, "account or password incorrect!", nil})
  50. }
  51. }
  52. func (la *LightAuth) Logout(c *entitys.CtrlContext) {
  53. token := c.Ctx.GetHeader("token")
  54. fmt.Println("delete token: ", token)
  55. sysutils.GetGlobalTokenStore().Remove(token)
  56. TCPClient.Send(CMD_REMOVE, []byte(token))
  57. c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
  58. }