From d4af26b289e0c93059099122a25e94ca2bfdd0aa Mon Sep 17 00:00:00 2001 From: abhishek9686 Date: Fri, 16 Aug 2024 15:32:23 +0530 Subject: [PATCH] handle invite link for saas tenants --- pro/controllers/users.go | 8 ++++++++ pro/license.go | 14 ++------------ pro/license_test.go | 10 ++++++---- pro/logic/security.go | 22 ++++++++++++++++++++++ pro/types.go | 10 ---------- 5 files changed, 38 insertions(+), 26 deletions(-) diff --git a/pro/controllers/users.go b/pro/controllers/users.go index d061aa72..fd7e9174 100644 --- a/pro/controllers/users.go +++ b/pro/controllers/users.go @@ -217,6 +217,14 @@ func inviteUsers(w http.ResponseWriter, r *http.Request) { slog.Error("failed to parse to invite url", "error", err) return } + if servercfg.DeployedByOperator() { + u, err = url.Parse(fmt.Sprintf("%s/invite?tenant_id=%s&email=%s&invite_code=%s", + proLogic.GetAccountsHost(), url.QueryEscape(servercfg.GetNetmakerTenantID()), url.QueryEscape(invite.Email), url.QueryEscape(invite.InviteCode))) + if err != nil { + slog.Error("failed to parse to invite url", "error", err) + return + } + } invite.InviteURL = u.String() err = logic.InsertUserInvite(invite) if err != nil { diff --git a/pro/license.go b/pro/license.go index 633728d1..50825d8a 100644 --- a/pro/license.go +++ b/pro/license.go @@ -20,6 +20,7 @@ import ( "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/netclient/ncutils" + proLogic "github.com/gravitl/netmaker/pro/logic" "github.com/gravitl/netmaker/servercfg" ) @@ -206,7 +207,7 @@ func validateLicenseKey(encryptedData []byte, publicKey *[32]byte) ([]byte, bool req, err := http.NewRequest( http.MethodPost, - getAccountsHost()+"/api/v1/license/validate", + proLogic.GetAccountsHost()+"/api/v1/license/validate", bytes.NewReader(requestBody), ) if err != nil { @@ -255,17 +256,6 @@ func validateLicenseKey(encryptedData []byte, publicKey *[32]byte) ([]byte, bool return nil, false, err } -func getAccountsHost() string { - switch servercfg.GetEnvironment() { - case "dev": - return accountsHostDevelopment - case "staging": - return accountsHostStaging - default: - return accountsHostProduction - } -} - func cacheResponse(response []byte) error { lrc := licenseResponseCache{ Body: response, diff --git a/pro/license_test.go b/pro/license_test.go index 12d15d3f..549bac0c 100644 --- a/pro/license_test.go +++ b/pro/license_test.go @@ -4,11 +4,13 @@ package pro import ( - "github.com/gravitl/netmaker/config" "testing" + + "github.com/gravitl/netmaker/config" + proLogic "github.com/gravitl/netmaker/pro/logic" ) -func Test_getAccountsHost(t *testing.T) { +func Test_GetAccountsHost(t *testing.T) { tests := []struct { name string envK string @@ -69,8 +71,8 @@ func Test_getAccountsHost(t *testing.T) { if tt.envK != "" { t.Setenv(tt.envK, tt.envV) } - if got := getAccountsHost(); got != tt.want { - t.Errorf("getAccountsHost() = %v, want %v", got, tt.want) + if got := proLogic.GetAccountsHost(); got != tt.want { + t.Errorf("GetAccountsHost() = %v, want %v", got, tt.want) } }) } diff --git a/pro/logic/security.go b/pro/logic/security.go index 3225c269..26d3d2ff 100644 --- a/pro/logic/security.go +++ b/pro/logic/security.go @@ -8,6 +8,17 @@ import ( "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" + "github.com/gravitl/netmaker/servercfg" +) + +// constants for accounts api hosts +const ( + // accountsHostDevelopment is the accounts api host for development environment + accountsHostDevelopment = "https://api.dev.accounts.netmaker.io" + // accountsHostStaging is the accounts api host for staging environment + accountsHostStaging = "https://api.staging.accounts.netmaker.io" + // accountsHostProduction is the accounts api host for production environment + accountsHostProduction = "https://api.accounts.netmaker.io" ) func NetworkPermissionsCheck(username string, r *http.Request) error { @@ -193,3 +204,14 @@ func checkPermissionScopeWithReqMethod(scope models.RsrcPermissionScope, reqmeth } return errors.New("operation not permitted") } + +func GetAccountsHost() string { + switch servercfg.GetEnvironment() { + case "dev": + return accountsHostDevelopment + case "staging": + return accountsHostStaging + default: + return accountsHostProduction + } +} diff --git a/pro/types.go b/pro/types.go index b4f1fe15..ae31cafe 100644 --- a/pro/types.go +++ b/pro/types.go @@ -7,16 +7,6 @@ import ( "fmt" ) -// constants for accounts api hosts -const ( - // accountsHostDevelopment is the accounts api host for development environment - accountsHostDevelopment = "https://api.dev.accounts.netmaker.io" - // accountsHostStaging is the accounts api host for staging environment - accountsHostStaging = "https://api.staging.accounts.netmaker.io" - // accountsHostProduction is the accounts api host for production environment - accountsHostProduction = "https://api.accounts.netmaker.io" -) - const ( license_cache_key = "license_response_cache" license_validation_err_msg = "invalid license"