30 lines
606 B
Go
30 lines
606 B
Go
|
package auth
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
)
|
||
|
|
||
|
func NewBasicAuthProvider(username, password string) AuthProvider {
|
||
|
return &basicAuthProvider{
|
||
|
hashedAuth: encodeBasicAuth(username, password),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type basicAuthProvider struct {
|
||
|
hashedAuth string
|
||
|
}
|
||
|
|
||
|
func (p *basicAuthProvider) IsAllowed(request *http.Request) bool {
|
||
|
username, password, ok := request.BasicAuth()
|
||
|
if !ok {
|
||
|
return false
|
||
|
}
|
||
|
requestAuth := encodeBasicAuth(username, password)
|
||
|
return p.hashedAuth == requestAuth
|
||
|
}
|
||
|
|
||
|
func encodeBasicAuth(username, password string) string {
|
||
|
return HashString(fmt.Sprintf("%s:%s", username, password))
|
||
|
}
|