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 //}