aef9d27706
* 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")
|
|
}
|
|
}
|
|
}()
|
|
})
|
|
}
|
|
}
|