clerk

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Sep 9, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package clerk provides Clerk authentication integration for pgsquash. It handles JWT v2 organization claims, user ID extraction, and RLS policy patterns.

Index

Constants

View Source
const (
	AuthPatternClerkJWTV2 = "clerk_jwt_v2" // Clerk JWT v2 with organization claims
	AuthPatternClerk      = "clerk_auth"   // Clerk generic patterns
)

Clerk-specific auth pattern identifiers

Variables

This section is empty.

Functions

This section is empty.

Types

type ClerkConfig

type ClerkConfig struct {
	Enabled               bool   `json:"enabled"`
	JWTVersion            string `json:"jwt_version"`             // "v1" or "v2"
	OrganizationSupport   bool   `json:"organization_support"`    // Enable org claim handling
	PublicMetadataSupport bool   `json:"public_metadata_support"` // Enable public metadata
}

ClerkConfig holds Clerk-specific configuration

type ClerkPlugin

type ClerkPlugin struct {
	*plugins.BasePlugin
	// contains filtered or unexported fields
}

ClerkPlugin implements Clerk authentication service integration

func NewClerkPlugin

func NewClerkPlugin() *ClerkPlugin

NewClerkPlugin creates a new Clerk plugin instance

func (*ClerkPlugin) Detect

func (cp *ClerkPlugin) Detect(migrations []*types.Migration) bool

Detect checks if migrations contain Clerk patterns Detection patterns (in order of specificity):

  1. JWT v2 organization claims: auth.jwt()->'o'->>'id'
  2. JWT v1/generic patterns: auth.jwt() with 'sub'
  3. Clerk helper functions: clerk_user_id(), clerk_is_admin()

func (*ClerkPlugin) DetectAuthPattern

func (cp *ClerkPlugin) DetectAuthPattern(stmt *types.Statement) string

DetectAuthPattern analyzes a statement for Clerk authentication patterns

func (*ClerkPlugin) DetectPatterns

func (cp *ClerkPlugin) DetectPatterns(sql string) []plugins.Pattern

DetectPatterns analyzes SQL for Clerk-specific patterns

func (*ClerkPlugin) EnrichStatement

func (cp *ClerkPlugin) EnrichStatement(ctx context.Context, stmt *types.Statement) error

EnrichStatement adds Clerk-specific metadata to parsed statements

func (*ClerkPlugin) FixFunctionVolatility

func (cp *ClerkPlugin) FixFunctionVolatility(ctx context.Context, functionSQL string) (string, error)

FixFunctionVolatility adds STABLE markers to Clerk auth functions Uses AST-based parsing for more accurate and maintainable transformations

func (*ClerkPlugin) GetConflictingPlugins

func (cp *ClerkPlugin) GetConflictingPlugins() []string

GetConflictingPlugins returns plugins that conflict with Clerk

func (*ClerkPlugin) GetConsolidationRules

func (cp *ClerkPlugin) GetConsolidationRules() []plugins.ConsolidationRule

GetConsolidationRules returns Clerk-specific consolidation rules

func (*ClerkPlugin) GetRequiredExtensions

func (cp *ClerkPlugin) GetRequiredExtensions() []string

GetRequiredExtensions returns PostgreSQL extensions required by Clerk

func (*ClerkPlugin) Initialize

func (cp *ClerkPlugin) Initialize(ctx context.Context, config any) error

Initialize configures the Clerk plugin with service-specific settings

func (*ClerkPlugin) InjectCompatibilityLayer

func (cp *ClerkPlugin) InjectCompatibilityLayer(ctx context.Context) string

InjectCompatibilityLayer returns SQL to mock Clerk authentication for validation This creates:

  • auth schema
  • Common Clerk/Supabase roles (anon, authenticated, service_role)
  • Mock auth.jwt() function returning Clerk JWT v2 payload
  • Helper functions (current_user_id, current_organization_id, etc.)

func (*ClerkPlugin) ShouldPreserve

func (cp *ClerkPlugin) ShouldPreserve(stmt *types.Statement) bool

ShouldPreserve determines if a statement should never be consolidated

func (*ClerkPlugin) TransformSQL

func (cp *ClerkPlugin) TransformSQL(ctx context.Context, sql string) (string, error)

TransformSQL performs Clerk-specific SQL transformations Currently delegates to FixFunctionVolatility

func (*ClerkPlugin) ValidateSchema

func (cp *ClerkPlugin) ValidateSchema(ctx context.Context, db *sql.DB) error

ValidateSchema performs Clerk-specific schema validation

Jump to

Keyboard shortcuts

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