package domain import ( "time" "github.com/lib/pq" ) const ( DeveloperRequestStatusPending = "pending" DeveloperRequestStatusApproved = "approved" DeveloperRequestStatusRejected = "rejected" DeveloperRequestStatusCancelled = "cancelled" ) const ( DeveloperAccessPageAll = "all" DeveloperAccessPageOverview = "overview" DeveloperAccessPageClientCreate = "client_create" DeveloperAccessPageAudit = "audit" ) var DeveloperAccessPageOrder = []string{ DeveloperAccessPageOverview, DeveloperAccessPageClientCreate, DeveloperAccessPageAudit, } // DeveloperRequest represents a user's application to become a developer. type DeveloperRequest struct { ID uint `gorm:"primaryKey" json:"id"` UserID string `gorm:"index;not null" json:"userId"` // Kratos User ID TenantID string `gorm:"index;not null" json:"tenantId"` Name string `gorm:"not null" json:"name"` Organization string `json:"organization"` Email string `json:"email"` Phone string `json:"phone"` Role string `json:"role"` Reason string `json:"reason"` AccessPages pq.StringArray `gorm:"type:text[]" json:"accessPages,omitempty"` Status string `gorm:"default:'pending';not null" json:"status"` // pending, approved, rejected, cancelled AdminNotes string `json:"adminNotes"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` } type DeveloperAccessStatus struct { Status string `json:"status"` ApprovedPages pq.StringArray `json:"approvedPages,omitempty"` PendingPages pq.StringArray `json:"pendingPages,omitempty"` }