40 lines
771 B
Go
40 lines
771 B
Go
|
package api
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/gin-gonic/gin"
|
||
|
"os"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
func Auth() gin.HandlerFunc {
|
||
|
if hasProfile("basic-auth") {
|
||
|
return gin.BasicAuth(loadAuth())
|
||
|
}
|
||
|
panic("keycloak support not implemented")
|
||
|
}
|
||
|
|
||
|
func hasProfile(value string) bool {
|
||
|
profileOptions := strings.Split(os.Getenv("PROFILE"), ",")
|
||
|
for _, option := range profileOptions {
|
||
|
if option == value {
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
func loadAuth() map[string]string {
|
||
|
credentials := envMustExist("AUTH_KEY")
|
||
|
values := strings.Split(credentials, ":")
|
||
|
return map[string]string{values[0]: values[1]}
|
||
|
}
|
||
|
|
||
|
func envMustExist(env string) string {
|
||
|
if value, exists := os.LookupEnv(env); !exists {
|
||
|
panic(fmt.Sprintf("env variable '%s' not defined", env))
|
||
|
} else {
|
||
|
return value
|
||
|
}
|
||
|
}
|