Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DefaultReceiveSettings = pubsub.DefaultReceiveSettings
Functions ¶
func NewSubscriber ¶
func NewSubscriber(logger log.Logger, opts SubscriberOptions) (background.Routine, error)
NewSubscriber creates a new background routine for receiving SAMS notifications from given GCP project ID and Pub/Sub subscription ID.
Users should prefer to use the top-level 'sams.NewNotificationsV1Subscriber' constructor instead.
Types ¶
type ReceiveSettings ¶
type ReceiveSettings = pubsub.ReceiveSettings
type SessionInvalidatedData ¶
type SessionInvalidatedData struct { // AccountID is the SAMS external ID of the user whose session has been // invalidated. AccountID string `json:"account_id"` // SessionID is the ID of the invalidated session. SessionID string `json:"session_id"` }
SessionInvalidatedData contains information of a "SessionInvalidated" notification.
type SubscriberHandlers ¶
type SubscriberHandlers struct { // OnUserDeleted is called when a "UserDeleted" notification is received. // // It indicates that a user has been permanently deleted from SAMS and the // handler MUST delete any user-related PII from the system and/or integrated // vendor systems to stay in compliance. In the event of an error, the handler // MUST make sure the error is surfaced (by either returning or logging the // error) to be retried or to a human operator. OnUserDeleted func(ctx context.Context, data *UserDeletedData) error // OnUserRolesUpdated is called when a "UserRolesUpdated" notification is // received. // // It indicates that a user's roles have been updated for a particular service. // The notification data does not specify whether roles have been granted or // revoked. If the service's roles are relevant to the subscriber the user's // current roles can be retrieved from the SAMS API. OnUserRolesUpdated func(ctx context.Context, data *UserRolesUpdatedData) error // OnUserMetadataUpdated is called when a "UserMetadataUpdated" notification // is received. // // It indicates that a user's metadata has been updated for a particular namespace. // The notification data does not specify the updated metadata - the current // metadata must be retrieved from the SAMS API. OnUserMetadataUpdated func(ctx context.Context, data *UserMetadataUpdatedData) error // OnSessionInvalidated is called when a "SessionInvalidated" notification is // received. // // It indicates that a user's session has been invalidated and the handler // SHOULD take appropriate action to log the user out of the system. OnSessionInvalidated func(ctx context.Context, data *SessionInvalidatedData) error }
SubscriberHandlers is a collection of subscription handlers for each type of SAMS notifications. If the handler of a notification is nil, the notification will be acknowledged automatically without any processing.
If a handler returns an error, the notification will be unacknowledged and retried later.
type SubscriberOptions ¶
type SubscriberOptions struct { // ProjectID is the GCP project ID that the Pub/Sub subscription belongs to. It // is almost always the same GCP project that the Cloud Run service is deployed // to. ProjectID string // SubscriptionID is the GCP Pub/Sub subscription ID to receive SAMS // notifications from. SubscriptionID string // ReceiveSettings is the settings for receiving messages of the subscription. A // zero value means to use the default settings. ReceiveSettings ReceiveSettings // Handlers is the collection of subscription handlers for each type of SAMS // notifications. Handlers SubscriberHandlers // Credentials is the account credentials to be used for the GCP Pub/Sub client. // Default credentials will be used when not set. Credentials *google.Credentials }
func (SubscriberOptions) Validate ¶
func (opts SubscriberOptions) Validate() error
type UserDeletedData ¶
type UserDeletedData struct { // AccountID is the SAMS external ID of the deleted user. AccountID string `json:"account_id"` // Email is the email address of the deleted user. Email string `json:"email"` }
UserDeletedData contains information of a "UserDeleted" notification.
type UserMetadataUpdatedData ¶
type UserRolesUpdatedData ¶
type UserRolesUpdatedData struct { // AccountID is the SAMS external ID of the user whose roles have been updated. AccountID string `json:"account_id"` // Service is the service that the user's roles have been updated in. Service services.Service `json:"service"` // RoleID is the role that has been updated. RoleID roles.Role `json:"role"` // ResourceID is the ID of the resource the role has been updated on, // if applicable. When ResourceID is empty, the role is a service-level // role that does not apply to a specific resource. ResourceID string `json:"resource_id,omitempty"` // ResourceType is the type of the resource the role has been updated on, // if applicable. When ResourceType is empty, the role is a service-level // role that does not apply to a specific resource. ResourceType roles.ResourceType `json:"resource_type,omitempty"` }
UserRolesUpdatedData contains information of a "UserRolesUpdated" notification. When a user's roles have been updated it is neccessary to query SAMS to get the updated roles to determine if it was granted/revoked.
For more details see: https://sourcegraph.notion.site/SAMS-Roles-Resources-13ca8e11265880f9a573cac77070ca0c