Add password to User schema

Make sure password is encrypted
Update tests

Signed-off-by: Andrea Waltlova <awaltlov@redhat.com>
This commit is contained in:
Andrea Waltlova 2024-07-18 16:45:29 +02:00 committed by Ondřej Ezr
parent 5d0e3ee85b
commit 7c830e90b0
4 changed files with 223 additions and 184 deletions

View file

@ -530,9 +530,10 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep
}
userCustomizations = append(userCustomizations,
blueprint.UserCustomization{
Name: user.Name,
Key: user.Key,
Groups: groups,
Name: user.Name,
Key: user.Key,
Password: user.Password,
Groups: groups,
},
)
}
@ -898,6 +899,10 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep
bp.Customizations = nil
}
err = bp.CryptPasswords()
if err != nil {
return bp, fmt.Errorf("Error hashing passwords: %s", err.Error())
}
return bp, nil
}

View file

@ -47,9 +47,10 @@ func GetTestBlueprint() blueprint.Blueprint {
expected.Customizations = &blueprint.Customizations{
User: []blueprint.UserCustomization{
blueprint.UserCustomization{
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Groups: []string{"users", "wheel"},
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Password: common.ToPtr("$6$secret-password"),
Groups: []string{"users", "wheel"},
},
},
Directories: []blueprint.DirectoryCustomization{
@ -165,9 +166,10 @@ func TestGetBlueprintFromCustomizations(t *testing.T) {
cr = ComposeRequest{Customizations: &Customizations{
Users: &[]User{
User{
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Groups: &[]string{"users", "wheel"},
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Password: common.ToPtr("$6$secret-password"),
Groups: &[]string{"users", "wheel"},
}},
Packages: &[]string{"bash", "tmux"},
Containers: &[]Container{
@ -264,6 +266,25 @@ func TestGetBlueprintFromCustomizations(t *testing.T) {
assert.Equal(t, GetTestBlueprint(), bp)
}
func TestBlueprintFromCustomizationPasswordsHashed(t *testing.T) {
// Construct the compose request with customizations
plaintextPassword := "secret-password"
cr := ComposeRequest{Customizations: &Customizations{
Users: &[]User{
User{
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Password: common.ToPtr(plaintextPassword),
Groups: &[]string{"users", "wheel"},
}},
}}
bp, err := cr.GetBlueprintFromCustomizations()
require.Nil(t, err)
// Passwords should be hashed
assert.NotEqual(t, plaintextPassword, bp.Customizations.User[0].Password)
}
func TestGetBlueprintFromCompose(t *testing.T) {
// Empty request should return empty blueprint
cr := ComposeRequest{}
@ -300,9 +321,10 @@ func TestGetBlueprintFromCompose(t *testing.T) {
Customizations: &BlueprintCustomizations{
User: &[]BlueprintUser{
{
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Groups: &[]string{"users", "wheel"},
Name: "admin",
Key: common.ToPtr("dummy ssh-key"),
Password: common.ToPtr("$6$secret-password"),
Groups: &[]string{"users", "wheel"},
}},
Directories: &[]Directory{
Directory{

View file

@ -1069,6 +1069,11 @@ type User struct {
Groups *[]string `json:"groups,omitempty"`
Key *string `json:"key,omitempty"`
Name string `json:"name"`
// If the password starts with $6$, $5$, or $2b$ it will be stored as
// an encrypted password. Otherwise it will be treated as a plain text
// password.
Password *string `json:"password,omitempty"`
}
// Page defines model for page.
@ -1350,178 +1355,178 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"AAA=",
"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",
"Q7gxabkAAA==",
}
// GetSwagger returns the content of the embedded swagger specification file

View file

@ -1764,6 +1764,13 @@ components:
key:
type: string
example: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINrGKErMYi+MMUwuHaRAJmRLoIzRf2qD2dD5z0BTx/6x"
password:
type: string
format: password
description: |
If the password starts with $6$, $5$, or $2b$ it will be stored as
an encrypted password. Otherwise it will be treated as a plain text
password.
BlueprintUser:
type: object
additionalProperties: false