Skip to content

Commit

Permalink
feat: Put user invitation methods behind config (#1266)
Browse files Browse the repository at this point in the history
  • Loading branch information
JigarJoshi committed Jun 6, 2023
1 parent b2eec4c commit 53ba9fe
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
3 changes: 3 additions & 0 deletions server/config/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ type AuthConfig struct {
}

type Invitation struct {
Enabled bool `json:"enabled" mapstructure:"enabled" yaml:"enabled"`
ExpireAfterSec int64 `json:"expire_after_sec" mapstructure:"expire_after_sec" yaml:"expire_after_sec"`
}

Expand All @@ -118,6 +119,7 @@ type ClusterConfig struct {
type NamespaceLocalization struct {
Enabled bool `json:"enabled" mapstructure:"enabled" yaml:"enabled"`
}

type ValidatorConfig struct {
Issuer string `json:"issuer" mapstructure:"issuer" yaml:"issuer"`
Algorithm validator.SignatureAlgorithm `json:"algorithm" mapstructure:"algorithm" yaml:"algorithm"`
Expand Down Expand Up @@ -353,6 +355,7 @@ var DefaultConfig = Config{
EnableNamespaceDeletion: false,
EnableNamespaceCreation: true,
UserInvitations: Invitation{
Enabled: true,
ExpireAfterSec: 259200, // 3days
},
Authz: AuthzConfig{Enabled: false, LogOnly: true},
Expand Down
12 changes: 12 additions & 0 deletions server/services/v1/auth/user_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ func NewDefaultUsersManager(tm *metadata.TenantManager) *DefaultUsersManager {
}

func (um *DefaultUsersManager) CreateInvitations(ctx context.Context, req *api.CreateInvitationsRequest) (*api.CreateInvitationsResponse, error) {
if !config.DefaultConfig.Auth.UserInvitations.Enabled {
return nil, errors.Unimplemented("User invitation is not enabled.")
}
for _, invitation := range req.Invitations {
err := createInvitation(ctx, invitation.GetEmail(), invitation.GetRole(), invitation.GetInvitationSentByName(), um)
if err != nil {
Expand Down Expand Up @@ -132,6 +135,9 @@ func createInvitation(ctx context.Context, email string, role string, invitation
}

func (*DefaultUsersManager) DeleteInvitations(ctx context.Context, req *api.DeleteInvitationsRequest) (*api.DeleteInvitationsResponse, error) {
if !config.DefaultConfig.Auth.UserInvitations.Enabled {
return nil, errors.Unimplemented("User invitation is not enabled.")
}
if req.GetEmail() == "" {
return nil, errors.InvalidArgument("Email must be specified")
}
Expand Down Expand Up @@ -180,6 +186,9 @@ func (*DefaultUsersManager) DeleteInvitations(ctx context.Context, req *api.Dele
}

func (*DefaultUsersManager) ListInvitations(ctx context.Context, req *api.ListInvitationsRequest) (*api.ListInvitationsResponse, error) {
if !config.DefaultConfig.Auth.UserInvitations.Enabled {
return nil, errors.Unimplemented("User invitation is not enabled.")
}
if req.GetStatus() != "" {
err := validateInvitationStatusInput(req.GetStatus())
if err != nil {
Expand Down Expand Up @@ -222,6 +231,9 @@ func (*DefaultUsersManager) ListInvitations(ctx context.Context, req *api.ListIn
}

func (*DefaultUsersManager) VerifyInvitation(ctx context.Context, req *api.VerifyInvitationRequest) (*api.VerifyInvitationResponse, error) {
if !config.DefaultConfig.Auth.UserInvitations.Enabled {
return nil, errors.Unimplemented("User invitation is not enabled.")
}
if req.GetEmail() == "" {
return nil, errors.InvalidArgument("Email must be specified")
}
Expand Down

0 comments on commit 53ba9fe

Please sign in to comment.