authorizer/server/memorystore/memory_store.go

88 lines
2.8 KiB
Go
Raw Normal View History

2022-05-27 17:50:38 +00:00
package memorystore
import (
2022-05-31 07:41:54 +00:00
"encoding/json"
2022-05-27 17:50:38 +00:00
log "github.com/sirupsen/logrus"
2022-05-29 11:52:46 +00:00
"github.com/authorizerdev/authorizer/server/constants"
2022-05-27 17:50:38 +00:00
"github.com/authorizerdev/authorizer/server/memorystore/providers"
"github.com/authorizerdev/authorizer/server/memorystore/providers/inmemory"
"github.com/authorizerdev/authorizer/server/memorystore/providers/redis"
)
// Provider returns the current database provider
var Provider providers.Provider
// InitMemStore initializes the memory store
func InitMemStore() error {
var err error
2022-05-29 11:52:46 +00:00
defaultEnvs := map[string]interface{}{
// string envs
constants.EnvKeyJwtRoleClaim: "role",
constants.EnvKeyOrganizationName: "Authorizer",
constants.EnvKeyOrganizationLogo: "https://www.authorizer.dev/images/logo.png",
// boolean envs
constants.EnvKeyDisableBasicAuthentication: false,
2022-12-21 17:44:24 +00:00
constants.EnvKeyDisableMobileBasicAuthentication: false,
constants.EnvKeyDisableMagicLinkLogin: false,
constants.EnvKeyDisableEmailVerification: false,
constants.EnvKeyDisableLoginPage: false,
constants.EnvKeyDisableSignUp: false,
constants.EnvKeyDisableStrongPassword: false,
constants.EnvKeyIsEmailServiceEnabled: false,
2023-07-23 04:33:37 +00:00
constants.EnvKeyIsSMSServiceEnabled: false,
constants.EnvKeyEnforceMultiFactorAuthentication: false,
2022-08-03 17:50:23 +00:00
constants.EnvKeyDisableMultiFactorAuthentication: false,
constants.EnvKeyDisableTOTPLogin: false,
constants.EnvKeyAppCookieSecure: true,
constants.EnvKeyAdminCookieSecure: true,
constants.EnvKeyDisablePlayGround: true,
constants.EnvKeyDisableMailOTPLogin: true,
2022-05-29 11:52:46 +00:00
}
2022-05-31 07:41:54 +00:00
requiredEnvs := RequiredEnvStoreObj.GetRequiredEnv()
requiredEnvMap := make(map[string]interface{})
requiredEnvBytes, err := json.Marshal(requiredEnvs)
if err != nil {
log.Debug("Error while marshalling required envs: ", err)
return err
}
err = json.Unmarshal(requiredEnvBytes, &requiredEnvMap)
if err != nil {
log.Debug("Error while unmarshalling required envs: ", err)
return err
}
// merge default envs with required envs
for key, val := range requiredEnvMap {
defaultEnvs[key] = val
}
redisURL := requiredEnvs.RedisURL
if redisURL != "" && !requiredEnvs.DisableRedisForEnv {
2022-05-27 17:50:38 +00:00
log.Info("Initializing Redis memory store")
Provider, err = redis.NewRedisProvider(redisURL)
if err != nil {
return err
}
2022-05-29 11:52:46 +00:00
// set default envs in redis
Provider.UpdateEnvStore(defaultEnvs)
2022-05-27 17:50:38 +00:00
return nil
}
log.Info("using in memory store to save sessions")
// if redis url is not set use in memory store
Provider, err = inmemory.NewInMemoryProvider()
if err != nil {
return err
}
2022-05-29 11:52:46 +00:00
// set default envs in local env
Provider.UpdateEnvStore(defaultEnvs)
2022-05-27 17:50:38 +00:00
return nil
}