summaryrefslogtreecommitdiff
path: root/internal/handlers/types.go
blob: f6c4baf3b0cf6fefd77b0244d00e6da6ed0679e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package handlers

import (
	"github.com/tstranex/u2f"

	"github.com/authelia/authelia/internal/authentication"
)

// MethodList is the list of available methods.
type MethodList = []string

type authorizationMatching int

// UserInfo is the model of user second factor preferences
type UserPreferences struct {
	// The preferred 2FA method.
	Method string `json:"method" valid:"required"`

	// True if a security key has been registered
	HasU2F bool `json:"has_u2f" valid:"required"`

	// True if a TOTP device has been registered
	HasTOTP bool `json:"has_totp" valid:"required"`
}

// signTOTPRequestBody model of the request body received by TOTP authentication endpoint.
type signTOTPRequestBody struct {
	Token     string `json:"token" valid:"required"`
	TargetURL string `json:"targetURL"`
}

// signU2FRequestBody model of the request body of U2F authentication endpoint.
type signU2FRequestBody struct {
	SignResponse u2f.SignResponse `json:"signResponse"`
	TargetURL    string           `json:"targetURL"`
}

type signDuoRequestBody struct {
	TargetURL string `json:"targetURL"`
}

// firstFactorBody represents the JSON body received by the endpoint.
type firstFactorRequestBody struct {
	Username  string `json:"username" valid:"required"`
	Password  string `json:"password" valid:"required"`
	TargetURL string `json:"targetURL"`
	// Cannot require this field because of https://github.com/asaskevich/govalidator/pull/329
	// TODO(c.michaud): add required validation once the above PR is merged.
	KeepMeLoggedIn *bool `json:"keepMeLoggedIn"`
}

// redirectResponse represent the response sent by the first factor endpoint
// when a redirection URL has been provided.
type redirectResponse struct {
	Redirect string `json:"redirect"`
}

// TOTPKeyResponse is the model of response that is sent to the client up successful identity verification.
type TOTPKeyResponse struct {
	Base32Secret string `json:"base32_secret"`
	OTPAuthURL   string `json:"otpauth_url"`
}

// StateResponse represents the response sent by the state endpoint.
type StateResponse struct {
	Username              string               `json:"username"`
	AuthenticationLevel   authentication.Level `json:"authentication_level"`
	DefaultRedirectionURL string               `json:"default_redirection_url"`
}

// resetPasswordStep1RequestBody model of the reset password (step1) request body
type resetPasswordStep1RequestBody struct {
	Username string `json:"username"`
}

// resetPasswordStep2RequestBody model of the reset password (step2) request body
type resetPasswordStep2RequestBody struct {
	Password string `json:"password"`
}