auth

package
v1.4.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2025 License: Apache-2.0 Imports: 18 Imported by: 0

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

View Source
const (

	// JwtDurationHour is the number of hours for which the issued JWT will be valid.
	JwtDurationHour = 24
)

Variables

View Source
var (
	ErrAppleAuth        = errors.New("apple authentication failed")
	ErrEmptyBlockDecode = errors.New("empty block after decoding")
)

ErrAppleAuth indicates that Apple Sign In authentication failed.

Functions

func GetUser

func GetUser(ctx context.Context) (*common.User, error)

GetUser extracts the authenticated user from the context.

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.

func NewAuth

func NewAuth(cfg *Configuration, storage storage, logger *logrus.Entry) Auth

NewAuth constructs the Auth service with provided configuration, storage, and logger.

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) Auth

func (a Middleware) Auth(ctx context.Context, token string) (*common.Session, error)

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) Start

func (a Middleware) Start() (err error)

func (*Middleware) Validate

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL