mirror of
https://github.com/zitadel/zitadel.git
synced 2025-01-10 15:33:41 +00:00
173 lines
3.8 KiB
Go
173 lines
3.8 KiB
Go
|
package samlrequest
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"time"
|
||
|
|
||
|
"github.com/zitadel/zitadel/internal/domain"
|
||
|
"github.com/zitadel/zitadel/internal/eventstore"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
samlRequestEventPrefix = "saml_request."
|
||
|
AddedType = samlRequestEventPrefix + "added"
|
||
|
FailedType = samlRequestEventPrefix + "failed"
|
||
|
SessionLinkedType = samlRequestEventPrefix + "session.linked"
|
||
|
SucceededType = samlRequestEventPrefix + "succeeded"
|
||
|
)
|
||
|
|
||
|
type AddedEvent struct {
|
||
|
*eventstore.BaseEvent `json:"-"`
|
||
|
|
||
|
LoginClient string `json:"login_client,omitempty"`
|
||
|
ApplicationID string `json:"application_id,omitempty"`
|
||
|
ACSURL string `json:"acs_url,omitempty"`
|
||
|
RelayState string `json:"relay_state,omitempty"`
|
||
|
RequestID string `json:"request_id,omitempty"`
|
||
|
Binding string `json:"binding,omitempty"`
|
||
|
Issuer string `json:"issuer,omitempty"`
|
||
|
Destination string `json:"destination,omitempty"`
|
||
|
}
|
||
|
|
||
|
func (e *AddedEvent) SetBaseEvent(event *eventstore.BaseEvent) {
|
||
|
e.BaseEvent = event
|
||
|
}
|
||
|
|
||
|
func (e *AddedEvent) Payload() interface{} {
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func (e *AddedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewAddedEvent(ctx context.Context,
|
||
|
aggregate *eventstore.Aggregate,
|
||
|
loginClient,
|
||
|
applicationID string,
|
||
|
acsURL string,
|
||
|
relayState string,
|
||
|
requestID string,
|
||
|
binding string,
|
||
|
issuer string,
|
||
|
destination string,
|
||
|
) *AddedEvent {
|
||
|
return &AddedEvent{
|
||
|
BaseEvent: eventstore.NewBaseEventForPush(
|
||
|
ctx,
|
||
|
aggregate,
|
||
|
AddedType,
|
||
|
),
|
||
|
LoginClient: loginClient,
|
||
|
ApplicationID: applicationID,
|
||
|
ACSURL: acsURL,
|
||
|
RelayState: relayState,
|
||
|
RequestID: requestID,
|
||
|
Binding: binding,
|
||
|
Issuer: issuer,
|
||
|
Destination: destination,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type SessionLinkedEvent struct {
|
||
|
*eventstore.BaseEvent `json:"-"`
|
||
|
|
||
|
SessionID string `json:"session_id"`
|
||
|
UserID string `json:"user_id"`
|
||
|
AuthTime time.Time `json:"auth_time"`
|
||
|
AuthMethods []domain.UserAuthMethodType `json:"auth_methods"`
|
||
|
}
|
||
|
|
||
|
func (e *SessionLinkedEvent) Payload() interface{} {
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func (e *SessionLinkedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewSessionLinkedEvent(ctx context.Context,
|
||
|
aggregate *eventstore.Aggregate,
|
||
|
sessionID,
|
||
|
userID string,
|
||
|
authTime time.Time,
|
||
|
authMethods []domain.UserAuthMethodType,
|
||
|
) *SessionLinkedEvent {
|
||
|
return &SessionLinkedEvent{
|
||
|
BaseEvent: eventstore.NewBaseEventForPush(
|
||
|
ctx,
|
||
|
aggregate,
|
||
|
SessionLinkedType,
|
||
|
),
|
||
|
SessionID: sessionID,
|
||
|
UserID: userID,
|
||
|
AuthTime: authTime,
|
||
|
AuthMethods: authMethods,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (e *SessionLinkedEvent) SetBaseEvent(event *eventstore.BaseEvent) {
|
||
|
e.BaseEvent = event
|
||
|
}
|
||
|
|
||
|
type FailedEvent struct {
|
||
|
*eventstore.BaseEvent `json:"-"`
|
||
|
|
||
|
Reason domain.SAMLErrorReason `json:"reason,omitempty"`
|
||
|
}
|
||
|
|
||
|
func (e *FailedEvent) Payload() interface{} {
|
||
|
return e
|
||
|
}
|
||
|
|
||
|
func (e *FailedEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewFailedEvent(
|
||
|
ctx context.Context,
|
||
|
aggregate *eventstore.Aggregate,
|
||
|
reason domain.SAMLErrorReason,
|
||
|
) *FailedEvent {
|
||
|
return &FailedEvent{
|
||
|
BaseEvent: eventstore.NewBaseEventForPush(
|
||
|
ctx,
|
||
|
aggregate,
|
||
|
FailedType,
|
||
|
),
|
||
|
Reason: reason,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (e *FailedEvent) SetBaseEvent(event *eventstore.BaseEvent) {
|
||
|
e.BaseEvent = event
|
||
|
}
|
||
|
|
||
|
type SucceededEvent struct {
|
||
|
*eventstore.BaseEvent `json:"-"`
|
||
|
}
|
||
|
|
||
|
func (e *SucceededEvent) Payload() interface{} {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (e *SucceededEvent) UniqueConstraints() []*eventstore.UniqueConstraint {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func NewSucceededEvent(ctx context.Context,
|
||
|
aggregate *eventstore.Aggregate,
|
||
|
) *SucceededEvent {
|
||
|
return &SucceededEvent{
|
||
|
BaseEvent: eventstore.NewBaseEventForPush(
|
||
|
ctx,
|
||
|
aggregate,
|
||
|
SucceededType,
|
||
|
),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (e *SucceededEvent) SetBaseEvent(event *eventstore.BaseEvent) {
|
||
|
e.BaseEvent = event
|
||
|
}
|