aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorGabriel A. Giovanini <mail@gabrielgio.me>2024-12-11 18:10:12 +0100
committerGabriel A. Giovanini <mail@gabrielgio.me>2024-12-11 18:10:12 +0100
commit3784181e4fad3c947dfa95081d8a0b34f5be12d4 (patch)
tree48263aa693149f997cdd7ac0c51bf0f994743748 /pkg
parent57efc8d2173fdff1ef99157a2633d3f1d366a290 (diff)
downloadcerrado-3784181e4fad3c947dfa95081d8a0b34f5be12d4.tar.gz
cerrado-3784181e4fad3c947dfa95081d8a0b34f5be12d4.tar.bz2
cerrado-3784181e4fad3c947dfa95081d8a0b34f5be12d4.zip
feat: Disable auth if passphrase is empty
Disable all auth mechanism when passphrase is empty. That will allow for a simpler setup.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/config/config.go4
-rw-r--r--pkg/ext/auth.go8
-rw-r--r--pkg/handler/router.go11
3 files changed, 20 insertions, 3 deletions
diff --git a/pkg/config/config.go b/pkg/config/config.go
index da6e0e7..c17e6df 100644
--- a/pkg/config/config.go
+++ b/pkg/config/config.go
@@ -113,6 +113,10 @@ func (c *ConfigurationRepository) GetBase64AesKey() []byte {
return c.aesKey
}
+func (c *ConfigurationRepository) IsAuthEnabled() bool {
+ return len(c.passphrase) != 0
+}
+
// GetByName returns configuration of repository for a given name.
// It returns nil if there is not match for it.
func (c *ConfigurationRepository) GetByName(name string) *GitRepositoryConfiguration {
diff --git a/pkg/ext/auth.go b/pkg/ext/auth.go
index bb6c0a2..b57e86a 100644
--- a/pkg/ext/auth.go
+++ b/pkg/ext/auth.go
@@ -11,6 +11,14 @@ type authService interface {
ValidateToken(token []byte) (bool, error)
}
+func DisableAuthentication(next http.HandlerFunc) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ ctx := r.Context()
+ ctx = context.WithValue(ctx, "disableAuthentication", true)
+ next(w, r.WithContext(ctx))
+ }
+}
+
func Authenticate(auth authService) func(next http.HandlerFunc) http.HandlerFunc {
return func(next http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
diff --git a/pkg/handler/router.go b/pkg/handler/router.go
index ee4081b..82ee8fd 100644
--- a/pkg/handler/router.go
+++ b/pkg/handler/router.go
@@ -33,12 +33,17 @@ func MountHandler(
mux := ext.NewRouter()
mux.AddMiddleware(ext.Compress)
- mux.AddMiddleware(ext.Authenticate(authService))
mux.AddMiddleware(ext.Log)
+ if configRepo.IsAuthEnabled() {
+ mux.AddMiddleware(ext.Authenticate(authService))
+ mux.HandleFunc("/login/{$}", loginHandler.Login)
+ mux.HandleFunc("/logout/{$}", loginHandler.Logout)
+ } else {
+ mux.AddMiddleware(ext.DisableAuthentication)
+ }
+
mux.HandleFunc("/static/{file}", staticHandler)
- mux.HandleFunc("/login/{$}", loginHandler.Login)
- mux.HandleFunc("/logout/{$}", loginHandler.Logout)
mux.HandleFunc("/{name}/about/{$}", gitHandler.About)
mux.HandleFunc("/{name}/", gitHandler.Summary)
mux.HandleFunc("/{name}/refs/{$}", gitHandler.Refs)