Documentation
¶
Index ¶
- Constants
- func Auth(jwtSecret string, apiKeyRepo repository.APIKeyRepository, logger *zap.Logger) func(http.Handler) http.Handler
- func GenerateJWT(userID int64, email, role string, domainID *int64, secret string) (string, error)
- func GetDomainID(r *http.Request) (int64, bool)
- func GetEmail(r *http.Request) (string, bool)
- func GetRole(r *http.Request) (string, bool)
- func GetUserID(r *http.Request) (int64, bool)
- func Logger(logger *zap.Logger) func(http.Handler) http.Handler
- func RateLimit(repo repository.RateLimitRepository, logger *zap.Logger) func(http.Handler) http.Handler
- func RespondCreated(w http.ResponseWriter, data interface{}, message string)
- func RespondError(w http.ResponseWriter, status int, message string)
- func RespondJSON(w http.ResponseWriter, status int, payload interface{})
- func RespondNoContent(w http.ResponseWriter)
- func RespondPaginated(w http.ResponseWriter, data interface{}, page, pageSize, totalItems int)
- func RespondSuccess(w http.ResponseWriter, data interface{}, message string)
- type Claims
- type ErrorResponse
- type LoggingMiddleware
- type PaginatedResponse
- type SuccessResponse
Constants ¶
const ( UserIDKey contextKey = "user_id" EmailKey contextKey = "email" RoleKey contextKey = "role" DomainIDKey contextKey = "domain_id" )
Variables ¶
This section is empty.
Functions ¶
func Auth ¶
func Auth(jwtSecret string, apiKeyRepo repository.APIKeyRepository, logger *zap.Logger) func(http.Handler) http.Handler
Auth returns middleware that validates JWT tokens and API keys
func GenerateJWT ¶
GenerateJWT generates a new JWT token for a user
func GetDomainID ¶
GetDomainID retrieves domain ID from request context
func RateLimit ¶
func RateLimit(repo repository.RateLimitRepository, logger *zap.Logger) func(http.Handler) http.Handler
RateLimit returns middleware that enforces API rate limiting
func RespondCreated ¶
func RespondCreated(w http.ResponseWriter, data interface{}, message string)
RespondCreated sends a 201 Created response
func RespondError ¶
func RespondError(w http.ResponseWriter, status int, message string)
RespondError sends an error response
func RespondJSON ¶
func RespondJSON(w http.ResponseWriter, status int, payload interface{})
RespondJSON sends a JSON response
func RespondNoContent ¶
func RespondNoContent(w http.ResponseWriter)
RespondNoContent sends a 204 No Content response
func RespondPaginated ¶
func RespondPaginated(w http.ResponseWriter, data interface{}, page, pageSize, totalItems int)
RespondPaginated sends a paginated response
func RespondSuccess ¶
func RespondSuccess(w http.ResponseWriter, data interface{}, message string)
RespondSuccess sends a success response
Types ¶
type Claims ¶
type Claims struct {
UserID int64 `json:"user_id"`
Email string `json:"email"`
Role string `json:"role"`
DomainID *int64 `json:"domain_id,omitempty"`
jwt.RegisteredClaims
}
Claims represents JWT claims
func ValidateJWT ¶
ValidateJWT validates and parses a JWT token
type ErrorResponse ¶
type ErrorResponse struct {
Error string `json:"error"`
Message string `json:"message,omitempty"`
Code int `json:"code"`
}
ErrorResponse represents an API error response
type LoggingMiddleware ¶
type LoggingMiddleware struct {
// contains filtered or unexported fields
}
LoggingMiddleware handles request logging
func NewLoggingMiddleware ¶
func NewLoggingMiddleware(logger *zap.Logger) *LoggingMiddleware
NewLoggingMiddleware creates a new logging middleware
type PaginatedResponse ¶
type PaginatedResponse struct {
Data interface{} `json:"data"`
Page int `json:"page"`
PageSize int `json:"page_size"`
TotalPages int `json:"total_pages"`
TotalItems int `json:"total_items"`
}
PaginatedResponse represents a paginated API response
type SuccessResponse ¶
type SuccessResponse struct {
Data interface{} `json:"data,omitempty"`
Message string `json:"message,omitempty"`
}
SuccessResponse represents an API success response