mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
104a61ecd6
Prevents the TOTP user config from being requested when the user has not registered or is already authenticated 2FA.
37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package handlers
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/valyala/fasthttp"
|
|
|
|
"github.com/authelia/authelia/v4/internal/middlewares"
|
|
"github.com/authelia/authelia/v4/internal/storage"
|
|
)
|
|
|
|
// UserTOTPGet returns the users TOTP configuration.
|
|
func UserTOTPGet(ctx *middlewares.AutheliaCtx) {
|
|
userSession := ctx.GetSession()
|
|
|
|
config, err := ctx.Providers.StorageProvider.LoadTOTPConfiguration(ctx, userSession.Username)
|
|
if err != nil {
|
|
if errors.Is(err, storage.ErrNoTOTPConfiguration) {
|
|
ctx.SetStatusCode(fasthttp.StatusNotFound)
|
|
ctx.SetJSONError("Could not find TOTP Configuration for user.")
|
|
ctx.Logger.Errorf("Failed to lookup TOTP configuration for user '%s'", userSession.Username)
|
|
} else {
|
|
ctx.SetStatusCode(fasthttp.StatusInternalServerError)
|
|
ctx.SetJSONError("Could not find TOTP Configuration for user.")
|
|
ctx.Logger.Errorf("Failed to lookup TOTP configuration for user '%s' with unknown error: %v", userSession.Username, err)
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
if err = ctx.SetJSONBody(config); err != nil {
|
|
ctx.Logger.Errorf("Unable to perform TOTP configuration response: %s", err)
|
|
}
|
|
|
|
ctx.SetStatusCode(fasthttp.StatusOK)
|
|
}
|