2021-12-13 11:08:10 +00:00
package auth
import (
2024-10-17 15:15:05 +00:00
grpc_auth "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/auth"
2021-12-13 11:08:10 +00:00
)
type Option func ( o * options )
2022-07-16 17:03:44 +00:00
// WithMethods change the behaviour to not protect by default, it takes a list of fully qualified method names to protect, e.g. /helloworld.Greeter/SayHello
2021-12-13 11:08:10 +00:00
func WithMethods ( methods ... string ) Option {
return func ( o * options ) {
o . methods = append ( o . methods , methods ... )
}
}
2022-07-16 17:03:44 +00:00
// WithIgnoredMethods bypass auth for the given methods, it takes a list of fully qualified method name, e.g. /helloworld.Greeter/SayHello
2021-12-13 11:08:10 +00:00
func WithIgnoredMethods ( methods ... string ) Option {
return func ( o * options ) {
o . ignoredMethods = append ( o . ignoredMethods , methods ... )
}
}
func WithBasicValidators ( validators ... BasicValidator ) Option {
var authFns [ ] grpc_auth . AuthFunc
for _ , v := range validators {
authFns = append ( authFns , makeBasicAuthFunc ( v ) )
}
return func ( o * options ) {
o . authFns = append ( o . authFns , authFns ... )
}
}
func WithTokenValidators ( validators ... TokenValidator ) Option {
var authFns [ ] grpc_auth . AuthFunc
for _ , v := range validators {
authFns = append ( authFns , makeTokenAuthFunc ( v ) )
}
return func ( o * options ) {
o . authFns = append ( o . authFns , authFns ... )
}
}
func WithX509Validators ( validators ... X509Validator ) Option {
var authFns [ ] grpc_auth . AuthFunc
for _ , v := range validators {
authFns = append ( authFns , makeX509AuthFunc ( v ) )
}
return func ( o * options ) {
o . authFns = append ( o . authFns , authFns ... )
}
}
type options struct {
methods [ ] string
ignoredMethods [ ] string
authFns [ ] grpc_auth . AuthFunc
}