go-common/app/job/main/passport-game-local/model/passport.go
2019-04-22 18:49:16 +08:00

74 lines
1.9 KiB
Go

package model
import (
"crypto/md5"
"encoding/hex"
)
const (
_cloudSalt = "bi_clould_tencent_01"
)
// AsoAccount aso account.
type AsoAccount struct {
Mid int64 `json:"mid"`
Userid string `json:"userid"`
Uname string `json:"uname"`
Pwd string `json:"pwd"`
Salt string `json:"salt"`
Email string `json:"email"`
Tel string `json:"tel"`
CountryID int64 `json:"country_id"`
MobileVerified int8 `json:"mobile_verified"`
Isleak int8 `json:"isleak"`
Mtime string `json:"mtime"`
}
// OriginAsoAccount origin aso account.
type OriginAsoAccount struct {
Mid int64 `json:"mid"`
Userid string `json:"userid"`
Uname string `json:"uname"`
Pwd string `json:"pwd"`
Salt string `json:"salt"`
Email string `json:"email"`
Tel string `json:"tel"`
CountryID int64 `json:"country_id"`
MobileVerified int8 `json:"mobile_verified"`
Isleak int8 `json:"isleak"`
Mtime string `json:"modify_time"`
}
// Default doHash aso account, including the followings fields: userid, uname, pwd, email, tel.
func Default(a *OriginAsoAccount) *AsoAccount {
return &AsoAccount{
Mid: a.Mid,
Userid: a.Userid,
Uname: a.Uname,
Pwd: doHash(a.Pwd, _cloudSalt),
Salt: a.Salt,
Email: doHash(a.Email, _cloudSalt),
Tel: doHash(a.Tel, _cloudSalt),
CountryID: a.CountryID,
MobileVerified: a.MobileVerified,
Isleak: a.Isleak,
Mtime: a.Mtime,
}
}
// DefaultHash hash a plain text using default salt.
func DefaultHash(plaintext string) string {
return doHash(plaintext, _cloudSalt)
}
func doHash(plaintext, salt string) string {
if plaintext == "" {
return ""
}
hash := md5.New()
hash.Write([]byte(plaintext))
hash.Write([]byte(salt))
md := hash.Sum(nil)
return hex.EncodeToString(md)
}