You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.9 KiB
147 lines
4.9 KiB
package authorize
|
|
|
|
import (
|
|
"fmt"
|
|
"key_performance_indicators/overall"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"key_performance_indicators/middleware/grocerystore"
|
|
"key_performance_indicators/models"
|
|
"key_performance_indicators/overall/publicmethod"
|
|
)
|
|
|
|
//授权
|
|
func (e *EmpowerApi) GainToken(c *gin.Context) {
|
|
ContentType := c.Request.Header.Get("Content-Type")
|
|
Origin := c.Request.Header.Get("Origin")
|
|
userAgent := c.Request.Header.Get("User-Agent")
|
|
|
|
var requestData gainAuthorize
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
|
|
if ContentType == "" || userAgent == "" || Origin == "" {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
|
|
if requestData.UserNumber == "" || requestData.Password == "" {
|
|
publicmethod.Result(101, err, c)
|
|
return
|
|
}
|
|
//密码加密
|
|
var passwordMd5 publicmethod.Md5Encryption
|
|
passwordMd5.Md5EncryptionInit(requestData.Password)
|
|
passwordMd5Str := passwordMd5.Md5EncryptionAlgorithm()
|
|
var empowerUser models.EmpowerUser
|
|
userErr := empowerUser.GetCont(map[string]interface{}{"userkey": requestData.UserNumber, "password": passwordMd5Str}, "verification_code")
|
|
if userErr != nil {
|
|
publicmethod.Result(2000, passwordMd5Str, c)
|
|
return
|
|
}
|
|
//获取随机数
|
|
randCode := strconv.FormatInt(publicmethod.TableNumber(), 10)
|
|
// randCode := strconv.FormatInt(16557925694780, 10)
|
|
//头文件加密
|
|
//ContentType
|
|
var ContentTypeMd5 publicmethod.Md5Encryption
|
|
ContentTypeMd5.Md5EncryptionInit(ContentType)
|
|
if empowerUser.VerificationCode != "" {
|
|
ContentTypeMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
|
|
fmt.Printf("ContentTypeMd5Str ----->%v\n", ContentTypeMd5)
|
|
|
|
ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm()
|
|
//Origin
|
|
var OriginMd5 publicmethod.Md5Encryption
|
|
OriginMd5.Md5EncryptionInit(Origin)
|
|
if empowerUser.VerificationCode != "" {
|
|
OriginMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
|
|
originMd5Str := OriginMd5.Md5EncryptionAlgorithm()
|
|
//userAgent
|
|
var userAgentMd5 publicmethod.Md5Encryption
|
|
userAgentMd5.Md5EncryptionInit(userAgent)
|
|
if empowerUser.VerificationCode != "" {
|
|
userAgentMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
userAgentMd5Str := userAgentMd5.Md5EncryptionAlgorithm()
|
|
|
|
//随机数加密
|
|
var randomNumberMd5 publicmethod.Md5Encryption
|
|
randomNumberMd5.Md5EncryptionInit(randCode)
|
|
if empowerUser.VerificationCode != "" {
|
|
randomNumberMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
numberMd5 := randomNumberMd5.Md5EncryptionAlgorithm()
|
|
|
|
//用户名加密
|
|
var userKeyMd5 publicmethod.Md5Encryption
|
|
userKeyMd5.Md5EncryptionInit(requestData.UserNumber)
|
|
if empowerUser.VerificationCode != "" {
|
|
userKeyMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
userKeyMd5Str := userKeyMd5.Md5EncryptionAlgorithm()
|
|
|
|
clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
|
|
|
|
fmt.Printf("redisKey---->ContentTypeMd5Str:%v-originMd5Str:%v-userAgentMd5Str:%v-numberMd5:%v-userKeyMd5Str:%v-passwordMd5Str:%v\n", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
|
|
//token 加密
|
|
var tokenMd5 publicmethod.Md5Encryption
|
|
tokenMd5.Md5EncryptionInit(clearCodeToken)
|
|
if empowerUser.VerificationCode != "" {
|
|
tokenMd5.AppKey = empowerUser.VerificationCode
|
|
}
|
|
fmt.Printf("tokenMd5Appk ----->%v\n", tokenMd5)
|
|
tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm()
|
|
|
|
//设定redis Key名称
|
|
redisKey := fmt.Sprintf("Authentication:ApiAuthent_%v", tokenMd5Str)
|
|
|
|
saveTokenRedis := publicmethod.MapOut[string]()
|
|
saveTokenRedis["number"] = randCode
|
|
saveTokenRedis["userkey"] = requestData.UserNumber
|
|
saveTokenRedis["password"] = requestData.Password
|
|
//将验证信息写入Redis
|
|
redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS3)
|
|
redisClient.SetRedisTime(10800)
|
|
redisClient.HashMsetAdd(redisKey, saveTokenRedis)
|
|
//输出验证
|
|
// clearTokenStr := fmt.Sprintf("%v-%v", tokenMd5Str, numberMd5)
|
|
// var clearTokenMd5 publicmethod.Md5Encryption
|
|
// clearTokenMd5.Md5EncryptionInit(clearTokenStr)
|
|
// clearTokenMd5Str := clearTokenMd5.Md5EncryptionAlgorithm()
|
|
var sendToken SendToken
|
|
sendToken.Number = randCode
|
|
sendToken.Token = tokenMd5Str
|
|
publicmethod.Result(0, sendToken, c)
|
|
}
|
|
|
|
//加密验证
|
|
func (e *EmpowerApi) Encryption(c *gin.Context) {
|
|
var requestData EncryptionData
|
|
err := c.ShouldBindJSON(&requestData)
|
|
if err != nil {
|
|
publicmethod.Result(100, err, c)
|
|
return
|
|
}
|
|
var ContentTypeMd5 publicmethod.Md5Encryption
|
|
ContentTypeMd5.Md5EncryptionInit(requestData.Number)
|
|
ContentTypeMd5.AppKey = requestData.AppKey
|
|
ContentTypeMd5Str, dfg := ContentTypeMd5.Md5EncryptionAlgorithmFj()
|
|
outputCont := publicmethod.MapOut[string]()
|
|
outputCont["index"] = "MD5加密验证"
|
|
// outputCont["userErr"] = userErr
|
|
outputCont["md5"] = ContentTypeMd5Str
|
|
outputCont["number"] = requestData.Number
|
|
outputCont["appkey"] = requestData.AppKey
|
|
outputCont["step"] = dfg
|
|
publicmethod.Result(0, outputCont, c)
|
|
}
|
|
|