88	"log" 
99	"strings" 
1010
11+ 	"github.com/agilezebra/jwt-middleware/logger" 
1112	"github.com/danwakefield/fnmatch" 
1213)
1314
@@ -122,6 +123,7 @@ outer:
122123// variables is required in the interface and passed on recursively but ultimately ignored by ValueRequirement 
123124// having been already interpolated by TemplateRequirement 
124125func  (requirement  ValueRequirement ) Validate (value  any , variables  * TemplateVariables ) error  {
126+ 	level , verbose  :=  (* variables )["logUnauthorized" ]
125127	switch  value  :=  value .(type ) {
126128	case  []any :
127129		for  _ , value  :=  range  value  {
@@ -142,22 +144,33 @@ func (requirement ValueRequirement) Validate(value any, variables *TemplateVaria
142144	case  string :
143145		required , ok  :=  requirement .value .(string )
144146		if  ok  {
145- 			if  fnmatch . Match (value ,  required ,  0 )  ||   value   ==   fmt . Sprintf ( "*.%s" , required ) {
147+ 			if  wildcardMatch (value , required ) {
146148				return  nil 
147149			}
150+ 			if  verbose  {
151+ 				logger .Log (level , "claim is not valid: require:%s got:%v" , required , value )
152+ 			}
148153		}
149154	case  json.Number :
150155		switch  requirement .value .(type ) {
151156		case  int :
152157			converted , err  :=  value .Int64 ()
153- 			if  err  ==  nil  &&  converted  ==  int64 (requirement .value .(int )) {
158+ 			required  :=  int64 (requirement .value .(int ))
159+ 			if  err  ==  nil  &&  converted  ==  required  {
154160				return  nil 
155161			}
162+ 			if  verbose  {
163+ 				logger .Log (level , "claim is not valid: require:%d got:%v" , required , value )
164+ 			}
156165		case  float64 :
157166			converted , err  :=  value .Float64 ()
158- 			if  err  ==  nil  &&  converted  ==  requirement .value .(float64 ) {
167+ 			required  :=  requirement .value .(float64 )
168+ 			if  err  ==  nil  &&  converted  ==  required  {
159169				return  nil 
160170			}
171+ 			if  verbose  {
172+ 				logger .Log (level , "claim is not valid: require:%f got:%v" , required , value )
173+ 			}
161174		default :
162175			log .Printf ("unsupported requirement type for json.Number comparison: %T %v" , requirement .value , requirement .value )
163176			return  fmt .Errorf ("unsupported requirement type for json.Number comparison" )
0 commit comments