Documentation
¶
Overview ¶
Package auth provides JWT and Apple Sign In authentication, along with GraphQL middleware.
Package auth contains configuration and authentication logic for Apple Sign In and JWT.
Index ¶
- Constants
- Variables
- func GetUser(ctx context.Context) (*common.User, error)
- type Auth
- type Configuration
- type Middleware
- func (a Middleware) Auth(ctx context.Context, token string) (*common.Session, error)
- func (a *Middleware) ExtensionName() string
- func (a *Middleware) InterceptResponse(ctx context.Context, next graphql.ResponseHandler) *graphql.Response
- func (a Middleware) Middleware() graphql.HandlerExtension
- func (a Middleware) Start() (err error)
- func (a *Middleware) Validate(graphql.ExecutableSchema) error
- func (a Middleware) WsInitFunc(ctx context.Context, payload transport.InitPayload) (context.Context, *transport.InitPayload, error)
Constants ¶
const (
// JwtDurationHour is the number of hours for which the issued JWT will be valid.
JwtDurationHour = 24
)
Variables ¶
var ( ErrAppleAuth = errors.New("apple authentication failed") ErrEmptyBlockDecode = errors.New("empty block after decoding") )
ErrAppleAuth indicates that Apple Sign In authentication failed.
Functions ¶
Types ¶
type Auth ¶
type Auth interface {
Auth(ctx context.Context, token string) (*common.Session, error)
Validate(ctx context.Context, jwt string) (*common.User, error)
Middleware() graphql.HandlerExtension
WsInitFunc(ctx context.Context, payload transport.InitPayload) (context.Context, *transport.InitPayload, error)
Start() error
}
Auth defines the authentication operations for issuing and validating JWTs and providing GraphQL middleware support.
type Configuration ¶
type Configuration struct {
SecretPath string `envconfig:"SECRET_PATH" default:"AuthKey_39D5B439QV.p8"`
Secret string
TeamID string `envconfig:"TEAM_ID" required:"true"`
ClientID string `envconfig:"CLIENT_ID" required:"true"`
KeyID string `envconfig:"KEY_ID" required:"true"`
}
Configuration holds Apple authentication configuration and secret key path.
func Config ¶
func Config() *Configuration
Config loads configuration from environment and reads the private key from SecretPath.
type Middleware ¶
type Middleware struct {
// contains filtered or unexported fields
}
Middleware implements a GraphQL extension to authenticate requests.
func (*Middleware) ExtensionName ¶
func (a *Middleware) ExtensionName() string
ExtensionName returns the name of the GraphQL extension.
func (*Middleware) InterceptResponse ¶
func (a *Middleware) InterceptResponse(ctx context.Context, next graphql.ResponseHandler) *graphql.Response
InterceptResponse intercepts GraphQL responses to ensure the user is authenticated.
func (Middleware) Middleware ¶
func (a Middleware) Middleware() graphql.HandlerExtension
Middleware returns the GraphQL handler extension that enforces authentication.
func (*Middleware) Validate ¶
func (a *Middleware) Validate(graphql.ExecutableSchema) error
Validate implements the GraphQL extension validator (no-op).
func (Middleware) WsInitFunc ¶
func (a Middleware) WsInitFunc(ctx context.Context, payload transport.InitPayload) (context.Context, *transport.InitPayload, error)
WsInitFunc initializes the WebSocket connection by validating Authorization header if provided.