|
|
|
|
package custom
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"strconv"
|
|
|
|
|
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/api/admin/systemuser"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/api/v1/staff"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/commonus"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
|
|
|
|
|
systemReq "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/utils"
|
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/utils/redishandel"
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
//自定义登录
|
|
|
|
|
func (cu *CustomHandle) CustomLogin(c *gin.Context) {
|
|
|
|
|
var l systemReq.Login
|
|
|
|
|
_ = c.ShouldBindJSON(&l)
|
|
|
|
|
// if err := utils.Verify(l, utils.LoginVerify); err != nil {
|
|
|
|
|
// response.FailWithMessage(err.Error(), c)
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
userAgent := c.Request.Header.Get("User-Agent")
|
|
|
|
|
userAgent = "250"
|
|
|
|
|
// store
|
|
|
|
|
// if store.Verify(l.CaptchaId, l.Captcha, true) {
|
|
|
|
|
userErr, user := staff.GetUserWork(l.Username, l.Password)
|
|
|
|
|
if userErr != true {
|
|
|
|
|
// // global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Any("err", err))
|
|
|
|
|
response.Result(101, userErr, "登陆失败! 用户名不存在或者密码错误!!", c)
|
|
|
|
|
return
|
|
|
|
|
} else {
|
|
|
|
|
if user.State == 2 {
|
|
|
|
|
response.Result(102, userErr, "登陆失败! 该账号已经被禁用!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if user.State == 3 {
|
|
|
|
|
response.Result(102, userErr, "登陆失败! 该账号不存在!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if user.HireSet != 1 {
|
|
|
|
|
response.Result(102, userErr, "登陆失败! 该员工已经离职!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
var md5JiaMi commonus.Md5Encryption
|
|
|
|
|
md5JiaMi.Md5EncryptionInit(userAgent)
|
|
|
|
|
md5Token := md5JiaMi.Md5EncryptionAlgorithm()
|
|
|
|
|
|
|
|
|
|
sha1Str := user.KeyStr + user.Number + user.Password + md5Token
|
|
|
|
|
sha1Token := commonus.Sha1Encryption(sha1Str)
|
|
|
|
|
|
|
|
|
|
saveData := commonus.MapOut()
|
|
|
|
|
saveData["key"] = user.KeyStr
|
|
|
|
|
saveData["token"] = sha1Token
|
|
|
|
|
saveData["userinfo"] = user
|
|
|
|
|
|
|
|
|
|
redisClient := redishandel.RunRedis()
|
|
|
|
|
redisClient.SetRedisTime(86400)
|
|
|
|
|
// redisClient.SetRedisTime(60)
|
|
|
|
|
writeRedisData := map[string]interface{}{
|
|
|
|
|
"userkey": user.KeyStr,
|
|
|
|
|
"usernumber": user.Number,
|
|
|
|
|
"userpwd": user.Password,
|
|
|
|
|
"usertoken": sha1Token,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// global.GVA_INDEX_USERKEY = user.Key
|
|
|
|
|
|
|
|
|
|
redisClient.HashMsetAdd("system:Identification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, writeRedisData)
|
|
|
|
|
|
|
|
|
|
userInfo := commonus.MapOut()
|
|
|
|
|
userInfo["id"] = user.Id
|
|
|
|
|
userInfo["number"] = user.Number
|
|
|
|
|
userInfo["departmentid"] = user.DepartmentId
|
|
|
|
|
userInfo["workshopid"] = user.WorkshopId
|
|
|
|
|
userInfo["postid"] = user.PostId
|
|
|
|
|
userInfo["key"] = user.Key
|
|
|
|
|
userInfo["group"] = user.Group
|
|
|
|
|
userInfo["tema"] = user.Tema
|
|
|
|
|
userInfo["workwechatid"] = user.WorkWechatId
|
|
|
|
|
userInfo["wechatid"] = user.WechatId
|
|
|
|
|
userInfo["name"] = user.Name
|
|
|
|
|
userInfo["nickname"] = user.NickName
|
|
|
|
|
|
|
|
|
|
redisUserClient := redishandel.RunRedis()
|
|
|
|
|
redisUserClient.SetRedisTime(0)
|
|
|
|
|
redisUserClient.HashMsetAdd("system:userContent_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, userInfo)
|
|
|
|
|
// // b.tokenNext(c, *user)
|
|
|
|
|
response.Result(0, saveData, "登录成功!", c)
|
|
|
|
|
}
|
|
|
|
|
// } else {
|
|
|
|
|
// response.FailWithMessage("验证码错误", c)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//自定义登录
|
|
|
|
|
func (cu *CustomHandle) SystemLogin(c *gin.Context) {
|
|
|
|
|
var l systemReq.Login
|
|
|
|
|
_ = c.ShouldBindJSON(&l)
|
|
|
|
|
if err := utils.Verify(l, utils.LoginVerify); err != nil {
|
|
|
|
|
response.FailWithMessage(err.Error(), c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
userAgent := c.Request.Header.Get("User-Agent")
|
|
|
|
|
// store
|
|
|
|
|
// if store.Verify(l.CaptchaId, l.Captcha, true) {
|
|
|
|
|
userErr, user := systemuser.GetSysAdminLoginInfo(l.Username, l.Password)
|
|
|
|
|
if userErr != true {
|
|
|
|
|
// // global.GVA_LOG.Error("登陆失败! 用户名不存在或者密码错误!", zap.Any("err", err))
|
|
|
|
|
response.Result(101, userErr, "登陆失败! 用户名不存在或者密码错误!!", c)
|
|
|
|
|
return
|
|
|
|
|
} else {
|
|
|
|
|
if user.State == 2 {
|
|
|
|
|
response.Result(102, userErr, "登陆失败! 该账号已经被禁用!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if user.State == 3 {
|
|
|
|
|
response.Result(102, userErr, "登陆失败! 该账号不存在!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
var md5JiaMi commonus.Md5Encryption
|
|
|
|
|
md5JiaMi.Md5EncryptionInit(userAgent)
|
|
|
|
|
md5Token := md5JiaMi.Md5EncryptionAlgorithm()
|
|
|
|
|
|
|
|
|
|
sha1Str := user.KeyStr + user.Name + user.PassWord + md5Token
|
|
|
|
|
sha1Token := commonus.Sha1Encryption(sha1Str)
|
|
|
|
|
|
|
|
|
|
saveData := commonus.MapOut()
|
|
|
|
|
saveData["key"] = user.KeyStr
|
|
|
|
|
saveData["token"] = sha1Token
|
|
|
|
|
saveData["userinfo"] = user
|
|
|
|
|
|
|
|
|
|
redisClient := redishandel.RunRedis()
|
|
|
|
|
redisClient.SetRedisTime(86400)
|
|
|
|
|
writeRedisData := map[string]interface{}{
|
|
|
|
|
"userkey": user.KeyStr,
|
|
|
|
|
"usernumber": user.Name,
|
|
|
|
|
"userpwd": user.PassWord,
|
|
|
|
|
"usertoken": sha1Token,
|
|
|
|
|
"jurisdiction": user.Jurisdiction,
|
|
|
|
|
"menuOper": user.MenuOper,
|
|
|
|
|
"wand": user.Wand,
|
|
|
|
|
}
|
|
|
|
|
redisClient.HashMsetAdd("system:SystemIdentification_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, writeRedisData)
|
|
|
|
|
|
|
|
|
|
adminRedisData := map[string]interface{}{
|
|
|
|
|
"userkey": user.KeyStr,
|
|
|
|
|
"usernumber": user.Name,
|
|
|
|
|
"userpwd": user.PassWord,
|
|
|
|
|
"usertoken": sha1Token,
|
|
|
|
|
"jurisdiction": user.Jurisdiction,
|
|
|
|
|
"menuOper": user.MenuOper,
|
|
|
|
|
"wand": user.Wand,
|
|
|
|
|
"name": user.NameAttr,
|
|
|
|
|
"groupname": user.GroupName,
|
|
|
|
|
"group": user.Group,
|
|
|
|
|
"attribute": user.Attribute,
|
|
|
|
|
"branchfactoryname": user.BranchFactoryName,
|
|
|
|
|
"role": user.Role,
|
|
|
|
|
"roleName": user.RoleName,
|
|
|
|
|
}
|
|
|
|
|
redisAdminClient := redishandel.RunRedis()
|
|
|
|
|
redisAdminClient.SetRedisTime(0)
|
|
|
|
|
redisAdminClient.HashMsetAdd("system:SystemAdminInfo_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+user.KeyStr, adminRedisData)
|
|
|
|
|
|
|
|
|
|
global.GVA_ADMIN_USERKEY = user.Key
|
|
|
|
|
// // b.tokenNext(c, *user)
|
|
|
|
|
var surisdictionStr []string
|
|
|
|
|
var surisdictionInt []int64
|
|
|
|
|
jsonErr := json.Unmarshal([]byte(user.Jurisdiction), &surisdictionStr)
|
|
|
|
|
if jsonErr == nil {
|
|
|
|
|
for _, jurVal := range surisdictionStr {
|
|
|
|
|
jurValInt, jurValErr := strconv.ParseInt(jurVal, 10, 64)
|
|
|
|
|
if jurValErr == nil {
|
|
|
|
|
surisdictionInt = append(surisdictionInt, jurValInt)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
global.Gva_Authority_Authentication = surisdictionInt
|
|
|
|
|
var menuOperStr []string
|
|
|
|
|
var menuOperInts []int64
|
|
|
|
|
jsonErrSun := json.Unmarshal([]byte(user.MenuOper), &menuOperStr)
|
|
|
|
|
if jsonErrSun == nil {
|
|
|
|
|
for _, menuOperVal := range menuOperStr {
|
|
|
|
|
menuOperInt, menuOperErr := strconv.ParseInt(menuOperVal, 10, 64)
|
|
|
|
|
if menuOperErr == nil {
|
|
|
|
|
menuOperInts = append(menuOperInts, menuOperInt)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
global.Gva_Authority_Authentication_Subsidiary = menuOperInts
|
|
|
|
|
saveData["Jurisdiction"] = global.Gva_Authority_Authentication
|
|
|
|
|
saveData["MenuOper"] = global.Gva_Authority_Authentication_Subsidiary
|
|
|
|
|
|
|
|
|
|
// saveData["jsonErr"] = jsonErr
|
|
|
|
|
// saveData["jsonErrSun"] = jsonErrSun
|
|
|
|
|
|
|
|
|
|
response.Result(0, saveData, "登录成功!", c)
|
|
|
|
|
}
|
|
|
|
|
// } else {
|
|
|
|
|
// response.FailWithMessage("验证码错误", c)
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//oauth2.0
|
|
|
|
|
func (cu *CustomHandle) OauthTwo(c *gin.Context) {
|
|
|
|
|
var requestData getData
|
|
|
|
|
err := c.ShouldBindJSON(&requestData)
|
|
|
|
|
if err != nil {
|
|
|
|
|
response.Result(101, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if requestData.Number == "" {
|
|
|
|
|
response.Result(102, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
redisClient := redishandel.RunRedis()
|
|
|
|
|
tokenErr, token := redisClient.Get("system:Oauth2_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + requestData.Number)
|
|
|
|
|
if tokenErr == true {
|
|
|
|
|
saveData := commonus.MapOut()
|
|
|
|
|
saveData["token"] = token
|
|
|
|
|
response.Result(0, saveData, "登录成功!", c)
|
|
|
|
|
} else {
|
|
|
|
|
userAgent := c.Request.Header.Get("User-Agent")
|
|
|
|
|
var md5JiaMi commonus.Md5Encryption
|
|
|
|
|
md5JiaMi.Md5EncryptionInit(userAgent)
|
|
|
|
|
md5Token := md5JiaMi.Md5EncryptionAlgorithm()
|
|
|
|
|
|
|
|
|
|
var md5Number commonus.Md5Encryption
|
|
|
|
|
md5Number.Md5EncryptionInit(requestData.Number)
|
|
|
|
|
md5NumberToken := md5Number.Md5EncryptionAlgorithm()
|
|
|
|
|
|
|
|
|
|
sha1Str := fmt.Sprintf("%v-%v-%v", md5Token, requestData.Number, md5NumberToken)
|
|
|
|
|
sha1Token := commonus.Sha1Encryption(sha1Str)
|
|
|
|
|
|
|
|
|
|
saveData := commonus.MapOut()
|
|
|
|
|
saveData["token"] = sha1Token
|
|
|
|
|
redisClient.SetRedisTime(10800)
|
|
|
|
|
redisClient.Set("system:Oauth2_"+global.GVA_CONFIG.RedisPrefix.Alias+"_"+requestData.Number, sha1Token)
|
|
|
|
|
response.Result(0, saveData, "Token获取成功!", c)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//企业微信单点登录
|
|
|
|
|
func (cu *CustomHandle) SingleSignOn(c *gin.Context) {
|
|
|
|
|
var requestData oneLogin
|
|
|
|
|
err := c.ShouldBindJSON(&requestData)
|
|
|
|
|
if err != nil {
|
|
|
|
|
response.Result(101, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if requestData.Number == "" {
|
|
|
|
|
response.Result(102, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if requestData.Token == "" {
|
|
|
|
|
response.Result(102, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if requestData.OpenId == "" {
|
|
|
|
|
response.Result(102, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
redisClient := redishandel.RunRedis()
|
|
|
|
|
tokenErr, token := redisClient.Get("system:Oauth2_" + global.GVA_CONFIG.RedisPrefix.Alias + "_" + requestData.Number)
|
|
|
|
|
if tokenErr != true {
|
|
|
|
|
response.Result(103, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if token != requestData.Token {
|
|
|
|
|
response.Result(103, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
isTrue, userInfo := commonus.GetUesrContForWechatID(requestData.OpenId)
|
|
|
|
|
if isTrue != true {
|
|
|
|
|
response.Result(103, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取操作人
|
|
|
|
|
userFileStr := "worker_man.*,worker_man_data.*"
|
|
|
|
|
//操作人条件
|
|
|
|
|
userWherAry := commonus.MapOut()
|
|
|
|
|
// userWherAry["wm_key"] = "WoBenShanLiang_3" //"WoBenShanLiang_3"
|
|
|
|
|
userWherAry["wm_key"] = userInfo.Key
|
|
|
|
|
userConting, userIsTrue := commonus.GetUserInfoPublic(userFileStr, userWherAry)
|
|
|
|
|
if userIsTrue != true {
|
|
|
|
|
response.Result(103, err, "单点登录登录失败!", c)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
userAgent := c.Request.Header.Get("User-Agent")
|
|
|
|
|
|
|
|
|
|
var md5JiaMi commonus.Md5Encryption
|
|
|
|
|
md5JiaMi.Md5EncryptionInit(userAgent)
|
|
|
|
|
md5Token := md5JiaMi.Md5EncryptionAlgorithm()
|
|
|
|
|
|
|
|
|
|
sha1Str := fmt.Sprintf("%v%v%v%v", userConting.Key, userConting.Number, userConting.Password, md5Token)
|
|
|
|
|
sha1Token := commonus.Sha1Encryption(sha1Str)
|
|
|
|
|
|
|
|
|
|
saveData := commonus.MapOut()
|
|
|
|
|
saveData["key"] = userConting.Key
|
|
|
|
|
saveData["token"] = sha1Token
|
|
|
|
|
saveData["userinfo"] = userConting
|
|
|
|
|
|
|
|
|
|
writeRedisData := map[string]interface{}{
|
|
|
|
|
"userkey": userInfo.Key,
|
|
|
|
|
"usernumber": userInfo.Number,
|
|
|
|
|
"userpwd": userConting.Password,
|
|
|
|
|
"usertoken": sha1Token,
|
|
|
|
|
}
|
|
|
|
|
redisClient.SetRedisTime(86400)
|
|
|
|
|
redisKey := fmt.Sprintf("system:Identification_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userInfo.Key)
|
|
|
|
|
redisClient.HashMsetAdd(redisKey, writeRedisData)
|
|
|
|
|
|
|
|
|
|
userInfoMap := commonus.MapOut()
|
|
|
|
|
userInfoMap["id"] = userConting.Id
|
|
|
|
|
userInfoMap["number"] = userConting.Number
|
|
|
|
|
userInfoMap["departmentid"] = userConting.DepartmentId
|
|
|
|
|
userInfoMap["workshopid"] = userConting.WorkshopId
|
|
|
|
|
userInfoMap["postid"] = userConting.PostId
|
|
|
|
|
userInfoMap["key"] = userConting.Key
|
|
|
|
|
userInfoMap["group"] = userConting.Group
|
|
|
|
|
userInfoMap["tema"] = userConting.Tema
|
|
|
|
|
userInfoMap["workwechatid"] = userConting.WorkWechatId
|
|
|
|
|
userInfoMap["wechatid"] = userConting.WechatId
|
|
|
|
|
userInfoMap["name"] = userConting.Name
|
|
|
|
|
userInfoMap["nickname"] = userConting.NickName
|
|
|
|
|
|
|
|
|
|
redisUserClient := redishandel.RunRedis()
|
|
|
|
|
redisUserClient.SetRedisTime(0)
|
|
|
|
|
redisKeyMap := fmt.Sprintf("system:userContent_%v_%v", global.GVA_CONFIG.RedisPrefix.Alias, userInfo.Key)
|
|
|
|
|
redisUserClient.HashMsetAdd(redisKeyMap, userInfoMap)
|
|
|
|
|
response.Result(0, saveData, "登录成功!", c)
|
|
|
|
|
}
|