auth.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package service
  2. import (
  3. "fmt"
  4. "github.com/mojocn/base64Captcha"
  5. "time"
  6. "video_course/errors"
  7. "video_course/global"
  8. "video_course/model"
  9. rdb "video_course/repository/redis"
  10. )
  11. var store = base64Captcha.DefaultMemStore
  12. type Auth struct {
  13. base
  14. }
  15. //
  16. //func (a Auth) SignOut(session *model.Session) (logInfo string) {
  17. // user := a.getUser(session)
  18. // function.Session{}.Delete(session)
  19. // logInfo = fmt.Sprintf("用户[%s]退出", user.GetShowName())
  20. // return
  21. //}
  22. //func (a Auth) SignIn(
  23. // verifyName string,
  24. // password string,
  25. // channel model.LoginChannel,
  26. // picId string,
  27. // picCode string,
  28. // ip string) (sess *model.Session, logInfo string) {
  29. // var user *model.User
  30. //
  31. // defer func() {
  32. // if p := recover(); p == nil {
  33. // logInfo = fmt.Sprintf("用户[%s]在%s登录成功", user.GetShowName(), channel)
  34. // } else {
  35. // panic(p)
  36. // }
  37. // }()
  38. //
  39. // if !store.Verify(picId, picCode, true) {
  40. // panic(errors.ErrPicVerifyCode)
  41. // }
  42. //
  43. // dao := gorm.UserDAO{}
  44. // shopDao := gorm.ShopDAO{}
  45. // user = dao.GetUserByVerifyName(verifyName)
  46. // user.CheckStatus()
  47. // shop, _ := shopDao.ShopDetailOne(user.ShopId)
  48. // shop.CheckShopStatus()
  49. //
  50. // if !dao.PasswordCorrect(user.Id, password) {
  51. // panic(errors.ErrPassword)
  52. // }
  53. // sess = function.Auth{}.LoginUser(user, channel, "", ip)
  54. //
  55. // return
  56. //}
  57. func (Auth) GenVerifyPic(config *base64Captcha.DriverString) (id string, pic string) {
  58. var (
  59. err error
  60. )
  61. driver := config.ConvertFonts()
  62. c := base64Captcha.NewCaptcha(driver, store)
  63. id, pic, err = c.Generate()
  64. if err != nil {
  65. panic(err)
  66. }
  67. return id, pic
  68. }
  69. // 手机号发送短信验证码
  70. func (a Auth) GenVFCode(codeTypeInt int, phone string, ip string,
  71. picId string,
  72. picCode string) (err error) {
  73. //图形验证码验证
  74. if !store.Verify(picId, picCode, true) {
  75. return errors.ErrPicVerifyCode
  76. }
  77. //生成短信验证码
  78. smsCode := "123456"
  79. //发送短信
  80. fmt.Println(smsCode)
  81. //存储短信验证码
  82. redisdb := rdb.GetRedis()
  83. redisdb.Set(global.AppName+":"+"smsCode:"+phone, []byte(smsCode), 3*time.Minute)
  84. return
  85. //dao := a.getUserDao()
  86. //_ = dao.User{}.GetUserByPhone(name)
  87. //h.LoalloutServer{}.CheckPhone(phone)
  88. //codeType := model.VFCodeCodeTypeFromInt(codeTypeInt)
  89. //vfcodeDao := dao.VFCode{}
  90. //nameLastSend := vfcodeDao.NameLastSendTime(codeType, name)
  91. //ipLastSend := vfcodeDao.IpLastSendTime(ip)
  92. //
  93. //// 手机号发送间隔
  94. //const NameSendInterval = time.Second * 60
  95. //// ip 发送间隔
  96. //const IpSendInterval = time.Second * 1
  97. //
  98. //if time.Now().Sub(nameLastSend) < NameSendInterval {
  99. // panic(errors.ErrSendTooFast)
  100. //}
  101. //if time.Now().Sub(ipLastSend) < IpSendInterval {
  102. // panic(errors.ErrSendTooFast)
  103. //}
  104. //
  105. //code := strconv.Itoa(utils.RandomInt(6))
  106. //
  107. //smDAO := short_msg.NewShortMsg()
  108. //smDAO.SendVFCode(name, code, codeType)
  109. //
  110. //vfcodeDao.Save(codeType, name, code, time.Now().Add(time.Minute*3), ip)
  111. }
  112. func (a Auth) PhoneSignIn(phone string, smsCode string, ip string) (
  113. sess *model.Session, err error) {
  114. //sess = NewSession
  115. //
  116. //gorm.VFCodeDAO{}.CheckVFCode(model.VFCodeCodeTypeLogin, phone, code)
  117. //
  118. //user := gorm.UserDAO{}.GetUserByPhone(phone)
  119. //user.CheckStatus()
  120. //
  121. //sess = function.Auth{}.WxLoginUser(user, channel, "", ip, phone, user.Phone)
  122. //logInfo = fmt.Sprintf("用户[%s]通过手机验证码登录", user.Name)
  123. return
  124. }
  125. //func (a Auth) PassEdit(sess *model.Session, oldpass string, newpass string) (
  126. // logInfo string, err error) {
  127. // user := a.getUser(sess)
  128. // userDAO := gorm.UserDAO{}
  129. // if !userDAO.PasswordCorrect(user.Id, oldpass) {
  130. // err = errors.ErrNamePwdIncorrect
  131. // return
  132. // }
  133. // err = userDAO.ShopManagerPassEdit(user, newpass)
  134. // if err != nil {
  135. // return
  136. // }
  137. // logInfo = fmt.Sprintf("用户[%s]修改密码", user.Name)
  138. // return
  139. //}
  140. //
  141. //func (a Auth) CheckPhone(phone string) (
  142. // md5 string) {
  143. //
  144. // user := gorm.UserDAO{}.CheckPhone(phone)
  145. // user.CheckStatus()
  146. //
  147. // md5 = user.UserMd5
  148. // return
  149. //}