Skip to content

Commit 82745e1

Browse files
laerobgajjala8
authored andcommitted
feat(handlers): Implement CRUDL for vault generic Password credential (#6161)
1 parent 4a8009f commit 82745e1

File tree

8 files changed

+540
-498
lines changed

8 files changed

+540
-498
lines changed

internal/credential/credential.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,9 @@ type UsernamePasswordDomain interface {
143143
Domain() string
144144
}
145145

146-
// PasswordCredential is a credential containing a username and a password.
146+
// PasswordOnly is a credential containing a password.
147147
// Does not follow naming convention to avoid conflict with existing Password type.
148-
type PasswordCredential interface {
148+
type PasswordOnly interface {
149149
Credential
150150
Password() Password
151151
}

internal/credential/vault/private_library.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ func baseToUsrPassDomain(ctx context.Context, bc *baseCred) (*usrPassDomainCred,
169169
}, nil
170170
}
171171

172-
var _ credential.PasswordCredential = (*passCred)(nil)
172+
var _ credential.PasswordOnly = (*passCred)(nil)
173173

174174
type passCred struct {
175175
*baseCred

internal/daemon/controller/handlers/credentiallibraries/credentiallibrary_service.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ var (
8383
globals.SshPrivateKeyCredentialType,
8484
globals.UnspecifiedCredentialType,
8585
globals.UsernamePasswordDomainCredentialType,
86+
globals.PasswordCredentialType,
8687
}
8788

8889
validKeyTypes = []string{
@@ -851,6 +852,11 @@ func toProto(ctx context.Context, in credential.Library, opt ...handlers.Option)
851852
m[domainAttribute] = mapping.DomainAttribute
852853
}
853854

855+
case *vault.PasswordOverride:
856+
if mapping.PasswordAttribute != "" {
857+
m[passwordAttribute] = mapping.PasswordAttribute
858+
}
859+
854860
case *vault.SshPrivateKeyOverride:
855861
if mapping.UsernameAttribute != "" {
856862
m[usernameAttribute] = mapping.UsernameAttribute
@@ -1006,6 +1012,17 @@ func toStorageVaultLibrary(ctx context.Context, storeId string, in *pb.Credentia
10061012
opts = append(opts, vault.WithMappingOverride(vault.NewUsernamePasswordDomainOverride(mapOpts...)))
10071013
}
10081014

1015+
case globals.PasswordCredentialType:
1016+
opts = append(opts, vault.WithCredentialType(credentialType))
1017+
overrides := in.CredentialMappingOverrides.AsMap()
1018+
var mapOpts []vault.Option
1019+
if password := overrides[passwordAttribute]; password != nil {
1020+
mapOpts = append(mapOpts, vault.WithOverridePasswordAttribute(password.(string)))
1021+
}
1022+
if len(mapOpts) > 0 {
1023+
opts = append(opts, vault.WithMappingOverride(vault.NewPasswordOverride(mapOpts...)))
1024+
}
1025+
10091026
case globals.SshPrivateKeyCredentialType:
10101027
opts = append(opts, vault.WithCredentialType(credentialType))
10111028
overrides := in.CredentialMappingOverrides.AsMap()
@@ -1340,6 +1357,8 @@ func validateMapping(badFields map[string]string, credentialType globals.Credent
13401357
validFields[usernameAttribute] = true
13411358
validFields[passwordAttribute] = true
13421359
validFields[domainAttribute] = true
1360+
case globals.PasswordCredentialType:
1361+
validFields[passwordAttribute] = true
13431362
default:
13441363
badFields[globals.CredentialTypeField] = fmt.Sprintf("Unknown credential type %q", credentialType)
13451364
return
@@ -1457,6 +1476,18 @@ func getMappingUpdates(credentialType globals.CredentialType, current vault.Mapp
14571476
default:
14581477
ret[domainAttribute] = currentDomain
14591478
}
1479+
case globals.PasswordCredentialType:
1480+
var currentPass any
1481+
if overrides, ok := current.(*vault.PasswordOverride); ok {
1482+
currentPass = overrides.PasswordAttribute
1483+
}
1484+
1485+
switch {
1486+
case masks[passwordAttribute]:
1487+
ret[passwordAttribute] = new[passwordAttribute]
1488+
default:
1489+
ret[passwordAttribute] = currentPass
1490+
}
14601491
case globals.SshPrivateKeyCredentialType:
14611492
var currentUser, currentpPass, currentPk any
14621493
if overrides, ok := current.(*vault.SshPrivateKeyOverride); ok {

0 commit comments

Comments
 (0)