Documentation
¶
Index ¶
- Constants
- Variables
- type AccessTokenResponse
- type CustomClaims
- type ErrorCause
- type HTTPError
- type Introspection
- type OAuthError
- type Provider
- type RecoverRequest
- type Service
- type SignupRequest
- type SignupResponse
- type UserResponse
- type UserUpdateRequest
- type UserinfoAddressClaim
- type UserinfoResponse
- type VerifyRequest
Constants ¶
const ( CSRFPath = "/csrf" SignupPath = "/signup" TokenPath = "/token" UserinfoPath = "/userinfo" IntrospectPath = "/introspect" RevocationPath = "/revoke" VerifyPath = "/verify" RecoverPath = "/recover" LogoutPath = "/logout" UserPath = "/user" )
const SlashSeparator = "/"
SlashSeparator - slash separator.
Variables ¶
var ( // ContentTypeJSONHeader is default value of if "Content-Type" header // in HTTP response. ContentTypeJSONHeader = "application/json; charset=utf-8" // EscapeHTML specifies whether problematic HTML characters // should be escaped inside JSON quoted strings. EscapeHTML = false )
var (
ErrMaxFrequencyLimit error = errors.New("frequency limit reached")
)
Functions ¶
This section is empty.
Types ¶
type AccessTokenResponse ¶
type AccessTokenResponse struct {
Token string `json:"access_token"`
TokenType string `json:"token_type"` // Bearer
ExpiresIn int `json:"expires_in"`
RefreshToken string `json:"refresh_token"`
}
AccessTokenResponse represents an OAuth2 success response
type CustomClaims ¶
type CustomClaims struct {
Username string `json:"username,omitempty"`
Email string `json:"email,omitempty"`
AppMetaData map[string]interface{} `json:"app_metadata,omitempty"`
UserMetaData map[string]interface{} `json:"user_metadata,omitempty"`
}
CustomClaims is a struct thats used for JWT claims.
type ErrorCause ¶
type ErrorCause interface {
Cause() error
}
type HTTPError ¶
type HTTPError struct {
Code int `json:"code"`
Message string `json:"message"`
InternalError error `json:"-"`
InternalMessage string `json:"-"`
ErrorID string `json:"error_id,omitempty"`
}
HTTPError is an error with a message and an HTTP status code.
func (*HTTPError) WithInternalError ¶
WithInternalError adds internal error information to the error.
func (*HTTPError) WithInternalMessage ¶
WithInternalMessage adds internal message information to the error.
type Introspection ¶
type Introspection struct {
// Active is a boolean indicator of whether or not the presented token
// is currently active. The specifics of a token's "active" state
// will vary depending on the implementation of the authorization
// server and the information it keeps about its tokens, but a "true"
// value return for the "active" property will generally indicate
// that a given token has been issued by this authorization server,
// has not been revoked by the resource owner, and is within its
// given time window of validity (e.g., after its issuance time and
// before its expiration time).
//
// required: true
Active bool `json:"active"`
// Scope is a JSON string containing a space-separated list of
// scopes associated with this token.
Scope string `json:"scope,omitempty"`
// ID is a client identifier for the OAuth 2.0 client that
// requested this token.
ClientID string `json:"client_id"`
// Subject of the token, as defined in JWT [RFC7519].
// Usually a machine-readable identifier of the resource owner who
// authorized this token.
Subject string `json:"sub"`
// ObfuscatedSubject is set when the subject identifier algorithm was set to "pairwise" during authorization.
// It is the `sub` value of the ID Token that was issued.
ObfuscatedSubject string `json:"obfuscated_subject,omitempty"`
// Expires at is an integer timestamp, measured in the number of seconds
// since January 1 1970 UTC, indicating when this token will expire.
ExpiresAt int64 `json:"exp"`
// Issued at is an integer timestamp, measured in the number of seconds
// since January 1 1970 UTC, indicating when this token was
// originally issued.
IssuedAt int64 `json:"iat"`
// NotBefore is an integer timestamp, measured in the number of seconds
// since January 1 1970 UTC, indicating when this token is not to be
// used before.
NotBefore int64 `json:"nbf"`
// Username is a human-readable identifier for the resource owner who
// authorized this token.
Username string `json:"username,omitempty"`
// Audience contains a list of the token's intended audiences.
Audience []string `json:"aud"`
// IssuerURL is a string representing the issuer of this token
Issuer string `json:"iss"`
// TokenType is the introspected token's type, typically `Bearer`.
TokenType string `json:"token_type"`
// TokenUse is the introspected token's use, for example `access_token` or `refresh_token`.
TokenUse string `json:"token_use"`
// Extra is arbitrary data set by the session.
Extra map[string]interface{} `json:"ext,omitempty"`
}
Introspection contains an access token's session data as specified by IETF RFC 7662, see: https://tools.ietf.org/html/rfc7662
type OAuthError ¶
type OAuthError struct {
Err string `json:"error"`
Description string `json:"error_description,omitempty"`
InternalError error `json:"-"`
InternalMessage string `json:"-"`
}
OAuthError is the JSON handler for OAuth2 error responses.
func (*OAuthError) Error ¶
func (e *OAuthError) Error() string
func (*OAuthError) WithInternalError ¶
func (e *OAuthError) WithInternalError(err error) *OAuthError
WithInternalError adds internal error information to the error.
func (*OAuthError) WithInternalMessage ¶
func (e *OAuthError) WithInternalMessage(fmtString string, args ...interface{}) *OAuthError
WithInternalMessage adds internal message information to the error.
type RecoverRequest ¶
type RecoverRequest struct {
Email string `json:"email"`
}
RecoverRequest holds the parameters for a password recovery request.
type Service ¶
Service is the API service interface.
func New ¶
func New( log logger.Logger, config *config.Config, jwtService jwt.Service, accountUsecase account.AccountUsecase, refreshTokenUsecase refreshtoken.RefreshTokenUsecase, userUsecase user.UserUsecase, ) Service
New will create a and initialize a new API service.
type SignupRequest ¶
type SignupRequest struct {
Email string `json:"email,omitempty"`
Password string `json:"password,omitempty"`
Username string `json:"username,omitempty"`
GivenName string `json:"given_name,omitempty"`
FamilyName string `json:"family_name,omitempty"`
Name string `json:"name,omitempty"`
Nickname string `json:"nickname,omitempty"`
Picture string `json:"picture,omitempty"`
UserMetaData map[string]interface{} `json:"user_metadata,omitempty"`
}
SignupRequest are the parameters the signup endpoint accepts.
type SignupResponse ¶
type SignupResponse struct {
ID string `json:"user_id"`
Email string `json:"email,omitempty"`
EmailVerified bool `json:"email_verified,omitempty"`
Username string `json:"username,omitempty"`
GivenName string `json:"given_name,omitempty"`
FamilyName string `json:"family_name,omitempty"`
Name string `json:"name,omitempty"`
Nickname string `json:"nickname,omitempty"`
Picture string `json:"picture,omitempty"`
}
type UserResponse ¶
type UserResponse struct {
UserID string `json:"user_id"`
Email string `json:"email,omitempty"`
EmailVerified bool `json:"email_verified,omitempty"`
Username string `json:"username,omitempty"`
GivenName string `json:"given_name,omitempty"`
FamilyName string `json:"family_name,omitempty"`
Name string `json:"name,omitempty"`
Nickname string `json:"nickname,omitempty"`
Picture string `json:"picture,omitempty"`
AppMetaData map[string]interface{} `json:"app_metadata,omitempty"`
UserMetaData map[string]interface{} `json:"user_metadata,omitempty"`
Providers []Provider `json:"providers,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type UserUpdateRequest ¶
type UserUpdateRequest struct {
Email string `json:"email"`
EmailChangeToken string `json:"email_change_token"`
Password string `json:"password"`
Username string `json:"username"`
GivenName string `json:"given_name"`
FamilyName string `json:"family_name"`
Name string `json:"name"`
Nickname string `json:"nickname"`
Picture string `json:"picture"`
AppMetaData map[string]interface{} `json:"app_metadata"`
UserMetaData map[string]interface{} `json:"user_metadata"`
}
type UserinfoAddressClaim ¶
type UserinfoAddressClaim struct {
Formatted string `json:"formatted,omitempty"`
StreetAddress string `json:"street_address,omitempty"`
Locality string `json:"locality,omitempty"`
Region string `json:"region,omitempty"`
PostalCode string `json:"postal_code,omitempty"`
Country string `json:"country,omitempty"`
}
UserinfoAddressClaim represents a physical mailing address.
see: https://openid.net/specs/openid-connect-core-1_0.html#AddressClaim
type UserinfoResponse ¶
type UserinfoResponse struct {
Sub string `json:"sub,omitempty"`
Name string `json:"name,omitempty"`
GivenName string `json:"given_name,omitempty"`
FamilyName string `json:"family_name,omitempty"`
MiddleName string `json:"middle_name,omitempty"`
Nickname string `json:"nickname,omitempty"`
PreferredUsername string `json:"preferred_username,omitempty"`
Profile string `json:"profile,omitempty"`
Picture string `json:"picture,omitempty"`
Website string `json:"website,omitempty"`
Email string `json:"email,omitempty"`
EmailVerified bool `json:"email_verified,omitempty"`
Gender string `json:"gender,omitempty"`
Birthdate string `json:"birthdate,omitempty"`
Zoneinfo string `json:"zoneinfo,omitempty"`
Locale string `json:"locale,omitempty"`
PhoneNumber string `json:"phone_number,omitempty"`
PhoneNumberVerified bool `json:"phone_number_verified,omitempty"`
Address UserinfoAddressClaim `json:"address,omitempty"`
UpdatedAt int64 `json:"updated_at,omitempty"`
}
UserinfoResponse The userinfo response.
see: https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims