auth

package
v1.1.0 Latest Latest
Warning

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

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

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RoleHierarchy = map[Role]int{
	RoleOwner:  3,
	RoleAdmin:  2,
	RoleMember: 1,
}

Functions

func GetAPIKey

func GetAPIKey(c *fiber.Ctx) (*models.APIKey, bool)

func GetAuthType

func GetAuthType(c *fiber.Ctx) string

func GetClerkClaims

func GetClerkClaims(c *fiber.Ctx) (*clerk.SessionClaims, bool)

func GetOrganizationID

func GetOrganizationID(c *fiber.Ctx) (string, bool)

func GetProjectID

func GetProjectID(c *fiber.Ctx) (uint, bool)

func GetUserID

func GetUserID(c *fiber.Ctx) (string, bool)

func IsAPIKeyAuth

func IsAPIKeyAuth(c *fiber.Ctx) bool

func IsClerkAuth

func IsClerkAuth(c *fiber.Ctx) bool

func RequireAPIKeyAuth

func RequireAPIKeyAuth(c *fiber.Ctx) error

func RequireClerkAuth

func RequireClerkAuth(c *fiber.Ctx) error

Types

type APIKeyAuthContext

type APIKeyAuthContext struct {
	Key            *models.APIKey
	UserID         string
	OrganizationID string
	ProjectID      uint
	Scopes         []string
}

type AuthContext

type AuthContext struct {
	Type   AuthType
	Clerk  *ClerkAuthContext
	APIKey *APIKeyAuthContext
}

func GetAuthContext

func GetAuthContext(c *fiber.Ctx) *AuthContext

func (*AuthContext) GetOrganizationID

func (a *AuthContext) GetOrganizationID() (string, bool)

func (*AuthContext) GetProjectID

func (a *AuthContext) GetProjectID() (uint, bool)

func (*AuthContext) GetUserID

func (a *AuthContext) GetUserID() (string, bool)

func (*AuthContext) IsAPIKey

func (a *AuthContext) IsAPIKey() bool

func (*AuthContext) IsClerk

func (a *AuthContext) IsClerk() bool

type AuthProvider

type AuthProvider interface {
	ValidateOrganizationAccess(ctx context.Context, userID, organizationID string) (bool, error)

	ValidateProjectAccess(ctx context.Context, userID string, projectID uint, requiredRole Role) (bool, error)

	GetUserOrganizations(ctx context.Context, userID string) ([]string, error)

	GetOrganizationRole(ctx context.Context, userID, organizationID string) (string, error)
}

type AuthType

type AuthType string
const (
	AuthTypeClerk  AuthType = "clerk"
	AuthTypeAPIKey AuthType = "api_key"
)

type ClerkAuthContext

type ClerkAuthContext struct {
	UserID string
	Claims *clerk.SessionClaims
}

type ClerkAuthProvider

type ClerkAuthProvider struct {
	// contains filtered or unexported fields
}

func NewClerkAuthProvider

func NewClerkAuthProvider(secretKey string, db *gorm.DB) *ClerkAuthProvider

func (*ClerkAuthProvider) GetOrganizationRole

func (p *ClerkAuthProvider) GetOrganizationRole(ctx context.Context, userID, organizationID string) (string, error)

func (*ClerkAuthProvider) GetUserOrganizations

func (p *ClerkAuthProvider) GetUserOrganizations(ctx context.Context, userID string) ([]string, error)

func (*ClerkAuthProvider) ValidateOrganizationAccess

func (p *ClerkAuthProvider) ValidateOrganizationAccess(ctx context.Context, userID, organizationID string) (bool, error)

func (*ClerkAuthProvider) ValidateProjectAccess

func (p *ClerkAuthProvider) ValidateProjectAccess(ctx context.Context, userID string, projectID uint, requiredRole Role) (bool, error)

func (*ClerkAuthProvider) ValidateToken

func (p *ClerkAuthProvider) ValidateToken(ctx context.Context, token string) (*clerk.SessionClaims, error)

type DatabaseAuthProvider

type DatabaseAuthProvider struct {
	// contains filtered or unexported fields
}

func NewDatabaseAuthProvider

func NewDatabaseAuthProvider(db *gorm.DB) *DatabaseAuthProvider

func (*DatabaseAuthProvider) GetOrganizationRole

func (p *DatabaseAuthProvider) GetOrganizationRole(ctx context.Context, userID, organizationID string) (string, error)

func (*DatabaseAuthProvider) GetUserOrganizations

func (p *DatabaseAuthProvider) GetUserOrganizations(ctx context.Context, userID string) ([]string, error)

func (*DatabaseAuthProvider) ValidateOrganizationAccess

func (p *DatabaseAuthProvider) ValidateOrganizationAccess(ctx context.Context, userID, organizationID string) (bool, error)

func (*DatabaseAuthProvider) ValidateProjectAccess

func (p *DatabaseAuthProvider) ValidateProjectAccess(ctx context.Context, userID string, projectID uint, requiredRole Role) (bool, error)

type Member

type Member struct {
	UserID string
	OrgID  string
	Role   string
}

type Organization

type Organization struct {
	ID        string
	Name      string
	OwnerID   string
	CreatedAt time.Time
}

type Role

type Role string
const (
	RoleOwner  Role = "owner"
	RoleAdmin  Role = "admin"
	RoleMember Role = "member"
)

func (Role) HasPermission

func (r Role) HasPermission(required Role) bool

Jump to

Keyboard shortcuts

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