handle invite link for saas tenants

This commit is contained in:
abhishek9686 2024-08-16 15:32:23 +05:30
parent e8e795ce3c
commit d4af26b289
5 changed files with 38 additions and 26 deletions

View file

@ -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 {

View file

@ -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,

View file

@ -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)
}
})
}

View file

@ -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
}
}

View file

@ -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"