| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- package service
- import (
- "fmt"
- "github.com/mojocn/base64Captcha"
- "time"
- "video_course/errors"
- "video_course/global"
- "video_course/lib/session"
- "video_course/model"
- h "video_course/repository/http"
- rdb "video_course/repository/redis"
- )
- var store = base64Captcha.DefaultMemStore
- type Auth struct {
- base
- }
- //
- //func (a Auth) SignOut(session *model.Session) (logInfo string) {
- // user := a.getUser(session)
- // function.Session{}.Delete(session)
- // logInfo = fmt.Sprintf("用户[%s]退出", user.GetShowName())
- // return
- //}
- //func (a Auth) SignIn(
- // verifyName string,
- // password string,
- // channel model.LoginChannel,
- // picId string,
- // picCode string,
- // ip string) (sess *model.Session, logInfo string) {
- // var user *model.User
- //
- // defer func() {
- // if p := recover(); p == nil {
- // logInfo = fmt.Sprintf("用户[%s]在%s登录成功", user.GetShowName(), channel)
- // } else {
- // panic(p)
- // }
- // }()
- //
- // if !store.Verify(picId, picCode, true) {
- // panic(errors.ErrPicVerifyCode)
- // }
- //
- // dao := gorm.UserDAO{}
- // shopDao := gorm.ShopDAO{}
- // user = dao.GetUserByVerifyName(verifyName)
- // user.CheckStatus()
- // shop, _ := shopDao.ShopDetailOne(user.ShopId)
- // shop.CheckShopStatus()
- //
- // if !dao.PasswordCorrect(user.Id, password) {
- // panic(errors.ErrPassword)
- // }
- // sess = function.Auth{}.LoginUser(user, channel, "", ip)
- //
- // return
- //}
- func (Auth) GenVerifyPic(config *base64Captcha.DriverString) (id string, pic string) {
- var (
- err error
- )
- driver := config.ConvertFonts()
- c := base64Captcha.NewCaptcha(driver, store)
- id, pic, err = c.Generate()
- if err != nil {
- panic(err)
- }
- return id, pic
- }
- // 手机号发送短信验证码
- func (a Auth) GenVFCode(codeTypeInt int, phone string, ip string,
- picId string,
- picCode string) (err error) {
- //图形验证码验证
- //if !store.Verify(picId, picCode, true) {
- // return errors.ErrPicVerifyCode
- //}
- //手机号验证
- userMd5 := h.LoalloutServer{}.CheckPhone(phone)
- if userMd5 == "" {
- return errors.ErrUserNotExists
- }
- //生成短信验证码
- //rand.Seed(time.Now().Unix())
- //smsInt := rand.Int31n(10000)
- //smsCode := strconv.Itoa(smsInt)
- smsCode := "12345678"
- //存储短信验证码
- redisdb := rdb.GetRedis()
- redisdb.Set(global.ProjectName+":"+global.AppName+":"+"smsCode:"+phone, []byte(smsCode), 3*time.Minute)
- //发送短信
- fmt.Println(smsCode)
- return
- //dao := a.getUserDao()
- //_ = dao.User{}.GetUserByPhone(name)
- //h.LoalloutServer{}.CheckPhone(phone)
- //codeType := model.VFCodeCodeTypeFromInt(codeTypeInt)
- //vfcodeDao := dao.VFCode{}
- //nameLastSend := vfcodeDao.NameLastSendTime(codeType, name)
- //ipLastSend := vfcodeDao.IpLastSendTime(ip)
- //
- //// 手机号发送间隔
- //const NameSendInterval = time.Second * 60
- //// ip 发送间隔
- //const IpSendInterval = time.Second * 1
- //
- //if time.Now().Sub(nameLastSend) < NameSendInterval {
- // panic(errors.ErrSendTooFast)
- //}
- //if time.Now().Sub(ipLastSend) < IpSendInterval {
- // panic(errors.ErrSendTooFast)
- //}
- //
- //code := strconv.Itoa(utils.RandomInt(6))
- //
- //smDAO := short_msg.NewShortMsg()
- //smDAO.SendVFCode(name, code, codeType)
- //
- //vfcodeDao.Save(codeType, name, code, time.Now().Add(time.Minute*3), ip)
- }
- func (a Auth) PhoneSignIn(phone string, smsCode string, ip string) (
- s *model.Session, err error) {
- //验证短信手机号和验证码
- redisdb := rdb.GetRedis()
- tmpCode, err_ := redisdb.Get(global.ProjectName + ":" + global.AppName + ":" + "smsCode:" + phone).Result()
- if err_ != nil {
- err = err_
- return
- }
- if tmpCode != smsCode {
- err = errors.NewServiceErr(errors.CodePermissionDenied, "手机验证码不正确")
- return
- }
- //获取usermd5
- userMd5 := h.LoalloutServer{}.CheckPhone(phone)
- //创建session
- sm := session.GetSessionManager()
- sess2, err_ := sm.CreateSession(userMd5, "src", time.Now().Add(time.Hour*24*5))
- if err_ != nil {
- err = err_
- return
- }
- s = model.NewSession(sess2)
- return
- }
- //func (a Auth) PassEdit(sess *model.Session, oldpass string, newpass string) (
- // logInfo string, err error) {
- // user := a.getUser(sess)
- // userDAO := gorm.UserDAO{}
- // if !userDAO.PasswordCorrect(user.Id, oldpass) {
- // err = errors.ErrNamePwdIncorrect
- // return
- // }
- // err = userDAO.ShopManagerPassEdit(user, newpass)
- // if err != nil {
- // return
- // }
- // logInfo = fmt.Sprintf("用户[%s]修改密码", user.Name)
- // return
- //}
- //
- //func (a Auth) CheckPhone(phone string) (
- // md5 string) {
- //
- // user := gorm.UserDAO{}.CheckPhone(phone)
- // user.CheckStatus()
- //
- // md5 = user.UserMd5
- // return
- //}
|