From d06348fb7517b68559eb73ebcbc566f5f4caa622 Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 12 Jan 2023 13:24:48 -0700 Subject: [PATCH 1/5] removed extra backslashes trailing the end of the block explorer URLs in data_seeding --- scripts/data_seeding.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/data_seeding.go b/scripts/data_seeding.go index a0f236f8..805bfdf5 100644 --- a/scripts/data_seeding.go +++ b/scripts/data_seeding.go @@ -43,7 +43,7 @@ func DataSeeding() { fmt.Printf("%+v", err) return } - networkMumbai, err := repos.Network.Create(model.Network{Name: "Mumbai Testnet", NetworkID: 80001, ChainID: 80001, GasOracle: "poly", RPCUrl: "https://matic-mumbai.chainstacklabs.com", ExplorerUrl: "https://mumbai.polygonscan.com/"}) + networkMumbai, err := repos.Network.Create(model.Network{Name: "Mumbai Testnet", NetworkID: 80001, ChainID: 80001, GasOracle: "poly", RPCUrl: "https://matic-mumbai.chainstacklabs.com", ExplorerUrl: "https://mumbai.polygonscan.com"}) if err != nil { panic(err) } @@ -51,7 +51,7 @@ func DataSeeding() { if err != nil { panic(err) } - networkEthereum, err := repos.Network.Create(model.Network{Name: "Ethereum Mainnet", NetworkID: 1, ChainID: 1, GasOracle: "eth", RPCUrl: "https://rpc.ankr.com/eth", ExplorerUrl: "https://etherscan.io/"}) + networkEthereum, err := repos.Network.Create(model.Network{Name: "Ethereum Mainnet", NetworkID: 1, ChainID: 1, GasOracle: "eth", RPCUrl: "https://rpc.ankr.com/eth", ExplorerUrl: "https://etherscan.io"}) if err != nil { panic(err) } @@ -63,11 +63,11 @@ func DataSeeding() { if err != nil { panic(err) } - networkNitroGoerli, err := repos.Network.Create(model.Network{Name: "Nitro Goerli Rollup Testnet", NetworkID: 421613, ChainID: 421613, GasOracle: "arb", RPCUrl: "https://goerli-rollup.arbitrum.io/rpc", ExplorerUrl: "https://goerli.arbiscan.io/"}) + networkNitroGoerli, err := repos.Network.Create(model.Network{Name: "Nitro Goerli Rollup Testnet", NetworkID: 421613, ChainID: 421613, GasOracle: "arb", RPCUrl: "https://goerli-rollup.arbitrum.io/rpc", ExplorerUrl: "https://goerli.arbiscan.io"}) if err != nil { panic(err) } - networkArbitrumNova, err := repos.Network.Create(model.Network{Name: "Arbitrum Nova Mainnet", NetworkID: 42170, ChainID: 42170, GasOracle: "arb", RPCUrl: "https://nova.arbitrum.io/rpc", ExplorerUrl: "https://nova-explorer.arbitrum.io/"}) + networkArbitrumNova, err := repos.Network.Create(model.Network{Name: "Arbitrum Nova Mainnet", NetworkID: 42170, ChainID: 42170, GasOracle: "arb", RPCUrl: "https://nova.arbitrum.io/rpc", ExplorerUrl: "https://nova-explorer.arbitrum.io"}) if err != nil { panic(err) } @@ -230,7 +230,7 @@ func MockSeeding() { fmt.Printf("%+v", err) return } - networkMumbai, err := repos.Network.Create(model.Network{Name: "Mumbai Testnet", NetworkID: 80001, ChainID: 80001, GasOracle: "poly", RPCUrl: "https://matic-mumbai.chainstacklabs.com", ExplorerUrl: "https://mumbai.polygonscan.com/"}) + networkMumbai, err := repos.Network.Create(model.Network{Name: "Mumbai Testnet", NetworkID: 80001, ChainID: 80001, GasOracle: "poly", RPCUrl: "https://matic-mumbai.chainstacklabs.com", ExplorerUrl: "https://mumbai.polygonscan.com"}) if err != nil { panic(err) } @@ -238,7 +238,7 @@ func MockSeeding() { if err != nil { panic(err) } - networkEthereum, err := repos.Network.Create(model.Network{Name: "Ethereum Mainnet", NetworkID: 1, ChainID: 1, GasOracle: "eth", RPCUrl: "https://rpc.ankr.com/eth", ExplorerUrl: "https://etherscan.io/"}) + networkEthereum, err := repos.Network.Create(model.Network{Name: "Ethereum Mainnet", NetworkID: 1, ChainID: 1, GasOracle: "eth", RPCUrl: "https://rpc.ankr.com/eth", ExplorerUrl: "https://etherscan.io"}) if err != nil { panic(err) } @@ -250,11 +250,11 @@ func MockSeeding() { if err != nil { panic(err) } - networkNitroGoerli, err := repos.Network.Create(model.Network{Name: "Nitro Goerli Rollup Testnet", NetworkID: 421613, ChainID: 421613, GasOracle: "arb", RPCUrl: "https://goerli-rollup.arbitrum.io/rpc", ExplorerUrl: "https://goerli.arbiscan.io/"}) + networkNitroGoerli, err := repos.Network.Create(model.Network{Name: "Nitro Goerli Rollup Testnet", NetworkID: 421613, ChainID: 421613, GasOracle: "arb", RPCUrl: "https://goerli-rollup.arbitrum.io/rpc", ExplorerUrl: "https://goerli.arbiscan.io"}) if err != nil { panic(err) } - networkArbitrumNova, err := repos.Network.Create(model.Network{Name: "Arbitrum Nova Mainnet", NetworkID: 42170, ChainID: 42170, GasOracle: "arb", RPCUrl: "https://nova.arbitrum.io/rpc", ExplorerUrl: "https://nova-explorer.arbitrum.io/"}) + networkArbitrumNova, err := repos.Network.Create(model.Network{Name: "Arbitrum Nova Mainnet", NetworkID: 42170, ChainID: 42170, GasOracle: "arb", RPCUrl: "https://nova.arbitrum.io/rpc", ExplorerUrl: "https://nova-explorer.arbitrum.io"}) if err != nil { panic(err) } From 6eceb52fd43c49523748999e26a8f3092d535b4b Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 12 Jan 2023 15:55:40 -0700 Subject: [PATCH 2/5] Use checkout production environment if CHECKOUT_ENV is set to 'production' --- .env.example | 1 + pkg/service/checkout.go | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 0e16e1e6..b6905fe4 100644 --- a/.env.example +++ b/.env.example @@ -12,6 +12,7 @@ AWS_SECRET_ACCESS_KEY= AWS_KMS_KEY_ID= CHECKOUT_PUBLIC_KEY= CHECKOUT_SECRET_KEY= +CHECKOUT_ENV=sandbox EVM_PRIVATE_KEY= DB_NAME=string_db DB_USERNAME=string_db diff --git a/pkg/service/checkout.go b/pkg/service/checkout.go index fd7db0c6..1052fd76 100644 --- a/pkg/service/checkout.go +++ b/pkg/service/checkout.go @@ -16,8 +16,14 @@ import ( func getConfig() (*checkout.Config, error) { var sk = os.Getenv("CHECKOUT_SECRET_KEY") var pk = os.Getenv("CHECKOUT_PUBLIC_KEY") + var env = os.Getenv("CHECKOUT_ENV") + checkoutEnv := checkout.Sandbox - var config, err = checkout.SdkConfig(&sk, &pk, checkout.Sandbox) + if env == "production" { + checkoutEnv = checkout.Production + } + + var config, err = checkout.SdkConfig(&sk, &pk, checkoutEnv) if err != nil { return nil, common.StringError(err) } From cc821abe8e8985d37f2f928e26b61ca93f9b13fa Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 12 Jan 2023 16:22:05 -0700 Subject: [PATCH 3/5] shortened 'production' to 'prod' --- pkg/service/checkout.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/service/checkout.go b/pkg/service/checkout.go index 1052fd76..a1aa7e38 100644 --- a/pkg/service/checkout.go +++ b/pkg/service/checkout.go @@ -19,7 +19,7 @@ func getConfig() (*checkout.Config, error) { var env = os.Getenv("CHECKOUT_ENV") checkoutEnv := checkout.Sandbox - if env == "production" { + if env == "prod" { checkoutEnv = checkout.Production } From a30aff7dc5c551f109976c3b8fc4b2e6335eaf95 Mon Sep 17 00:00:00 2001 From: Wilfredo Alcala Date: Thu, 12 Jan 2023 19:22:51 -0400 Subject: [PATCH 4/5] modify cookies SameSite property (#88) * modify cookies SameSite property * fix --- api/handler/common.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/api/handler/common.go b/api/handler/common.go index c1699b63..a3a42d84 100644 --- a/api/handler/common.go +++ b/api/handler/common.go @@ -56,7 +56,7 @@ func SetJWTCookie(c echo.Context, jwt service.JWT) error { cookie.Value = jwt.Token // cookie.HttpOnly = true // due the short expiration time it is not needed to be http only cookie.Expires = jwt.ExpAt // we want the cookie to expire at the same time as the token - cookie.SameSite = http.SameSiteNoneMode + cookie.SameSite = getCookieSameSiteMode() cookie.Path = "/" // Send cookie in every sub path request cookie.Secure = !IsLocalEnv() // in production allow https only c.SetCookie(cookie) @@ -70,7 +70,7 @@ func SetRefreshTokenCookie(c echo.Context, refresh service.RefreshTokenResponse) cookie.Value = refresh.Token cookie.HttpOnly = true cookie.Expires = refresh.ExpAt // we want the cookie to expire at the same time as the token - cookie.SameSite = http.SameSiteNoneMode + cookie.SameSite = getCookieSameSiteMode() cookie.Path = "/login/" // Send cookie only in /login path request cookie.Secure = !IsLocalEnv() // in production allow https only c.SetCookie(cookie) @@ -98,7 +98,7 @@ func DeleteAuthCookies(c echo.Context) error { cookie.Name = "StringJWT" cookie.Value = "" cookie.Expires = time.Now() - cookie.SameSite = http.SameSiteLaxMode + cookie.SameSite = getCookieSameSiteMode() cookie.Path = "/" // Send cookie in every sub path request cookie.Secure = !IsLocalEnv() c.SetCookie(cookie) @@ -107,7 +107,7 @@ func DeleteAuthCookies(c echo.Context) error { cookie.Name = "refresh_token" cookie.Value = "" cookie.Expires = time.Now() - cookie.SameSite = http.SameSiteNoneMode + cookie.SameSite = getCookieSameSiteMode() cookie.Path = "/login/" // Send cookie only in refresh path request cookie.Secure = !IsLocalEnv() c.SetCookie(cookie) @@ -124,6 +124,14 @@ func validAddress(addr string) bool { return re.MatchString(addr) } +func getCookieSameSiteMode() http.SameSite { + sameSiteMode := http.SameSiteNoneMode // allow cors + if IsLocalEnv() { + sameSiteMode = http.SameSiteLaxMode // because SameSiteNoneMode is not allowed in localhost we use lax mode + } + return sameSiteMode +} + func SanitizeChecksums(addrs ...*string) { for _, addr := range addrs { if !validAddress(*addr) { From 0c027d614e2079decdc12ebde08ac3902a7e6917 Mon Sep 17 00:00:00 2001 From: Marlon Monroy Date: Thu, 12 Jan 2023 15:28:00 -0800 Subject: [PATCH 5/5] checkout env --- infra/dev/variables.tf | 4 ++++ infra/prod/variables.tf | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/infra/dev/variables.tf b/infra/dev/variables.tf index 54364058..e525775a 100644 --- a/infra/dev/variables.tf +++ b/infra/dev/variables.tf @@ -176,6 +176,10 @@ locals { name = "UNIT21_ORG_NAME" value = "string" }, + { + name = "CHECKOUT_ENV" + value = local.env + }, { name = "DD_LOGS_ENABLED" value = "true" diff --git a/infra/prod/variables.tf b/infra/prod/variables.tf index 347278fe..1fef5cc0 100644 --- a/infra/prod/variables.tf +++ b/infra/prod/variables.tf @@ -169,6 +169,10 @@ locals { { name = "UNIT21_ENV" value = "api.prod2" + }, + { + name = "CHECKOUT_ENV" + value = local.env }, { name = "UNIT21_ORG_NAME"