Skip to content

Commit 6331ec7

Browse files
committed
Resolves #110
1 parent 25c9ce0 commit 6331ec7

File tree

5 files changed

+25
-30
lines changed

5 files changed

+25
-30
lines changed

.env.sample

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,2 @@
1-
ENV=production
21
DATABASE_URL=data.db
3-
DATABASE_TYPE=sqlite
4-
ADMIN_SECRET=admin
5-
JWT_SECRET=random_string
6-
SENDER_EMAIL=[email protected]
7-
SMTP_USERNAME=username
8-
SMTP_PASSWORD=password
9-
SMTP_HOST=smtp.mailtrap.io
10-
SMTP_PORT=2525
11-
JWT_TYPE=HS256
12-
ROLES=user
13-
DEFAULT_ROLES=user
14-
PROTECTED_ROLES=admin
15-
JWT_ROLE_CLAIM=role
16-
CUSTOM_ACCESS_TOKEN_SCRIPT=function(user,tokenPayload){var data = tokenPayload;data.extra = {'x-extra-id': user.id};return data;}
2+
DATABASE_TYPE=sqlite

server/db/models/env.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ package models
44
type Env struct {
55
Key string `json:"_key,omitempty" bson:"_key"` // for arangodb
66
ID string `gorm:"primaryKey;type:char(36)" json:"_id" bson:"_id"`
7-
EnvData []byte `gorm:"type:text" json:"env" bson:"env"`
8-
Hash string `gorm:"type:hash" json:"hash" bson:"hash"`
7+
EnvData string `gorm:"type:text" json:"env" bson:"env"`
8+
Hash string `gorm:"type:text" json:"hash" bson:"hash"`
99
UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"`
1010
CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"`
1111
}

server/env/persist_env.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,19 @@ func PersistEnv() error {
2525
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, hash)
2626
encodedHash := utils.EncryptB64(hash)
2727

28-
configData, err := json.Marshal(envstore.EnvInMemoryStoreObj.GetEnvStoreClone())
28+
encryptedConfig, err := utils.EncryptEnvData(envstore.EnvInMemoryStoreObj.GetEnvStoreClone())
2929
if err != nil {
3030
return err
3131
}
32+
// configData, err := json.Marshal()
33+
// if err != nil {
34+
// return err
35+
// }
3236

33-
encryptedConfig, err := utils.EncryptAES(configData)
34-
if err != nil {
35-
return err
36-
}
37+
// encryptedConfig, err := utils.EncryptAES(configData)
38+
// if err != nil {
39+
// return err
40+
// }
3741

3842
env = models.Env{
3943
Hash: encodedHash,
@@ -51,7 +55,12 @@ func PersistEnv() error {
5155
}
5256

5357
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, decryptedEncryptionKey)
54-
decryptedConfigs, err := utils.DecryptAES(env.EnvData)
58+
b64DecryptedConfig, err := utils.DecryptB64(env.EnvData)
59+
if err != nil {
60+
return err
61+
}
62+
63+
decryptedConfigs, err := utils.DecryptAES([]byte(b64DecryptedConfig))
5564
if err != nil {
5665
return err
5766
}

server/test/resolvers_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestResolvers(t *testing.T) {
2626
// clean the persisted config for test to use fresh config
2727
envData, err := db.Provider.GetEnv()
2828
if err == nil {
29-
envData.EnvData = []byte{}
29+
envData.EnvData = ""
3030
db.Provider.UpdateEnv(envData)
3131
}
3232
env.PersistEnv()

server/utils/crypto.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,29 @@ func DecryptAES(ciphertext []byte) ([]byte, error) {
9090
}
9191

9292
// EncryptEnvData is used to encrypt the env data
93-
func EncryptEnvData(data envstore.Store) ([]byte, error) {
93+
func EncryptEnvData(data envstore.Store) (string, error) {
9494
jsonBytes, err := json.Marshal(data)
9595
if err != nil {
96-
return []byte{}, err
96+
return "", err
9797
}
9898

9999
envStoreObj := envstore.EnvInMemoryStoreObj.GetEnvStoreClone()
100100

101101
err = json.Unmarshal(jsonBytes, &envStoreObj)
102102
if err != nil {
103-
return []byte{}, err
103+
return "", err
104104
}
105105

106106
configData, err := json.Marshal(envStoreObj)
107107
if err != nil {
108-
return []byte{}, err
108+
return "", err
109109
}
110110
encryptedConfig, err := EncryptAES(configData)
111111
if err != nil {
112-
return []byte{}, err
112+
return "", err
113113
}
114114

115-
return encryptedConfig, nil
115+
return EncryptB64(string(encryptedConfig)), nil
116116
}
117117

118118
// EncryptPassword is used for encrypting password

0 commit comments

Comments
 (0)