
* fix: * removed hasReversedValue in playground * feat: * added totp methods in db's providers * adding totp in login method * feat: * added toggle in dashboard * fixing issue with env set * feat: * integrated totp * feat: * encrypted userid * added totp_verified column in user table * started test for totp * feat: * test cases totp * test-cases: * completed test cases * tested for all dbs * fixes: * return variable to snake case * import refactoring * feat: * created seperate folder for authenticator with totp subfolder * refactored code * created new table for authenticators * added recovery code for totp * feat: * adding functions to different db providers * feat: * added authenticators method for all db * feat: * added logic for updating mfa in user_profile update * fix: * merge conflict * fix: * resolved mongodb, dynamodb and arangodb test case bug * added new condition for checking first time totp user or not * feat: * changes in all respective db with authenticator * fix: * PR suggested changes * fix(cassandra): list users * Update verify otp * fix totp login api --------- Co-authored-by: lemonScaletech <anand.panigrahi@scaletech.xyz>
88 lines
2.8 KiB
Go
88 lines
2.8 KiB
Go
package memorystore
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
|
"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
|
|
|
|
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,
|
|
constants.EnvKeyDisableMobileBasicAuthentication: false,
|
|
constants.EnvKeyDisableMagicLinkLogin: false,
|
|
constants.EnvKeyDisableEmailVerification: false,
|
|
constants.EnvKeyDisableLoginPage: false,
|
|
constants.EnvKeyDisableSignUp: false,
|
|
constants.EnvKeyDisableStrongPassword: false,
|
|
constants.EnvKeyIsEmailServiceEnabled: false,
|
|
constants.EnvKeyIsSMSServiceEnabled: false,
|
|
constants.EnvKeyEnforceMultiFactorAuthentication: false,
|
|
constants.EnvKeyDisableMultiFactorAuthentication: false,
|
|
constants.EnvKeyDisableTOTPLogin: false,
|
|
constants.EnvKeyAppCookieSecure: true,
|
|
constants.EnvKeyAdminCookieSecure: true,
|
|
constants.EnvKeyDisablePlayGround: true,
|
|
constants.EnvKeyDisableMailOTPLogin: true,
|
|
}
|
|
|
|
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 {
|
|
log.Info("Initializing Redis memory store")
|
|
Provider, err = redis.NewRedisProvider(redisURL)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// set default envs in redis
|
|
Provider.UpdateEnvStore(defaultEnvs)
|
|
|
|
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
|
|
}
|
|
// set default envs in local env
|
|
Provider.UpdateEnvStore(defaultEnvs)
|
|
return nil
|
|
}
|