HR管理系统
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.

116 lines
3.7 KiB

package authorize
import (
"fmt"
"hr_server/grocerystore"
"hr_server/models"
"hr_server/overall"
"hr_server/overall/overallhandle"
"strconv"
"github.com/gin-gonic/gin"
)
//授权
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 {
overallhandle.Result(100, err, c)
return
}
if ContentType == "" || userAgent == "" || Origin == "" {
overallhandle.Result(100, err, c)
return
}
if requestData.UserNumber == "" || requestData.Password == "" {
overallhandle.Result(101, err, c)
return
}
//密码加密
var passwordMd5 overallhandle.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 {
overallhandle.Result(2000, userErr, c)
return
}
//获取随机数
randCode := strconv.FormatInt(overallhandle.TableNumber(), 10)
//头文件加密
//ContentType
var ContentTypeMd5 overallhandle.Md5Encryption
if empowerUser.VerificationCode != "" {
ContentTypeMd5.AppKey = empowerUser.VerificationCode
}
ContentTypeMd5.Md5EncryptionInit(ContentType)
ContentTypeMd5Str := ContentTypeMd5.Md5EncryptionAlgorithm()
//Origin
var OriginMd5 overallhandle.Md5Encryption
if empowerUser.VerificationCode != "" {
OriginMd5.AppKey = empowerUser.VerificationCode
}
OriginMd5.Md5EncryptionInit(Origin)
originMd5Str := OriginMd5.Md5EncryptionAlgorithm()
//userAgent
var userAgentMd5 overallhandle.Md5Encryption
if empowerUser.VerificationCode != "" {
userAgentMd5.AppKey = empowerUser.VerificationCode
}
userAgentMd5.Md5EncryptionInit(userAgent)
userAgentMd5Str := userAgentMd5.Md5EncryptionAlgorithm()
//随机数加密
var randomNumberMd5 overallhandle.Md5Encryption
if empowerUser.VerificationCode != "" {
randomNumberMd5.AppKey = empowerUser.VerificationCode
}
randomNumberMd5.Md5EncryptionInit(randCode)
numberMd5 := randomNumberMd5.Md5EncryptionAlgorithm()
//用户名加密
var userKeyMd5 overallhandle.Md5Encryption
if empowerUser.VerificationCode != "" {
userKeyMd5.AppKey = empowerUser.VerificationCode
}
userKeyMd5.Md5EncryptionInit(requestData.UserNumber)
userKeyMd5Str := userKeyMd5.Md5EncryptionAlgorithm()
clearCodeToken := fmt.Sprintf("%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
fmt.Printf("redisKey---->%v-%v-%v-%v-%v-%v", ContentTypeMd5Str, originMd5Str, userAgentMd5Str, numberMd5, userKeyMd5Str, passwordMd5Str)
//token 加密
var tokenMd5 overallhandle.Md5Encryption
tokenMd5.Md5EncryptionInit(clearCodeToken)
tokenMd5Str := tokenMd5.Md5EncryptionAlgorithm()
//设定redis Key名称
redisKey := fmt.Sprintf("Authentication:ApiAuthent_%v", tokenMd5Str)
saveTokenRedis := overallhandle.MapOut()
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 overallhandle.Md5Encryption
// clearTokenMd5.Md5EncryptionInit(clearTokenStr)
// clearTokenMd5Str := clearTokenMd5.Md5EncryptionAlgorithm()
var sendToken SendToken
sendToken.Number = randCode
sendToken.Token = tokenMd5Str
overallhandle.Result(0, sendToken, c)
}