supertokens

package
v0.18.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2024 License: Apache-2.0 Imports: 22 Imported by: 84

Documentation

Index

Constants

View Source
const (
	HeaderRID = "rid"
	HeaderFDI = "fdi-version"
)
View Source
const DashboardVersion = "0.7"
View Source
const DefaultTenantId string = "public"
View Source
const RateLimitStatusCode = 429
View Source
const VERSION = "0.18.0"

VERSION current version of the lib

Variables

View Source
var (
	Logger       = log.New(os.Stdout, supertokens_namespace, 0)
	DebugEnabled = false
)
View Source
var (
	QuerierHosts  []QuerierHost = nil
	QuerierAPIKey *string
)
View Source
var GetTenantIdFuncFromUsingMultitenancyRecipe func(tenantIdFromFrontend string, userContext UserContext) (string, error)

This function is required to be here because calling multitenancy recipe from this module causes cyclic dependency this function is initialized by the init function in multitenancy recipe

View Source
var IsTestFlag = false

this will be set to true if this is used in a test app environment

Functions

func AddPostInitCallback added in v0.9.0

func AddPostInitCallback(cb func() error)

func ConvertGeneralErrorToJsonResponse added in v0.7.0

func ConvertGeneralErrorToJsonResponse(resp GeneralErrorResponse) map[string]interface{}

func DeleteUser added in v0.3.3

func DeleteUser(userId string) error

func DoesSliceContainString added in v0.12.0

func DoesSliceContainString(a string, list []string) bool

func ErrorHandler

func ErrorHandler(err error, req *http.Request, res http.ResponseWriter, userContext ...UserContext) error

func ErrorIfNoResponse added in v0.7.1

func ErrorIfNoResponse(res http.ResponseWriter) error

func GetAllCORSHeaders

func GetAllCORSHeaders() []string

func GetAllCoreUrlsForPath added in v0.12.0

func GetAllCoreUrlsForPath(path string) []string

func GetInstanceOrThrowError added in v0.2.0

func GetInstanceOrThrowError() (*superTokens, error)

func GetRequestFromUserContext added in v0.12.4

func GetRequestFromUserContext(userContext UserContext) *http.Request

func GetTopLevelDomainForSameSiteResolution added in v0.10.0

func GetTopLevelDomainForSameSiteResolution(URL string) (string, error)

func GetUserCount

func GetUserCount(includeRecipeIds *[]string, tenantId *string) (float64, error)

func HumaniseMilliseconds added in v0.6.8

func HumaniseMilliseconds(m uint64) string

func Init

func Init(config TypeInput) error

func IsAnIPAddress

func IsAnIPAddress(ipaddress string) (bool, error)

func IsRunningInTestMode

func IsRunningInTestMode() bool

func LogDebugMessage added in v0.5.5

func LogDebugMessage(message string)

func MapToStruct added in v0.13.0

func MapToStruct(val map[string]interface{}, v interface{}) error

func MaxVersion added in v0.10.5

func MaxVersion(version1 string, version2 string) string

MaxVersion returns max of v1 and v2

func Middleware

func Middleware(theirHandler http.Handler) http.Handler

func ReadFromRequest added in v0.6.5

func ReadFromRequest(r *http.Request) ([]byte, error)

func ResetForTest

func ResetForTest()

func ResetQuerierForTest

func ResetQuerierForTest()

func Send200Response

func Send200Response(res http.ResponseWriter, responseJson interface{}) error

func SendHTMLResponse added in v0.9.1

func SendHTMLResponse(res http.ResponseWriter, statusCode int, htmlString string) error

func SendNon200Response

func SendNon200Response(res http.ResponseWriter, statusCode int, body map[string]interface{}) error

func SendNon200ResponseWithMessage added in v0.9.0

func SendNon200ResponseWithMessage(res http.ResponseWriter, message string, statusCode int) error

func SendUnauthorisedAccess added in v0.9.1

func SendUnauthorisedAccess(res http.ResponseWriter) error

func SetQuerierApiVersionForTests added in v0.8.4

func SetQuerierApiVersionForTests(version string)

func StructToMap added in v0.13.0

func StructToMap(val interface{}) (map[string]interface{}, error)

Types

type APIHandled

type APIHandled struct {
	PathWithoutAPIBasePath NormalisedURLPath
	Method                 string
	ID                     string
	Disabled               bool
}

type AppInfo

type AppInfo struct {
	AppName         string
	WebsiteDomain   string
	Origin          string
	GetOrigin       func(request *http.Request, userContext UserContext) (string, error)
	APIDomain       string
	WebsiteBasePath *string
	APIBasePath     *string
	APIGatewayPath  *string
}

type BadInputError

type BadInputError struct {
	Msg string
}

BadInputError used for non specific exceptions

func (BadInputError) Error

func (err BadInputError) Error() string

type ConnectionInfo

type ConnectionInfo struct {
	ConnectionURI      string
	APIKey             string
	NetworkInterceptor func(*http.Request, UserContext) *http.Request
}

type CreateUserIdMappingResult added in v0.8.3

type CreateUserIdMappingResult struct {
	OK                              *struct{}
	UnknownSupertokensUserIdError   *struct{}
	UserIdMappingAlreadyExistsError *struct {
		DoesSuperTokensUserIdExist bool
		DoesExternalUserIdExist    bool
	}
}

func CreateUserIdMapping added in v0.8.3

func CreateUserIdMapping(supertokensUserId string, externalUserId string, externalUserIdInfo *string, force *bool) (CreateUserIdMappingResult, error)

type DeleteUserIdMappingResult added in v0.8.3

type DeleteUserIdMappingResult struct {
	OK *struct {
		DidMappingExist bool
	}
}

func DeleteUserIdMapping added in v0.8.3

func DeleteUserIdMapping(userId string, userIdType *UserIdType, force *bool) (DeleteUserIdMappingResult, error)

type DoneWriter added in v0.2.2

type DoneWriter interface {
	http.ResponseWriter
	IsDone() bool
}

func MakeDoneWriter added in v0.3.5

func MakeDoneWriter(w http.ResponseWriter) DoneWriter

WrapWriter wraps an http.ResponseWriter, returning a proxy that allows you to hook into various parts of the response process.

type GeneralErrorResponse added in v0.7.0

type GeneralErrorResponse struct {
	Message string
}

type GetUserIdMappingResult added in v0.8.3

type GetUserIdMappingResult struct {
	OK *struct {
		SupertokensUserId  string
		ExternalUserId     string
		ExternalUserIdInfo *string
	}
	UnknownMappingError *struct{}
}

func GetUserIdMapping added in v0.8.3

func GetUserIdMapping(userId string, userIdType *UserIdType) (GetUserIdMappingResult, error)

type NormalisedAppinfo

type NormalisedAppinfo struct {
	AppName                  string
	GetOrigin                func(request *http.Request, userContext UserContext) (NormalisedURLDomain, error)
	APIDomain                NormalisedURLDomain
	TopLevelAPIDomain        string
	GetTopLevelWebsiteDomain func(request *http.Request, userContext UserContext) (string, error)
	APIBasePath              NormalisedURLPath
	APIGatewayPath           NormalisedURLPath
	WebsiteBasePath          NormalisedURLPath
}

func NormaliseInputAppInfoOrThrowError

func NormaliseInputAppInfoOrThrowError(appInfo AppInfo) (NormalisedAppinfo, error)

type NormalisedURLDomain

type NormalisedURLDomain struct {
	// contains filtered or unexported fields
}

func NewNormalisedURLDomain

func NewNormalisedURLDomain(url string) (NormalisedURLDomain, error)

func (NormalisedURLDomain) GetAsStringDangerous

func (n NormalisedURLDomain) GetAsStringDangerous() string

type NormalisedURLPath

type NormalisedURLPath struct {
	// contains filtered or unexported fields
}

func NewNormalisedURLPath

func NewNormalisedURLPath(url string) (NormalisedURLPath, error)

func (NormalisedURLPath) AppendPath

func (NormalisedURLPath) Equals

func (n NormalisedURLPath) Equals(other NormalisedURLPath) bool

func (NormalisedURLPath) GetAsStringDangerous

func (n NormalisedURLPath) GetAsStringDangerous() string

func (NormalisedURLPath) IsARecipePath

func (n NormalisedURLPath) IsARecipePath() bool

func (NormalisedURLPath) StartsWith

func (n NormalisedURLPath) StartsWith(other NormalisedURLPath) bool

type Querier

type Querier struct {
	RIDToCore string
}

func GetNewQuerierInstanceOrThrowError

func GetNewQuerierInstanceOrThrowError(rIDToCore string) (*Querier, error)

func (*Querier) GetQuerierAPIVersion added in v0.5.2

func (q *Querier) GetQuerierAPIVersion() (string, error)

func (*Querier) SendDeleteRequest

func (q *Querier) SendDeleteRequest(path string, data map[string]interface{}, params map[string]string, userContext UserContext) (map[string]interface{}, error)

func (*Querier) SendGetRequest

func (q *Querier) SendGetRequest(path string, params map[string]string, userContext UserContext) (map[string]interface{}, error)

func (*Querier) SendGetRequestWithResponseHeaders added in v0.15.0

func (q *Querier) SendGetRequestWithResponseHeaders(path string, params map[string]string, userContext UserContext) (map[string]interface{}, http.Header, error)

func (*Querier) SendPostRequest

func (q *Querier) SendPostRequest(path string, data map[string]interface{}, userContext UserContext) (map[string]interface{}, error)

func (*Querier) SendPutRequest

func (q *Querier) SendPutRequest(path string, data map[string]interface{}, userContext UserContext) (map[string]interface{}, error)

func (*Querier) SetApiVersionForTests added in v0.12.0

func (q *Querier) SetApiVersionForTests(apiVersion string)

type QuerierHost added in v0.4.2

type QuerierHost struct {
	Domain   NormalisedURLDomain
	BasePath NormalisedURLPath
}

type Recipe

type Recipe func(appInfo NormalisedAppinfo, onSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)) (*RecipeModule, error)
var DefaultMultitenancyRecipe Recipe

type RecipeModule

type RecipeModule struct {
	HandleAPIRequest              func(ID string, tenantId string, req *http.Request, res http.ResponseWriter, theirHandler http.HandlerFunc, path NormalisedURLPath, method string, userContext UserContext) error
	GetAllCORSHeaders             func() []string
	GetAPIsHandled                func() ([]APIHandled, error)
	ReturnAPIIdIfCanHandleRequest func(path NormalisedURLPath, method string, userContext UserContext) (*string, string, error)
	HandleError                   func(err error, req *http.Request, res http.ResponseWriter, userContext UserContext) (bool, error)
	OnSuperTokensAPIError         func(err error, req *http.Request, res http.ResponseWriter)
	// contains filtered or unexported fields
}

func MakeRecipeModule

func MakeRecipeModule(
	recipeId string,
	appInfo NormalisedAppinfo,
	handleAPIRequest func(id string, tenantId string, req *http.Request, res http.ResponseWriter, theirHandler http.HandlerFunc, path NormalisedURLPath, method string, userContext UserContext) error,
	getAllCORSHeaders func() []string,
	getAPIsHandled func() ([]APIHandled, error),
	returnAPIIdIfCanHandleRequest func(path NormalisedURLPath, method string, userContext UserContext) (*string, string, error),
	handleError func(err error, req *http.Request, res http.ResponseWriter, userContext UserContext) (bool, error),
	onSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)) RecipeModule

func (RecipeModule) GetAppInfo

func (r RecipeModule) GetAppInfo() NormalisedAppinfo

func (RecipeModule) GetRecipeID

func (r RecipeModule) GetRecipeID() string

type TypeInput

type TypeInput struct {
	Supertokens           *ConnectionInfo
	AppInfo               AppInfo
	RecipeList            []Recipe
	Telemetry             *bool
	Debug                 bool
	OnSuperTokensAPIError func(err error, req *http.Request, res http.ResponseWriter)
}

type UpdateOrDeleteUserIdMappingInfoResult added in v0.8.3

type UpdateOrDeleteUserIdMappingInfoResult struct {
	OK                  *struct{}
	UnknownMappingError *struct{}
}

func UpdateOrDeleteUserIdMappingInfo added in v0.8.3

func UpdateOrDeleteUserIdMappingInfo(userId string, userIdType *UserIdType, externalUserIdInfo *string) (UpdateOrDeleteUserIdMappingInfoResult, error)

type UserContext added in v0.4.0

type UserContext = *map[string]interface{}

func MakeDefaultUserContextFromAPI added in v0.8.0

func MakeDefaultUserContextFromAPI(r *http.Request) UserContext

func SetRequestInUserContextIfNotDefined added in v0.12.0

func SetRequestInUserContextIfNotDefined(userContext *map[string]interface{}, r *http.Request) UserContext

type UserIdType added in v0.8.3

type UserIdType string
const (
	UserIdTypeAny         UserIdType = "ANY"
	UserIdTypeSupertokens UserIdType = "SUPERTOKENS"
	UserIdTypeExternal    UserIdType = "EXTERNAL"
)

type UserPaginationResult

type UserPaginationResult struct {
	Users []struct {
		RecipeId string                 `json:"recipeId"`
		User     map[string]interface{} `json:"user"`
	}
	NextPaginationToken *string
}

func GetUsersNewestFirst

func GetUsersNewestFirst(tenantId string, paginationToken *string, limit *int, includeRecipeIds *[]string, query map[string]string) (UserPaginationResult, error)

func GetUsersOldestFirst

func GetUsersOldestFirst(tenantId string, paginationToken *string, limit *int, includeRecipeIds *[]string, query map[string]string) (UserPaginationResult, error)

func GetUsersWithSearchParams added in v0.10.5

func GetUsersWithSearchParams(tenantId string, timeJoinedOrder string, paginationToken *string, limit *int, includeRecipeIds *[]string, searchParams map[string]string) (UserPaginationResult, error)

TODO: Add tests

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL