diff --git a/CHANGELOG.md b/CHANGELOG.md index 93e4a016..30a26688 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [unreleased] +## [0.18.0] - TODO + +### Added +- Account linking feature + +### Breaking changes +- The SDK now supports CDI 4.0 and removed support for older CDIs. +- `supertokens.DeleteUser` function now takes an extra boolean called `removeAllLinkedAccounts`. You can pass in `true` here for most cases. +- Added `supertokens.GetUser` function which can be used instead of recipe level getUser functions. +- Output type of `supertokens.GetUsersNewestFirst` and `supertokens.GetUsersOldestFirst` now return `supertokens.User` object instead of a generic string to interface{} map. +- Third party sign in up recipe function now also marks email as verified directly via a core call instead of relying on the email verification recipe. + ## [0.17.3] - 2023-12-12 - CI/CD changes diff --git a/recipe/dashboard/api/userdetails/userDelete.go b/recipe/dashboard/api/userdetails/userDelete.go index f51ac744..c945b024 100644 --- a/recipe/dashboard/api/userdetails/userDelete.go +++ b/recipe/dashboard/api/userdetails/userDelete.go @@ -34,7 +34,8 @@ func UserDelete(apiInterface dashboardmodels.APIInterface, tenantId string, opti } } - deleteError := supertokens.DeleteUser(userId) + // TODO: pass in removeAllLinkedAccounts from the input to the API. + deleteError := supertokens.DeleteUser(userId, true) if deleteError != nil { return userDeleteResponse{}, deleteError diff --git a/supertokens/accountlinkingRecipeImplementation.go b/supertokens/accountlinkingRecipeImplementation.go index 494c084a..c2596590 100644 --- a/supertokens/accountlinkingRecipeImplementation.go +++ b/supertokens/accountlinkingRecipeImplementation.go @@ -337,6 +337,15 @@ func makeRecipeImplementation(querier Querier, config AccountLinkingTypeNormalis }, nil } + deleteUser := func(userId string, removeAllLinkedAccounts bool, userContext UserContext) error { + requestBody := map[string]interface{}{ + "userId": userId, + "removeAllLinkedAccounts": removeAllLinkedAccounts, + } + _, err := querier.SendPostRequest("/user/remove", requestBody, userContext) + return err + } + // TODO:... return AccountLinkingRecipeInterface{ GetUsersWithSearchParams: &getUsers, @@ -346,5 +355,6 @@ func makeRecipeImplementation(querier Querier, config AccountLinkingTypeNormalis LinkAccounts: &linkAccounts, CanLinkAccounts: &canLinkAccounts, UnlinkAccounts: &unlinkAccounts, + DeleteUser: &deleteUser, } } diff --git a/supertokens/main.go b/supertokens/main.go index 496456d4..b28890ed 100644 --- a/supertokens/main.go +++ b/supertokens/main.go @@ -114,8 +114,17 @@ func GetUser(userId string, userContext ...UserContext) (*User, error) { return (*accountLinkingInstance.RecipeImpl.GetUser)(userId, userContext[0]) } -func DeleteUser(userId string) error { - return deleteUser(userId) +func DeleteUser(userId string, removeAllLinkedAccounts bool, userContext ...UserContext) error { + accountLinkingInstance, err := getAccountLinkingRecipeInstanceOrThrowError() + if err != nil { + return err + } + + if len(userContext) == 0 { + userContext = append(userContext, &map[string]interface{}{}) + } + + return (*accountLinkingInstance.RecipeImpl.DeleteUser)(userId, removeAllLinkedAccounts, userContext[0]) } func GetRequestFromUserContext(userContext UserContext) *http.Request { diff --git a/supertokens/supertokens.go b/supertokens/supertokens.go index f0973dd4..89fd0732 100644 --- a/supertokens/supertokens.go +++ b/supertokens/supertokens.go @@ -349,32 +349,6 @@ func getUserCount(includeRecipeIds *[]string, tenantId string, includeAllTenants return resp["count"].(float64), nil } -func deleteUser(userId string) error { - querier, err := GetNewQuerierInstanceOrThrowError("") - if err != nil { - return err - } - - cdiVersion, err := querier.GetQuerierAPIVersion() - if err != nil { - return err - } - - if MaxVersion(cdiVersion, "2.10") == cdiVersion { - _, err = querier.SendPostRequest("/user/remove", map[string]interface{}{ - "userId": userId, - }, nil) - - if err != nil { - return err - } - - return nil - } else { - return errors.New("please upgrade the SuperTokens core to >= 3.7.0") - } -} - func ResetForTest() { ResetQuerierForTest() superTokensInstance = nil diff --git a/test/auth-react-server/main.go b/test/auth-react-server/main.go index 7f79e2e8..dfc879eb 100644 --- a/test/auth-react-server/main.go +++ b/test/auth-react-server/main.go @@ -803,7 +803,7 @@ func callSTInit(passwordlessConfig *plessmodels.TypeInput) { if err != nil { return } - err = supertokens.DeleteUser(user.ID) + err = supertokens.DeleteUser(user.ID, true) if err != nil { return }