package middleware import ( "app/commons/core" "fmt" "github.com/gin-gonic/gin" "net/http" ) const SignKey = "sign" func ExtendAuthWithName() gin.HandlerFunc { return func(c *gin.Context) { sign := c.GetHeader(SignKey) if sign == "" { c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("GetHeader :%s is null", SignKey))) return } // 获取所有支持的系统前缀 sysName, err := core.GetSignSysName(sign) if err != nil { c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("SignerBySysName err:%s", err.Error()))) return } signer, err := core.SignerBySysName(sysName) if err != nil { c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("SignerBySysName err:%s", err.Error()))) return } core.Log.Infof("sign:%s \n sign sys:%s address:%s", sign, sysName, signer.SysAddress) if err := signer.VerifySignature(sign); err != nil { c.AbortWithStatusJSON(http.StatusUnauthorized, core.ResponseSignError.SetMsg(fmt.Sprintf("VerifySignature err:%s", err.Error()))) return } c.Next() } }