Resolves #110
This commit is contained in:
parent
25c9ce03bd
commit
6331ec7b7a
14
.env.sample
14
.env.sample
|
@ -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;}
|
|
|
@ -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"`
|
||||||
}
|
}
|
||||||
|
|
21
server/env/persist_env.go
vendored
21
server/env/persist_env.go
vendored
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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()
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user