mirror of
https://github.com/paralus/paralus.git
synced 2026-08-24 15:47:19 +00:00
Implement OIDC provider Update and Delete methods
This commit is contained in:
@@ -30,5 +30,6 @@ func (s *oidcProvider) UpdateOIDCProvider(ctx context.Context, p *userv3.OIDCPro
|
||||
return s.Update(ctx, p)
|
||||
}
|
||||
func (s *oidcProvider) DeleteOIDCProvider(ctx context.Context, p *userv3.OIDCProvider) (*emptypb.Empty, error) {
|
||||
// TODO: if successful return 204 NO CONTENT
|
||||
return &emptypb.Empty{}, s.Delete(ctx, p)
|
||||
}
|
||||
|
||||
@@ -194,9 +194,95 @@ func (s *oidcProvider) List(ctx context.Context) (*userv3.OIDCProviderList, erro
|
||||
}
|
||||
|
||||
func (s *oidcProvider) Update(ctx context.Context, provider *userv3.OIDCProvider) (*userv3.OIDCProvider, error) {
|
||||
return &userv3.OIDCProvider{}, nil
|
||||
var id, orgId, partId uuid.UUID
|
||||
id, err := uuid.Parse(provider.Metadata.GetId())
|
||||
// TODO: 400 Bad Request
|
||||
if err != nil {
|
||||
return &userv3.OIDCProvider{}, err
|
||||
}
|
||||
if len(provider.Metadata.GetOrganization()) != 0 {
|
||||
orgId, err = uuid.Parse(provider.Metadata.GetOrganization())
|
||||
if err != nil {
|
||||
return &userv3.OIDCProvider{}, err
|
||||
}
|
||||
}
|
||||
if len(provider.Metadata.GetPartner()) != 0 {
|
||||
partId, err = uuid.Parse(provider.Metadata.GetPartner())
|
||||
if err != nil {
|
||||
return &userv3.OIDCProvider{}, err
|
||||
}
|
||||
}
|
||||
_, err = s.dao.GetByID(ctx, id, &models.OIDCProvider{})
|
||||
// TODO: Return proper error for Id not exist
|
||||
if err != nil {
|
||||
return &userv3.OIDCProvider{}, err
|
||||
}
|
||||
entity := &models.OIDCProvider{
|
||||
Id: id,
|
||||
Name: provider.Metadata.GetName(),
|
||||
Description: provider.Metadata.GetDescription(),
|
||||
OrganizationId: orgId,
|
||||
PartnerId: partId,
|
||||
ModifiedAt: time.Now(),
|
||||
ProviderName: provider.Spec.GetProviderName(),
|
||||
MapperURL: provider.Spec.GetMapperUrl(),
|
||||
MapperFilename: provider.Spec.GetMapperFilename(),
|
||||
ClientId: provider.Spec.GetClientId(),
|
||||
ClientSecret: provider.Spec.GetClientSecret(),
|
||||
Scopes: provider.Spec.GetScopes(),
|
||||
IssuerURL: provider.Spec.GetIssuerUrl(),
|
||||
AuthURL: provider.Spec.GetAuthUrl(),
|
||||
TokenURL: provider.Spec.GetTokenUrl(),
|
||||
RequestedClaims: provider.Spec.GetRequestedClaims().AsMap(),
|
||||
Predefined: provider.Spec.GetPredefined(),
|
||||
CallbackURL: provider.Spec.GetCallbackUrl(),
|
||||
}
|
||||
_, err = s.dao.Update(ctx, id, entity)
|
||||
if err != nil {
|
||||
return &userv3.OIDCProvider{}, err
|
||||
}
|
||||
|
||||
rclaims, _ := structpb.NewStruct(entity.RequestedClaims)
|
||||
rv := &userv3.OIDCProvider{
|
||||
ApiVersion: "usermgmt.k8smgmt.io/v3",
|
||||
Kind: "OIDCProvider",
|
||||
Metadata: &commonv3.Metadata{
|
||||
Name: entity.Name,
|
||||
Description: entity.Description,
|
||||
Id: entity.Id.String(),
|
||||
},
|
||||
Spec: &userv3.OIDCProviderSpec{
|
||||
ProviderName: entity.ProviderName,
|
||||
MapperUrl: entity.MapperURL,
|
||||
MapperFilename: entity.MapperFilename,
|
||||
ClientId: entity.ClientId,
|
||||
ClientSecret: entity.ClientSecret,
|
||||
Scopes: entity.Scopes,
|
||||
IssuerUrl: entity.IssuerURL,
|
||||
AuthUrl: entity.AuthURL,
|
||||
TokenUrl: entity.TokenURL,
|
||||
RequestedClaims: rclaims,
|
||||
Predefined: entity.Predefined,
|
||||
CallbackUrl: entity.CallbackURL,
|
||||
},
|
||||
}
|
||||
return rv, nil
|
||||
}
|
||||
|
||||
func (s *oidcProvider) Delete(ctx context.Context, provider *userv3.OIDCProvider) error {
|
||||
id, err := uuid.Parse(provider.Metadata.GetId())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
entity := &models.OIDCProvider{}
|
||||
_, err = s.dao.GetByID(ctx, id, entity)
|
||||
if entity.Id != id {
|
||||
return fmt.Errorf("ID DOES NOT EXISTS")
|
||||
}
|
||||
|
||||
err = s.dao.Delete(ctx, id, &models.OIDCProvider{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user