* stages/authenticator_sms: initial implementation Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add initial stage UI Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: clear invalid state when old input was invalid but new input is correct Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add more logic Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/user: add basic SMS settings Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: initial working version Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_sms: add tests Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/flows: optimise totp password manager entry on authenticator_validation stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/elements: add grouping support for table Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: allow sms class in authenticator stage Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web/admin: add grouping to more pages Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * stages/authenticator_validate: add SMS support Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * api: add throttling for flow executor based on session key and pending user Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * web: fix style issues Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * ci: add workflow to compile backend translations Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package web
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	sentryhttp "github.com/getsentry/sentry-go/http"
 | 
						|
	log "github.com/sirupsen/logrus"
 | 
						|
)
 | 
						|
 | 
						|
func recoveryMiddleware() func(next http.Handler) http.Handler {
 | 
						|
	sentryHandler := sentryhttp.New(sentryhttp.Options{})
 | 
						|
	l := log.WithField("logger", "authentik.router.sentry")
 | 
						|
	return func(next http.Handler) http.Handler {
 | 
						|
		sentryHandler.Handle(next)
 | 
						|
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | 
						|
			next.ServeHTTP(w, r)
 | 
						|
			defer func() {
 | 
						|
				re := recover()
 | 
						|
				if re == nil {
 | 
						|
					return
 | 
						|
				}
 | 
						|
				err := re.(error)
 | 
						|
				if err != nil {
 | 
						|
					l.WithError(err).Warning("global panic handler")
 | 
						|
					jsonBody, _ := json.Marshal(struct {
 | 
						|
						Successful bool
 | 
						|
						Error      string
 | 
						|
					}{
 | 
						|
						Successful: false,
 | 
						|
						Error:      err.Error(),
 | 
						|
					})
 | 
						|
 | 
						|
					w.Header().Set("Content-Type", "application/json")
 | 
						|
					w.WriteHeader(http.StatusInternalServerError)
 | 
						|
					_, err := w.Write(jsonBody)
 | 
						|
					if err != nil {
 | 
						|
						l.WithError(err).Warning("Failed to write sentry error body")
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}()
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |