package interceptor import ( "fmt" "key_performance_indicators/middleware/grocerystore" "key_performance_indicators/overall" "key_performance_indicators/overall/publicmethod" "github.com/flipped-aurora/gin-vue-admin/server/model/common/response" "github.com/gin-gonic/gin" ) // 验证用户是否登录 func AuthenticateUser() gin.HandlerFunc { return func(c *gin.Context) { userKey := c.Request.Header.Get("user-key") userToken := c.Request.Header.Get("user-token") userAgent := c.Request.Header.Get("User-Agent") // fmt.Printf("userKey---------->%v----------userToken---------->%v--------userAgent---------->%v\n", userKey, userToken, userAgent) if userKey == "" || userToken == "" || userAgent == "" { response.FailWithDetailed(gin.H{"reload": false, "code": 300}, "未登录或非法访问", c) c.Abort() return } redisFileKey := fmt.Sprintf("ScanCode:Authentication:LoginApi_%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, userKey) redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS5) userRedisToken, isTrue := redisClient.HashGetAll(redisFileKey) if isTrue == false { response.FailWithDetailed(gin.H{"reload": false, "code": 301}, "未登录或非法访问", c) c.Abort() return } if userToken != userRedisToken["usertoken"] { response.FailWithDetailed(gin.H{"reload": false, "code": 302}, "令牌不正确!非法访问!", c) c.Abort() return } myCont, myErr := publicmethod.GetUserRedisCont(userRedisToken["usernumber"]) // var myCont modelshr.ManCont // myErr := myCont.GetCont(map[string]interface{}{"`number`": userRedisToken["usernumber"]}) if myErr != nil { response.FailWithDetailed(gin.H{"reload": false, "code": 303, "data": myErr}, "登录超时!请重新登录", c) c.Abort() return } // myContJson, _ := json.Marshal(myCont) // fmt.Printf("myCont---------------->%v\n", string(myContJson)) c.Set(overall.MyContJwt, myCont) writeRedisData := publicmethod.MapOut[string]() for i, v := range userRedisToken { writeRedisData[i] = v } redisClient.SetRedisTime(10800) redisClient.HashMsetAdd(redisFileKey, writeRedisData) myContRedis := publicmethod.MapOut[string]() myContRedis["id"] = myCont.Id myContRedis["number"] = myCont.Number //员工工号 myContRedis["name"] = myCont.Name //姓名 myContRedis["icon"] = myCont.Icon //头像 myContRedis["hireclass"] = myCont.HireClass //雇佣类型(1:雇佣入职;2:再入职;) myContRedis["emptype"] = myCont.EmpType //用工关系(1:临时工 , 2:编外人员 ;3:实习&实习生;4:试用员工;5:待分配;6:待岗;7:临时调入;8:正式员工;9:长期病假;10:停薪留职;11:退休;12:辞职;13:辞退;14:离职) myContRedis["company"] = myCont.Company //入职公司 myContRedis["maindeparment"] = myCont.MainDeparment //主部门 myContRedis["sunmaindeparment"] = myCont.SunMainDeparment //二级主部门 myContRedis["deparment"] = myCont.Deparment //部门 myContRedis["adminorg"] = myCont.AdminOrg //所属行政组织 myContRedis["teamid"] = myCont.TeamId //班组 myContRedis["position"] = myCont.Position //职位 myContRedis["jobclass"] = myCont.JobClass //职务分类 myContRedis["jobid"] = myCont.JobId //职务 myContRedis["jobleve"] = myCont.JobLeve //职务等级 myContRedis["wechat"] = myCont.Wechat //微信UserId myContRedis["workwechat"] = myCont.WorkWechat //企业微信UserId myContRedis["state"] = myCont.State //状态(1:启用;2:禁用;3:删除) myContRedis["key"] = myCont.Key //key myContRedis["isadmin"] = myCont.IsAdmin //是否为管理员(1:不是;2:分公司;3:集团管理员;4:超级管 myContRedis["password"] = myCont.Password //密码 myContRedis["role"] = myCont.Role //角色 myContRedis["idcardno"] = myCont.Idcardno //身份证号 myContRedis["passportno"] = myCont.Passportno //护照号码 myContRedis["globalroaming"] = myCont.Globalroaming //国际区号 myContRedis["mobilephone"] = myCont.Mobilephone //手机号码 myContRedis["email"] = myCont.Email //电子邮件 myContRedis["gender"] = myCont.Gender //性别(1:男性;2:女性;3:中性) myContRedis["birthday"] = myCont.Birthday //birthday myContRedis["myfolk"] = myCont.Myfolk //民族 myContRedis["nativeplace"] = myCont.Nativeplace //籍贯 myContRedis["idcardstartdate"] = myCont.Idcardstartdate //身份证有效期开始 myContRedis["idcardenddate"] = myCont.Idcardenddate //身份证有效期结束 myContRedis["idcardaddress"] = myCont.Idcardaddress //身份证地址 myContRedis["idcardIssued"] = myCont.IdcardIssued //身份证签发机关 myContRedis["health"] = myCont.Health //健康状况(1:良好;2:一般;3:较弱,4:有生理缺陷;5:残废) myContRedis["maritalstatus"] = myCont.Maritalstatus //婚姻状况(1:未婚;2:已婚;3:丧偶;4:离异) myContRedis["internaltelephone"] = myCont.Internaltelephone //内线电话 myContRedis["currentresidence"] = myCont.Currentresidence //现居住地址 myContRedis["constellationing"] = myCont.Constellation //星座(1:白羊座;2:金牛座;3:双子座;4:巨蟹座;5:狮子座;6:处女座;7:天枰座;8:天蝎座;9:射手座;10:摩羯座;11:水瓶座;12:双鱼座) myContRedis["isdoubleworker"] = myCont.Isdoubleworker //是否双职工(1:是;2:否) myContRedis["isveterans"] = myCont.Isveterans //是否为退役军人(1:是;2:否) myContRedis["veteransnumber"] = myCont.Veteransnumber //退役证编号 myContRedis["jobstartdate"] = myCont.Jobstartdate //参加工作日期 myContRedis["entrydate"] = myCont.Entrydate //入职日期 myContRedis["probationperiod"] = myCont.Probationperiod //试用期 myContRedis["planformaldate"] = myCont.Planformaldate //预计转正日期 myContRedis["political_outlook"] = myCont.PoliticalOutlook //政治面貌(1:群众;2:无党派;3:台盟会员;4:九三社员;5:致公党员;6:农工党员;7:民进会员;8:民建会员;9:民盟盟员;10:民革会员,11:共青团员;12:预备党员;13:中共党员) redisMyContKey := fmt.Sprintf("ScanCode:Authentication:UserCont_%v_%v", overall.CONSTANT_CONFIG.RedisPrefixStr.Alias, myCont.Number) // fmt.Printf("redisMyContKey------------>%v\n", redisMyContKey) // myContRedisJson, _ := json.Marshal(myContRedis) // fmt.Printf("myContRedisJson------------>%v\n", string(myContRedisJson)) redisClient.HashMsetAdd(redisMyContKey, myContRedis) //获取授权信息 powerCont, powerErr := publicmethod.GetPostOfUsEmpowerCont(myCont.AdminOrg, myCont.Position, "kpi") c.Set(overall.MyContJwtPower, powerCont) fmt.Printf("redisMyContKey------Login----->%v----->%v\n", powerErr, powerCont) c.Next() } } // 验证用户是否具备权限 func VerifyUrl() gin.HandlerFunc { return func(c *gin.Context) { systemClass := c.Request.Header.Get("system-class") context, exi := publicmethod.LoginMyCont(c) if exi != nil { response.FailWithDetailed(gin.H{"reload": false, "code": 401}, "对不起!你没有访问此功能的权限!", c) c.Abort() return } // 获取请求的PATH obj := c.Request.URL.Path // 获取请求方法 act := c.Request.Method menuIdAry, menuUrl, err := publicmethod.GetPostPower(context.AdminOrg, context.Position, "kpi") //此功能暂时不开启 // if err != nil || len(menuUrl) < 1 || len(menuIdAry) < 1 { // response.FailWithDetailed(gin.H{"reload": false, "code": 402}, "对不起!你没有访问此功能的权限!", c) // c.Abort() // return // } fmt.Printf("obj---url--->%v-----------act------->%v---systemClass------------>%v------------------context-------->%v-------->menuIdAry-------->%v-------->menuUrl-------->%v-------->err-------->%v\n", obj, act, systemClass, context.Role, menuIdAry, menuUrl, err) //此功能暂时不开启 // if publicmethod.IsInTrue[string](obj, menuUrl) == false { // response.FailWithDetailed(gin.H{"reload": false, "code": 403}, "对不起!你没有访问此功能的权限!", c) // c.Abort() // return // } c.Next() } }