|
|
package serveauth
|
|
|
|
|
|
import (
|
|
|
"crypto/sha1"
|
|
|
"encoding/hex"
|
|
|
"fmt"
|
|
|
"io"
|
|
|
"oppmg/common/config"
|
|
|
"oppmg/common/log"
|
|
|
"oppmg/models"
|
|
|
"oppmg/protocol"
|
|
|
"oppmg/utils"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
|
"github.com/astaxie/beego/orm"
|
|
|
)
|
|
|
|
|
|
//GetAccessToken 获取accessToken
|
|
|
func GetAccessToken(param protocol.RequestCheckSmsCode) (*protocol.DataUserInfo, error) {
|
|
|
data := &protocol.DataUserInfo{}
|
|
|
err := protocol.NewErrWithMessage("00000")
|
|
|
log.Info("log 打印")
|
|
|
log.Info("%+v", config.MConfig)
|
|
|
return data, err
|
|
|
}
|
|
|
|
|
|
//ValidatePassword ...
|
|
|
//from:待校验的密码;to:比对用的密文
|
|
|
func validatePassword(from, to string) bool {
|
|
|
//密码加密方式sha1
|
|
|
h := sha1.New()
|
|
|
io.WriteString(h, from)
|
|
|
str := hex.EncodeToString(h.Sum(nil))
|
|
|
if strings.Compare(str, to) == 0 {
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
//LoginAuth 登录认证
|
|
|
func LoginAuthByPassword(account, password string) error {
|
|
|
var (
|
|
|
user *models.User
|
|
|
uAuth *models.UserAuth
|
|
|
err error
|
|
|
)
|
|
|
user, err = models.GetUserByPhone(account)
|
|
|
if err != nil {
|
|
|
log.Error(err.Error())
|
|
|
return protocol.NewErrWithMessage("1", err)
|
|
|
}
|
|
|
if ok := validatePassword(password, user.Passwd); !ok {
|
|
|
return protocol.NewErrWithMessage("1", err)
|
|
|
}
|
|
|
|
|
|
uAuth, err = models.ReadUserAuthByDevice(user.Id, models.DEVICE_TYPE_WEB)
|
|
|
if err != nil && err != orm.ErrNoRows {
|
|
|
e := fmt.Errorf("ReadUserAuthByDevice(%d,%d) err:%s", user.Id, models.DEVICE_TYPE_WEB, err)
|
|
|
log.Error(e.Error())
|
|
|
return protocol.NewErrWithMessage("1", e)
|
|
|
}
|
|
|
var (
|
|
|
authcode string
|
|
|
authcodeExp time.Time
|
|
|
)
|
|
|
authcode = utils.GenerateIDByUUID()
|
|
|
authcodeExp = time.Now().Add(time.Duration(models.AUTHCODE_TIME) * time.Second)
|
|
|
if err == orm.ErrNoRows {
|
|
|
uAuth := &models.UserAuth{
|
|
|
UserId: user.Id,
|
|
|
AuthCode: authcode,
|
|
|
AuthCodeExp: authcodeExp,
|
|
|
CreateAt: time.Now(),
|
|
|
}
|
|
|
_, err = models.AddUserAuth(uAuth)
|
|
|
if err != nil {
|
|
|
e := fmt.Errorf("AddUserAuth err:%s", err)
|
|
|
log.Error(e.Error())
|
|
|
return protocol.NewErrWithMessage("1", e)
|
|
|
}
|
|
|
}
|
|
|
if err == nil {
|
|
|
uAuth.AuthCode = authcode
|
|
|
uAuth.AuthCodeExp = authcodeExp
|
|
|
uAuth.UpdateAt = time.Now()
|
|
|
err = models.UpdateUserAuthById(uAuth)
|
|
|
if err != nil {
|
|
|
e := fmt.Errorf("UpdateUserAuthById err:%s", err)
|
|
|
log.Error(e.Error())
|
|
|
return protocol.NewErrWithMessage("1", e)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
//RefreshAccessToken 刷新token
|
|
|
func RefreshAccessToken(account string, token string) error {
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// func buildNewUserAuth(uid int64,) *models.UserAuth {
|
|
|
// m:=&models.UserAuth{
|
|
|
// User
|
|
|
// }
|
|
|
// return nil
|
|
|
// } |