Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: tenantid in config functions #627

Merged
merged 15 commits into from
Jul 7, 2023
4 changes: 2 additions & 2 deletions lib/build/recipe/dashboard/api/userdetails/userPasswordPut.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ const userPasswordPut = (_, tenantId, options, userContext) =>
let passwordFormFields = recipe_1.default
.getInstanceOrThrowError()
.config.signUpFeature.formFields.filter((field) => field.id === constants_1.FORM_FIELD_PASSWORD_ID);
let passwordValidationError = yield passwordFormFields[0].validate(newPassword);
let passwordValidationError = yield passwordFormFields[0].validate(newPassword, tenantId);
if (passwordValidationError !== undefined) {
return {
status: "INVALID_PASSWORD_ERROR",
Expand Down Expand Up @@ -111,7 +111,7 @@ const userPasswordPut = (_, tenantId, options, userContext) =>
let passwordFormFields = recipe_2.default
.getInstanceOrThrowError()
.config.signUpFeature.formFields.filter((field) => field.id === constants_1.FORM_FIELD_PASSWORD_ID);
let passwordValidationError = yield passwordFormFields[0].validate(newPassword);
let passwordValidationError = yield passwordFormFields[0].validate(newPassword, tenantId);
if (passwordValidationError !== undefined) {
return {
status: "INVALID_PASSWORD_ERROR",
Expand Down
2 changes: 1 addition & 1 deletion lib/build/recipe/dashboard/api/userdetails/userPut.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ declare type Response =
};
export declare const userPut: (
_: APIInterface,
___: string,
tenantId: string,
options: APIOptions,
userContext: any
) => Promise<Response>;
Expand Down
20 changes: 11 additions & 9 deletions lib/build/recipe/dashboard/api/userdetails/userPut.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,13 @@ const recipe_5 = __importDefault(require("../../../usermetadata/recipe"));
const usermetadata_1 = __importDefault(require("../../../usermetadata"));
const constants_1 = require("../../../emailpassword/constants");
const utils_2 = require("../../../passwordless/utils");
const updateEmailForRecipeId = (recipeId, userId, email, userContext) =>
const updateEmailForRecipeId = (recipeId, userId, email, tenantId, userContext) =>
__awaiter(void 0, void 0, void 0, function* () {
if (recipeId === "emailpassword") {
let emailFormFields = recipe_1.default
.getInstanceOrThrowError()
.config.signUpFeature.formFields.filter((field) => field.id === constants_1.FORM_FIELD_EMAIL_ID);
let validationError = yield emailFormFields[0].validate(email);
let validationError = yield emailFormFields[0].validate(email, tenantId);
if (validationError !== undefined) {
return {
status: "INVALID_EMAIL_ERROR",
Expand All @@ -82,7 +82,7 @@ const updateEmailForRecipeId = (recipeId, userId, email, userContext) =>
let emailFormFields = recipe_2.default
.getInstanceOrThrowError()
.config.signUpFeature.formFields.filter((field) => field.id === constants_1.FORM_FIELD_EMAIL_ID);
let validationError = yield emailFormFields[0].validate(email);
let validationError = yield emailFormFields[0].validate(email, tenantId);
if (validationError !== undefined) {
return {
status: "INVALID_EMAIL_ERROR",
Expand Down Expand Up @@ -117,7 +117,7 @@ const updateEmailForRecipeId = (recipeId, userId, email, userContext) =>
validationError = validationResult;
}
} else {
const validationResult = yield passwordlessConfig.validateEmailAddress(email);
const validationResult = yield passwordlessConfig.validateEmailAddress(email, tenantId);
if (validationResult !== undefined) {
isValidEmail = false;
validationError = validationResult;
Expand Down Expand Up @@ -157,7 +157,7 @@ const updateEmailForRecipeId = (recipeId, userId, email, userContext) =>
validationError = validationResult;
}
} else {
const validationResult = yield passwordlessConfig.validateEmailAddress(email);
const validationResult = yield passwordlessConfig.validateEmailAddress(email, tenantId);
if (validationResult !== undefined) {
isValidEmail = false;
validationError = validationResult;
Expand Down Expand Up @@ -191,7 +191,7 @@ const updateEmailForRecipeId = (recipeId, userId, email, userContext) =>
*/
throw new Error("Should never come here");
});
const updatePhoneForRecipeId = (recipeId, userId, phone, userContext) =>
const updatePhoneForRecipeId = (recipeId, userId, phone, tenantId, userContext) =>
__awaiter(void 0, void 0, void 0, function* () {
if (recipeId === "passwordless") {
let isValidPhone = true;
Expand All @@ -204,7 +204,7 @@ const updatePhoneForRecipeId = (recipeId, userId, phone, userContext) =>
validationError = validationResult;
}
} else {
const validationResult = yield passwordlessConfig.validatePhoneNumber(phone);
const validationResult = yield passwordlessConfig.validatePhoneNumber(phone, tenantId);
if (validationResult !== undefined) {
isValidPhone = false;
validationError = validationResult;
Expand Down Expand Up @@ -244,7 +244,7 @@ const updatePhoneForRecipeId = (recipeId, userId, phone, userContext) =>
validationError = validationResult;
}
} else {
const validationResult = yield passwordlessConfig.validatePhoneNumber(phone);
const validationResult = yield passwordlessConfig.validatePhoneNumber(phone, tenantId);
if (validationResult !== undefined) {
isValidPhone = false;
validationError = validationResult;
Expand Down Expand Up @@ -278,7 +278,7 @@ const updatePhoneForRecipeId = (recipeId, userId, phone, userContext) =>
*/
throw new Error("Should never come here");
});
const userPut = (_, ___, options, userContext) =>
const userPut = (_, tenantId, options, userContext) =>
__awaiter(void 0, void 0, void 0, function* () {
const requestBody = yield options.req.getJSONBody();
const userId = requestBody.userId;
Expand Down Expand Up @@ -357,6 +357,7 @@ const userPut = (_, ___, options, userContext) =>
userResponse.recipe,
userId,
email.trim(),
tenantId,
userContext
);
if (emailUpdateResponse.status !== "OK") {
Expand All @@ -368,6 +369,7 @@ const userPut = (_, ___, options, userContext) =>
userResponse.recipe,
userId,
phone.trim(),
tenantId,
userContext
);
if (phoneUpdateResponse.status !== "OK") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ function generatePasswordResetToken(apiImplementation, tenantId, options, userCo
// step 1
let formFields = yield utils_2.validateFormFieldsOrThrowError(
options.config.resetPasswordUsingTokenFeature.formFieldsForGenerateTokenForm,
(yield options.req.getJSONBody()).formFields
(yield options.req.getJSONBody()).formFields,
tenantId
);
let result = yield apiImplementation.generatePasswordResetTokenPOST({
formFields,
Expand Down
3 changes: 2 additions & 1 deletion lib/build/recipe/emailpassword/api/passwordReset.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ function passwordReset(apiImplementation, tenantId, options, userContext) {
// step 1
let formFields = yield utils_2.validateFormFieldsOrThrowError(
options.config.resetPasswordUsingTokenFeature.formFieldsForPasswordResetForm,
(yield options.req.getJSONBody()).formFields
(yield options.req.getJSONBody()).formFields,
tenantId
);
let token = (yield options.req.getJSONBody()).token;
if (token === undefined) {
Expand Down
3 changes: 2 additions & 1 deletion lib/build/recipe/emailpassword/api/signin.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ function signInAPI(apiImplementation, tenantId, options, userContext) {
// step 1
let formFields = yield utils_2.validateFormFieldsOrThrowError(
options.config.signInFeature.formFields,
(yield options.req.getJSONBody()).formFields
(yield options.req.getJSONBody()).formFields,
tenantId
);
let result = yield apiImplementation.signInPOST({
formFields,
Expand Down
3 changes: 2 additions & 1 deletion lib/build/recipe/emailpassword/api/signup.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ function signUpAPI(apiImplementation, tenantId, options, userContext) {
// step 1
let formFields = yield utils_2.validateFormFieldsOrThrowError(
options.config.signUpFeature.formFields,
(yield options.req.getJSONBody()).formFields
(yield options.req.getJSONBody()).formFields,
tenantId
);
let result = yield apiImplementation.signUpPOST({
formFields,
Expand Down
3 changes: 2 additions & 1 deletion lib/build/recipe/emailpassword/api/utils.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
import { NormalisedFormField } from "../types";
export declare function validateFormFieldsOrThrowError(
configFormFields: NormalisedFormField[],
formFieldsRaw: any
formFieldsRaw: any,
tenantId: string
): Promise<
{
id: string;
Expand Down
8 changes: 4 additions & 4 deletions lib/build/recipe/emailpassword/api/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.validateFormFieldsOrThrowError = void 0;
const error_1 = __importDefault(require("../error"));
const constants_1 = require("../constants");
function validateFormFieldsOrThrowError(configFormFields, formFieldsRaw) {
function validateFormFieldsOrThrowError(configFormFields, formFieldsRaw, tenantId) {
return __awaiter(this, void 0, void 0, function* () {
// first we check syntax ----------------------------
if (formFieldsRaw === undefined) {
Expand Down Expand Up @@ -67,7 +67,7 @@ function validateFormFieldsOrThrowError(configFormFields, formFieldsRaw) {
return field;
});
// then run validators through them-----------------------
yield validateFormOrThrowError(formFields, configFormFields);
yield validateFormOrThrowError(formFields, configFormFields, tenantId);
return formFields;
});
}
Expand All @@ -80,7 +80,7 @@ function newBadRequestError(message) {
}
// We check that the number of fields in input and config form field is the same.
// We check that each item in the config form field is also present in the input form field
function validateFormOrThrowError(inputs, configFormFields) {
function validateFormOrThrowError(inputs, configFormFields, tenantId) {
return __awaiter(this, void 0, void 0, function* () {
let validationErrors = [];
if (configFormFields.length !== inputs.length) {
Expand All @@ -99,7 +99,7 @@ function validateFormOrThrowError(inputs, configFormFields) {
});
} else {
// Otherwise, use validate function.
const error = yield field.validate(input.value);
const error = yield field.validate(input.value, tenantId);
// If error, add it.
if (error !== undefined) {
validationErrors.push({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,13 @@
// @ts-nocheck
import { TypeEmailPasswordEmailDeliveryInput, User, RecipeInterface } from "../../../types";
import { TypeEmailPasswordEmailDeliveryInput, RecipeInterface } from "../../../types";
import { NormalisedAppinfo } from "../../../../../types";
import { EmailDeliveryInterface } from "../../../../../ingredients/emaildelivery/types";
export default class BackwardCompatibilityService
implements EmailDeliveryInterface<TypeEmailPasswordEmailDeliveryInput> {
private recipeInterfaceImpl;
private isInServerlessEnv;
private appInfo;
private resetPasswordUsingTokenFeature;
constructor(
recipeInterfaceImpl: RecipeInterface,
appInfo: NormalisedAppinfo,
isInServerlessEnv: boolean,
resetPasswordUsingTokenFeature?: {
createAndSendCustomEmail?: (
user: User,
passwordResetURLWithToken: string,
userContext: any
) => Promise<void>;
}
);
constructor(recipeInterfaceImpl: RecipeInterface, appInfo: NormalisedAppinfo, isInServerlessEnv: boolean);
sendEmail: (
input: TypeEmailPasswordEmailDeliveryInput & {
userContext: any;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ var __awaiter =
Object.defineProperty(exports, "__esModule", { value: true });
const passwordResetFunctions_1 = require("../../../passwordResetFunctions");
class BackwardCompatibilityService {
constructor(recipeInterfaceImpl, appInfo, isInServerlessEnv, resetPasswordUsingTokenFeature) {
constructor(recipeInterfaceImpl, appInfo, isInServerlessEnv) {
this.sendEmail = (input) =>
__awaiter(this, void 0, void 0, function* () {
let user = yield this.recipeInterfaceImpl.getUserById({
Expand All @@ -49,36 +49,22 @@ class BackwardCompatibilityService {
user.email = input.user.email;
try {
if (!this.isInServerlessEnv) {
this.resetPasswordUsingTokenFeature
.createAndSendCustomEmail(user, input.passwordResetLink, input.userContext)
passwordResetFunctions_1
.createAndSendEmailUsingSupertokensService(this.appInfo, user, input.passwordResetLink)
.catch((_) => {});
} else {
// see https://github.com/supertokens/supertokens-node/pull/135
yield this.resetPasswordUsingTokenFeature.createAndSendCustomEmail(
yield passwordResetFunctions_1.createAndSendEmailUsingSupertokensService(
this.appInfo,
user,
input.passwordResetLink,
input.userContext
input.passwordResetLink
);
}
} catch (_) {}
});
this.recipeInterfaceImpl = recipeInterfaceImpl;
this.isInServerlessEnv = isInServerlessEnv;
this.appInfo = appInfo;
{
let inputCreateAndSendCustomEmail =
resetPasswordUsingTokenFeature === null || resetPasswordUsingTokenFeature === void 0
? void 0
: resetPasswordUsingTokenFeature.createAndSendCustomEmail;
this.resetPasswordUsingTokenFeature =
inputCreateAndSendCustomEmail !== undefined
? {
createAndSendCustomEmail: inputCreateAndSendCustomEmail,
}
: {
createAndSendCustomEmail: passwordResetFunctions_1.createAndSendCustomEmail(this.appInfo),
};
}
}
}
exports.default = BackwardCompatibilityService;
1 change: 1 addition & 0 deletions lib/build/recipe/emailpassword/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export default class Wrapper {
password?: string;
userContext?: any;
applyPasswordPolicy?: boolean;
tenantIdForPasswordPolicy?: string;
}): Promise<
| {
status: "OK" | "UNKNOWN_USER_ID_ERROR" | "EMAIL_ALREADY_EXISTS_ERROR";
Expand Down
11 changes: 8 additions & 3 deletions lib/build/recipe/emailpassword/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,14 @@ class Wrapper {
});
}
static updateEmailOrPassword(input) {
return recipe_1.default
.getInstanceOrThrowError()
.recipeInterfaceImpl.updateEmailOrPassword(Object.assign({ userContext: {} }, input));
return recipe_1.default.getInstanceOrThrowError().recipeInterfaceImpl.updateEmailOrPassword(
Object.assign(Object.assign({ userContext: {} }, input), {
tenantIdForPasswordPolicy:
input.tenantIdForPasswordPolicy === undefined
? constants_1.DEFAULT_TENANT_ID
: input.tenantIdForPasswordPolicy,
})
);
}
static createResetPasswordLink(userId, tenantId, userContext) {
return __awaiter(this, void 0, void 0, function* () {
Expand Down
8 changes: 5 additions & 3 deletions lib/build/recipe/emailpassword/passwordResetFunctions.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// @ts-nocheck
import { User } from "./types";
import { NormalisedAppinfo } from "../../types";
export declare function createAndSendCustomEmail(
appInfo: NormalisedAppinfo
): (user: User, passwordResetURLWithToken: string) => Promise<void>;
export declare function createAndSendEmailUsingSupertokensService(
appInfo: NormalisedAppinfo,
user: User,
passwordResetURLWithToken: string
): Promise<void>;
Loading
Loading