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
|
2022-08-02 08:42:36 +00:00
|
|
|
constants.EnvKeyDisableBasicAuthentication: false,
|
2022-12-21 17:44:24 +00:00
|
|
|
constants.EnvKeyDisableMobileBasicAuthentication: false,
|
2022-08-02 08:42:36 +00:00
|
|
|
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,
|
2022-08-02 08:42:36 +00:00
|
|
|
constants.EnvKeyEnforceMultiFactorAuthentication: false,
|
2022-08-03 17:50:23 +00:00
|
|
|
constants.EnvKeyDisableMultiFactorAuthentication: false,
|
2022-09-26 18:30:40 +00:00
|
|
|
constants.EnvKeyAppCookieSecure: true,
|
|
|
|
constants.EnvKeyAdminCookieSecure: true,
|
2023-08-28 14:21:42 +00:00
|
|
|
constants.EnvKeyDisablePlayGround: 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
|
2022-10-21 10:25:54 +00:00
|
|
|
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
|
|
|
|
}
|