forked from baron/baron-sso
29 lines
1.2 KiB
Go
29 lines
1.2 KiB
Go
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)
|
|
}
|