35 lines
576 B
Go
35 lines
576 B
Go
package auth
|
|
|
|
import (
|
|
"net/http"
|
|
)
|
|
|
|
type AuthProvider interface {
|
|
IsAllowed(*http.Request) bool
|
|
}
|
|
|
|
func NewEmptyAuthProvider() AuthProvider {
|
|
return &emptyAuthProvider{}
|
|
}
|
|
|
|
type emptyAuthProvider struct {
|
|
}
|
|
|
|
func (p *emptyAuthProvider) IsAllowed(request *http.Request) bool {
|
|
return true
|
|
}
|
|
|
|
type compositeAuthProvider struct {
|
|
providers []AuthProvider
|
|
}
|
|
|
|
func (p *compositeAuthProvider) IsAllowed(request *http.Request) bool {
|
|
for i := 0; i < len(p.providers); i++ {
|
|
provider := p.providers[i]
|
|
if provider.IsAllowed(request) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|