types

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthMiddleware

type AuthMiddleware interface {
	MiddlewareFunc() gin.HandlerFunc
	LoginHandler() gin.HandlerFunc
	LogoutHandler() gin.HandlerFunc
	RefreshHandler() gin.HandlerFunc
}

AuthMiddleware defines the interface that all auth middleware must implement This allows for different auth strategies (JWT, session, etc.)

type AuthOptions

type AuthOptions struct {
	// JWT Configuration
	JWTSecret         string
	JWTRealm          string
	TokenExpireTime   time.Duration
	RefreshExpireTime time.Duration
	IdentityKey       string

	// Session Configuration
	SessionSecret   string
	SessionMaxAge   int
	SessionDomain   string
	SessionSecure   bool
	SessionSameSite string

	// OAuth Configuration
	OAuth *OAuthConfig

	// Callback Functions
	FindUserByEmail FindUserByEmailFunc
	FindUserByID    FindUserByIDFunc
}

AuthOptions represents configuration for traditional authentication

func (*AuthOptions) ValidateAuthOptions

func (opts *AuthOptions) ValidateAuthOptions() error

ValidateAuthOptions validates traditional authentication configuration

type BFFAuthOptions

type BFFAuthOptions struct {
	// Session configuration
	SessionSecret string
	SessionMaxAge int
	SessionDomain string
	SessionSecure bool

	// JWT configuration
	JWTSecret string
	JWTExpiry time.Duration

	// Cookie configuration
	SIDCookieName string
	SIDCookiePath string

	// Session service (provided by implementing project)
	SessionService SessionService

	// User callbacks
	FindUserByEmail FindUserByEmailFunc
	FindUserByID    FindUserByIDFunc

	// OAuth configuration (optional)
	OAuth *OAuthConfig
}

BFFAuthOptions represents configuration for BFF authentication

func (*BFFAuthOptions) ValidateBFFAuthOptions

func (opts *BFFAuthOptions) ValidateBFFAuthOptions() error

ValidateBFFAuthOptions validates BFF authentication configuration

type FindUserByEmailFunc

type FindUserByEmailFunc func(email string) (UserInfo, error)

UserFinder callback function types

type FindUserByIDFunc

type FindUserByIDFunc func(id uint) (UserInfo, error)

type OAuthConfig

type OAuthConfig struct {
	Providers  map[string]OAuthProvider `json:"providers"`
	BaseURL    string                   `json:"base_url"`
	SuccessURL string                   `json:"success_url"`
	FailureURL string                   `json:"failure_url"`

	// User management callbacks
	FindUserByEmail FindUserByEmailFunc `json:"-"`
	FindUserByID    FindUserByIDFunc    `json:"-"`

	// Error handling configuration
	FailOnProviderError bool `json:"fail_on_provider_error"` // If true, service fails fast when providers fail to initialize

	// User configuration
	DefaultRole string `json:"default_role"`
}

OAuthConfig represents the overall OAuth configuration

func (*OAuthConfig) ValidateOAuthConfig

func (config *OAuthConfig) ValidateOAuthConfig() error

ValidateOAuthConfig validates OAuth configuration

type OAuthProvider

type OAuthProvider struct {
	ClientID     string   `json:"client_id"`
	ClientSecret string   `json:"client_secret"`
	RedirectURL  string   `json:"redirect_url"`
	Scopes       []string `json:"scopes"`
}

OAuthProvider represents configuration for an OAuth provider

func (*OAuthProvider) ValidateOAuthProvider

func (provider *OAuthProvider) ValidateOAuthProvider() error

ValidateOAuthProvider validates individual OAuth provider configuration

type SessionService

type SessionService interface {
	CreateSession(user UserInfo, expiry time.Duration) (string, error)
	GetSession(sid string) (UserInfo, error)
	DeleteSession(sid string) error
	ValidateSession(sid string) (UserInfo, error)
}

SessionService defines the interface for session management

type UserInfo

type UserInfo struct {
	ID           uint           `json:"id"`
	Email        string         `json:"email"`
	Role         string         `json:"role"`
	FirstName    string         `json:"first_name,omitempty"`
	LastName     string         `json:"last_name,omitempty"`
	PasswordHash string         `json:"-"`                       // Never expose password hash in JSON
	CustomFields map[string]any `json:"custom_fields,omitempty"` // Extensible fields for implementers
}

UserInfo represents user data returned by callback functions This struct is extensible - It can be embedded in other structs or use the CustomFields map for additional data

func (*UserInfo) GetCustomField

func (userInfo *UserInfo) GetCustomField(key string) (any, bool)

GetCustomField retrieves a custom field value

func (*UserInfo) GetFullName

func (userInfo *UserInfo) GetFullName() string

GetFullName returns the user's full name

func (*UserInfo) SetCustomField

func (userInfo *UserInfo) SetCustomField(key string, value any)

SetCustomField sets a custom field value

Jump to

Keyboard shortcuts

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