package domain // BrokerUser is the standard user model used within Baron SSO business logic. // It defines the canonical set of fields that must be supported by any underlying IDP. type BrokerUser struct { ID string `json:"id" required:"true"` Email string `json:"email" required:"true"` Name string `json:"name"` PhoneNumber string `json:"phone_number"` // Attributes stores custom user attributes. // The "required_keys" tag specifies which keys MUST be present in the IDP's schema support. Attributes map[string]interface{} `json:"attributes" required_keys:"grade,department"` } // IDPMetadata represents the schema capabilities of an Identity Provider. type IDPMetadata struct { // SupportedFields lists the BrokerUser fields (json tag names) that the IDP supports. // For custom attributes, use the key name directly (e.g., "grade"). SupportedFields []string } // IdentityProvider is the interface that all IDP adapters must implement. type IdentityProvider interface { Name() string // GetMetadata returns the schema support information for this IDP. // This is used for startup-time validation. GetMetadata() (*IDPMetadata, error) }