This commit is contained in:
Lakhan Samani 2022-01-29 17:02:44 +05:30
parent 25c9ce03bd
commit 6331ec7b7a
5 changed files with 25 additions and 30 deletions

View File

@ -1,16 +1,2 @@
ENV=production
DATABASE_URL=data.db DATABASE_URL=data.db
DATABASE_TYPE=sqlite DATABASE_TYPE=sqlite
ADMIN_SECRET=admin
JWT_SECRET=random_string
SENDER_EMAIL=info@authorizer.dev
SMTP_USERNAME=username
SMTP_PASSWORD=password
SMTP_HOST=smtp.mailtrap.io
SMTP_PORT=2525
JWT_TYPE=HS256
ROLES=user
DEFAULT_ROLES=user
PROTECTED_ROLES=admin
JWT_ROLE_CLAIM=role
CUSTOM_ACCESS_TOKEN_SCRIPT=function(user,tokenPayload){var data = tokenPayload;data.extra = {'x-extra-id': user.id};return data;}

View File

@ -4,8 +4,8 @@ package models
type Env struct { type Env struct {
Key string `json:"_key,omitempty" bson:"_key"` // for arangodb Key string `json:"_key,omitempty" bson:"_key"` // for arangodb
ID string `gorm:"primaryKey;type:char(36)" json:"_id" bson:"_id"` ID string `gorm:"primaryKey;type:char(36)" json:"_id" bson:"_id"`
EnvData []byte `gorm:"type:text" json:"env" bson:"env"` EnvData string `gorm:"type:text" json:"env" bson:"env"`
Hash string `gorm:"type:hash" json:"hash" bson:"hash"` Hash string `gorm:"type:text" json:"hash" bson:"hash"`
UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"` UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"`
CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"` CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"`
} }

View File

@ -25,15 +25,19 @@ func PersistEnv() error {
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, hash) envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, hash)
encodedHash := utils.EncryptB64(hash) encodedHash := utils.EncryptB64(hash)
configData, err := json.Marshal(envstore.EnvInMemoryStoreObj.GetEnvStoreClone()) encryptedConfig, err := utils.EncryptEnvData(envstore.EnvInMemoryStoreObj.GetEnvStoreClone())
if err != nil { if err != nil {
return err return err
} }
// configData, err := json.Marshal()
// if err != nil {
// return err
// }
encryptedConfig, err := utils.EncryptAES(configData) // encryptedConfig, err := utils.EncryptAES(configData)
if err != nil { // if err != nil {
return err // return err
} // }
env = models.Env{ env = models.Env{
Hash: encodedHash, Hash: encodedHash,
@ -51,7 +55,12 @@ func PersistEnv() error {
} }
envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, decryptedEncryptionKey) envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEncryptionKey, decryptedEncryptionKey)
decryptedConfigs, err := utils.DecryptAES(env.EnvData) b64DecryptedConfig, err := utils.DecryptB64(env.EnvData)
if err != nil {
return err
}
decryptedConfigs, err := utils.DecryptAES([]byte(b64DecryptedConfig))
if err != nil { if err != nil {
return err return err
} }

View File

@ -26,7 +26,7 @@ func TestResolvers(t *testing.T) {
// clean the persisted config for test to use fresh config // clean the persisted config for test to use fresh config
envData, err := db.Provider.GetEnv() envData, err := db.Provider.GetEnv()
if err == nil { if err == nil {
envData.EnvData = []byte{} envData.EnvData = ""
db.Provider.UpdateEnv(envData) db.Provider.UpdateEnv(envData)
} }
env.PersistEnv() env.PersistEnv()

View File

@ -90,29 +90,29 @@ func DecryptAES(ciphertext []byte) ([]byte, error) {
} }
// EncryptEnvData is used to encrypt the env data // EncryptEnvData is used to encrypt the env data
func EncryptEnvData(data envstore.Store) ([]byte, error) { func EncryptEnvData(data envstore.Store) (string, error) {
jsonBytes, err := json.Marshal(data) jsonBytes, err := json.Marshal(data)
if err != nil { if err != nil {
return []byte{}, err return "", err
} }
envStoreObj := envstore.EnvInMemoryStoreObj.GetEnvStoreClone() envStoreObj := envstore.EnvInMemoryStoreObj.GetEnvStoreClone()
err = json.Unmarshal(jsonBytes, &envStoreObj) err = json.Unmarshal(jsonBytes, &envStoreObj)
if err != nil { if err != nil {
return []byte{}, err return "", err
} }
configData, err := json.Marshal(envStoreObj) configData, err := json.Marshal(envStoreObj)
if err != nil { if err != nil {
return []byte{}, err return "", err
} }
encryptedConfig, err := EncryptAES(configData) encryptedConfig, err := EncryptAES(configData)
if err != nil { if err != nil {
return []byte{}, err return "", err
} }
return encryptedConfig, nil return EncryptB64(string(encryptedConfig)), nil
} }
// EncryptPassword is used for encrypting password // EncryptPassword is used for encrypting password