@rovela-ai/sdk 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/auth.js +5 -11
- package/dist/admin/api/auth.js.map +1 -1
- package/dist/admin/api/categories.js +43 -50
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/check.js +6 -9
- package/dist/admin/api/check.js.map +1 -1
- package/dist/admin/api/customers.js +17 -21
- package/dist/admin/api/customers.js.map +1 -1
- package/dist/admin/api/index.js +10 -38
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +30 -35
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.js +56 -66
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/refund.js +26 -29
- package/dist/admin/api/refund.js.map +1 -1
- package/dist/admin/api/settings.js +17 -21
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/setup.js +17 -20
- package/dist/admin/api/setup.js.map +1 -1
- package/dist/admin/api/stats.js +14 -17
- package/dist/admin/api/stats.js.map +1 -1
- package/dist/admin/components/AdminGuard.js +13 -17
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminHeader.js +8 -11
- package/dist/admin/components/AdminHeader.js.map +1 -1
- package/dist/admin/components/AdminLayout.js +5 -8
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminLoginForm.js +11 -14
- package/dist/admin/components/AdminLoginForm.js.map +1 -1
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +16 -14
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminSetupForm.js +11 -14
- package/dist/admin/components/AdminSetupForm.js.map +1 -1
- package/dist/admin/components/CategoryForm.d.ts +30 -0
- package/dist/admin/components/CategoryForm.d.ts.map +1 -0
- package/dist/admin/components/CategoryForm.js +153 -0
- package/dist/admin/components/CategoryForm.js.map +1 -0
- package/dist/admin/components/CategorySelect.d.ts +32 -0
- package/dist/admin/components/CategorySelect.d.ts.map +1 -0
- package/dist/admin/components/CategorySelect.js +148 -0
- package/dist/admin/components/CategorySelect.js.map +1 -0
- package/dist/admin/components/InventoryEditor.js +16 -19
- package/dist/admin/components/InventoryEditor.js.map +1 -1
- package/dist/admin/components/LowStockAlert.js +6 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.js +15 -18
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -16
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/ProductForm.d.ts +2 -2
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +140 -27
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/ProductTable.js +15 -18
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.js +6 -9
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.js +12 -15
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/SEOPreview.d.ts +32 -0
- package/dist/admin/components/SEOPreview.d.ts.map +1 -0
- package/dist/admin/components/SEOPreview.js +30 -0
- package/dist/admin/components/SEOPreview.js.map +1 -0
- package/dist/admin/components/StatsCards.js +7 -10
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/StoreSettings.js +10 -13
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/TagInput.d.ts +29 -0
- package/dist/admin/components/TagInput.d.ts.map +1 -0
- package/dist/admin/components/TagInput.js +73 -0
- package/dist/admin/components/TagInput.js.map +1 -0
- package/dist/admin/components/VariantManager.d.ts +42 -0
- package/dist/admin/components/VariantManager.d.ts.map +1 -0
- package/dist/admin/components/VariantManager.js +175 -0
- package/dist/admin/components/VariantManager.js.map +1 -0
- package/dist/admin/components/index.d.ts +5 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +27 -35
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/config.js +12 -54
- package/dist/admin/config.js.map +1 -1
- package/dist/admin/hooks/index.d.ts +2 -0
- package/dist/admin/hooks/index.d.ts.map +1 -1
- package/dist/admin/hooks/index.js +5 -11
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +9 -12
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/admin/hooks/useAdminCategories.d.ts +36 -0
- package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminCategories.js +217 -0
- package/dist/admin/hooks/useAdminCategories.js.map +1 -0
- package/dist/admin/hooks/useAdminOrders.js +11 -14
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +13 -16
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +11 -14
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.d.ts +3 -2
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +17 -66
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/admin-service.js +39 -83
- package/dist/admin/server/admin-service.js.map +1 -1
- package/dist/admin/server/index.js +3 -13
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.js +1 -2
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/api/auth.js +6 -14
- package/dist/auth/api/auth.js.map +1 -1
- package/dist/auth/api/forgot-password.js +8 -11
- package/dist/auth/api/forgot-password.js.map +1 -1
- package/dist/auth/api/index.js +6 -18
- package/dist/auth/api/index.js.map +1 -1
- package/dist/auth/api/register.js +17 -20
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/api/resend-verification.js +9 -12
- package/dist/auth/api/resend-verification.js.map +1 -1
- package/dist/auth/api/reset-password.js +18 -22
- package/dist/auth/api/reset-password.js.map +1 -1
- package/dist/auth/api/verify-email.js +14 -18
- package/dist/auth/api/verify-email.js.map +1 -1
- package/dist/auth/components/AuthGuard.js +13 -17
- package/dist/auth/components/AuthGuard.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +11 -14
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +18 -21
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.js +13 -16
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.js +15 -18
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.js +13 -16
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +10 -13
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/components/index.js +7 -18
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/config.js +9 -49
- package/dist/auth/config.js.map +1 -1
- package/dist/auth/hooks/index.js +1 -5
- package/dist/auth/hooks/index.js.map +1 -1
- package/dist/auth/hooks/useAuth.js +14 -17
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/index.js +15 -37
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/customer-service.js +39 -83
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/server/email-sender.js +11 -17
- package/dist/auth/server/email-sender.js.map +1 -1
- package/dist/auth/server/index.js +5 -36
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/server/password-reset-service.js +30 -70
- package/dist/auth/server/password-reset-service.js.map +1 -1
- package/dist/auth/server/password.js +9 -18
- package/dist/auth/server/password.js.map +1 -1
- package/dist/auth/server/verification-service.js +35 -76
- package/dist/auth/server/verification-service.js.map +1 -1
- package/dist/auth/types.js +1 -2
- package/dist/auth/types.js.map +1 -1
- package/dist/cart/CartProvider.js +13 -17
- package/dist/cart/CartProvider.js.map +1 -1
- package/dist/cart/components/AddToCartButton.js +16 -19
- package/dist/cart/components/AddToCartButton.js.map +1 -1
- package/dist/cart/components/CartDrawer.js +17 -23
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartIcon.js +9 -12
- package/dist/cart/components/CartIcon.js.map +1 -1
- package/dist/cart/components/CartItem.js +7 -13
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/cart/components/CartSummary.js +12 -15
- package/dist/cart/components/CartSummary.js.map +1 -1
- package/dist/cart/components/QuantitySelector.js +9 -12
- package/dist/cart/components/QuantitySelector.js.map +1 -1
- package/dist/cart/components/index.js +6 -15
- package/dist/cart/components/index.js.map +1 -1
- package/dist/cart/index.js +3 -17
- package/dist/cart/index.js.map +1 -1
- package/dist/cart/store.js +8 -13
- package/dist/cart/store.js.map +1 -1
- package/dist/checkout/api/checkout.js +12 -15
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/index.js +2 -7
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/webhook.js +8 -11
- package/dist/checkout/api/webhook.js.map +1 -1
- package/dist/checkout/components/CheckoutButton.js +8 -11
- package/dist/checkout/components/CheckoutButton.js.map +1 -1
- package/dist/checkout/components/CheckoutSuccess.js +11 -14
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
- package/dist/checkout/components/OrderSummary.js +8 -11
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.js +14 -17
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/components/index.js +4 -11
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/index.js +1 -6
- package/dist/checkout/hooks/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +10 -19
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/index.js +7 -28
- package/dist/checkout/index.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +11 -16
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +21 -24
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.js +3 -13
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.js +11 -16
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.js +13 -29
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/checkout/stripe/index.js +1 -15
- package/dist/checkout/stripe/index.js.map +1 -1
- package/dist/checkout/types.js +1 -2
- package/dist/checkout/types.js.map +1 -1
- package/dist/core/StoreSettingsProvider.d.ts +104 -0
- package/dist/core/StoreSettingsProvider.d.ts.map +1 -0
- package/dist/core/StoreSettingsProvider.js +195 -0
- package/dist/core/StoreSettingsProvider.js.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +7 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/settings.d.ts +42 -0
- package/dist/core/api/settings.d.ts.map +1 -0
- package/dist/core/api/settings.js +74 -0
- package/dist/core/api/settings.js.map +1 -0
- package/dist/core/config.js +12 -57
- package/dist/core/config.js.map +1 -1
- package/dist/core/db/client.js +16 -62
- package/dist/core/db/client.js.map +1 -1
- package/dist/core/db/index.js +14 -93
- package/dist/core/db/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/db/queries.js +207 -284
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.js +179 -182
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +14 -42
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.js +16 -68
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.js +26 -51
- package/dist/core/utils.js.map +1 -1
- package/dist/emails/config.js +13 -21
- package/dist/emails/config.js.map +1 -1
- package/dist/emails/index.js +10 -72
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/auth.js +26 -34
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/index.js +2 -21
- package/dist/emails/send/index.js.map +1 -1
- package/dist/emails/send/orders.js +38 -50
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.js +7 -12
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/base.js +37 -53
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.js +12 -16
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/index.js +9 -43
- package/dist/emails/templates/index.js.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -22
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.js +30 -34
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.js +20 -24
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-shipped.js +19 -23
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.js +12 -16
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -21
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.js +11 -15
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/types.js +1 -2
- package/dist/emails/types.js.map +1 -1
- package/dist/emails/utils.js +9 -20
- package/dist/emails/utils.js.map +1 -1
- package/dist/index.js +24 -176
- package/dist/index.js.map +1 -1
- package/dist/products/api/categories.js +7 -10
- package/dist/products/api/categories.js.map +1 -1
- package/dist/products/api/index.js +3 -9
- package/dist/products/api/index.js.map +1 -1
- package/dist/products/api/product.js +10 -13
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.js +8 -11
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/CategoryNav.js +20 -26
- package/dist/products/components/CategoryNav.js.map +1 -1
- package/dist/products/components/ProductBreadcrumb.js +7 -13
- package/dist/products/components/ProductBreadcrumb.js.map +1 -1
- package/dist/products/components/ProductCard.js +6 -12
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/components/ProductDetails.js +14 -17
- package/dist/products/components/ProductDetails.js.map +1 -1
- package/dist/products/components/ProductFilters.js +15 -18
- package/dist/products/components/ProductFilters.js.map +1 -1
- package/dist/products/components/ProductGallery.js +17 -23
- package/dist/products/components/ProductGallery.js.map +1 -1
- package/dist/products/components/ProductGrid.js +10 -13
- package/dist/products/components/ProductGrid.js.map +1 -1
- package/dist/products/components/ProductSearch.js +14 -17
- package/dist/products/components/ProductSearch.js.map +1 -1
- package/dist/products/components/ProductSort.js +8 -11
- package/dist/products/components/ProductSort.js.map +1 -1
- package/dist/products/components/VariantSelector.js +16 -19
- package/dist/products/components/VariantSelector.js.map +1 -1
- package/dist/products/components/index.js +10 -23
- package/dist/products/components/index.js.map +1 -1
- package/dist/products/hooks/index.js +4 -11
- package/dist/products/hooks/index.js.map +1 -1
- package/dist/products/hooks/useCategories.js +12 -15
- package/dist/products/hooks/useCategories.js.map +1 -1
- package/dist/products/hooks/useProduct.js +9 -12
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProductAttributes.js +10 -13
- package/dist/products/hooks/useProductAttributes.js.map +1 -1
- package/dist/products/hooks/useProducts.js +15 -18
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/dist/products/index.js +6 -23
- package/dist/products/index.js.map +1 -1
- package/dist/theme/ThemeProvider.js +12 -14
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/colors.js +3 -8
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/defaults.js +27 -30
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/fonts.js +12 -18
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/generator.js +63 -69
- package/dist/theme/generator.js.map +1 -1
- package/dist/theme/hooks.js +11 -16
- package/dist/theme/hooks.js.map +1 -1
- package/dist/theme/index.js +6 -42
- package/dist/theme/index.js.map +1 -1
- package/package.json +35 -30
|
@@ -1,57 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/customer-service
|
|
4
3
|
*
|
|
5
4
|
* Customer CRUD operations with tenant isolation.
|
|
6
5
|
* All operations are scoped to the current tenant.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.createCustomer = createCustomer;
|
|
43
|
-
exports.authenticateCustomer = authenticateCustomer;
|
|
44
|
-
exports.findCustomerForSession = findCustomerForSession;
|
|
45
|
-
exports.findCustomerByEmail = findCustomerByEmail;
|
|
46
|
-
exports.findCustomerById = findCustomerById;
|
|
47
|
-
exports.updateCustomer = updateCustomer;
|
|
48
|
-
exports.updateCustomerPassword = updateCustomerPassword;
|
|
49
|
-
exports.markEmailVerified = markEmailVerified;
|
|
50
|
-
exports.emailExists = emailExists;
|
|
51
|
-
const drizzle_orm_1 = require("drizzle-orm");
|
|
52
|
-
const client_1 = require("../../core/db/client");
|
|
53
|
-
const schema = __importStar(require("../../core/db/schema"));
|
|
54
|
-
const password_1 = require("./password");
|
|
7
|
+
import { eq, and } from 'drizzle-orm';
|
|
8
|
+
import { getDb, getTenantId } from '../../core/db/client';
|
|
9
|
+
import * as schema from '../../core/db/schema';
|
|
10
|
+
import { hashPassword, verifyPassword } from './password';
|
|
55
11
|
// =============================================================================
|
|
56
12
|
// Customer CRUD
|
|
57
13
|
// =============================================================================
|
|
@@ -75,11 +31,11 @@ const password_1 = require("./password");
|
|
|
75
31
|
* )
|
|
76
32
|
* ```
|
|
77
33
|
*/
|
|
78
|
-
async function createCustomer(email, password, name) {
|
|
79
|
-
const db =
|
|
80
|
-
const tenantId =
|
|
34
|
+
export async function createCustomer(email, password, name) {
|
|
35
|
+
const db = getDb();
|
|
36
|
+
const tenantId = getTenantId();
|
|
81
37
|
// Hash password
|
|
82
|
-
const passwordHash = await
|
|
38
|
+
const passwordHash = await hashPassword(password);
|
|
83
39
|
try {
|
|
84
40
|
const [customer] = await db
|
|
85
41
|
.insert(schema.customers)
|
|
@@ -121,14 +77,14 @@ async function createCustomer(email, password, name) {
|
|
|
121
77
|
* }
|
|
122
78
|
* ```
|
|
123
79
|
*/
|
|
124
|
-
async function authenticateCustomer(email, password, requireVerification = true) {
|
|
125
|
-
const db =
|
|
126
|
-
const tenantId =
|
|
80
|
+
export async function authenticateCustomer(email, password, requireVerification = true) {
|
|
81
|
+
const db = getDb();
|
|
82
|
+
const tenantId = getTenantId();
|
|
127
83
|
// Find customer by email
|
|
128
84
|
const [customer] = await db
|
|
129
85
|
.select()
|
|
130
86
|
.from(schema.customers)
|
|
131
|
-
.where(
|
|
87
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.email, email.toLowerCase().trim())))
|
|
132
88
|
.limit(1);
|
|
133
89
|
if (!customer) {
|
|
134
90
|
return {
|
|
@@ -138,7 +94,7 @@ async function authenticateCustomer(email, password, requireVerification = true)
|
|
|
138
94
|
};
|
|
139
95
|
}
|
|
140
96
|
// Verify password
|
|
141
|
-
const isValidPassword = await
|
|
97
|
+
const isValidPassword = await verifyPassword(password, customer.passwordHash);
|
|
142
98
|
if (!isValidPassword) {
|
|
143
99
|
return {
|
|
144
100
|
success: false,
|
|
@@ -170,9 +126,9 @@ async function authenticateCustomer(email, password, requireVerification = true)
|
|
|
170
126
|
* }
|
|
171
127
|
* ```
|
|
172
128
|
*/
|
|
173
|
-
async function findCustomerForSession(customerId) {
|
|
174
|
-
const db =
|
|
175
|
-
const tenantId =
|
|
129
|
+
export async function findCustomerForSession(customerId) {
|
|
130
|
+
const db = getDb();
|
|
131
|
+
const tenantId = getTenantId();
|
|
176
132
|
const [customer] = await db
|
|
177
133
|
.select({
|
|
178
134
|
id: schema.customers.id,
|
|
@@ -181,7 +137,7 @@ async function findCustomerForSession(customerId) {
|
|
|
181
137
|
emailVerified: schema.customers.emailVerified,
|
|
182
138
|
})
|
|
183
139
|
.from(schema.customers)
|
|
184
|
-
.where(
|
|
140
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)))
|
|
185
141
|
.limit(1);
|
|
186
142
|
if (!customer) {
|
|
187
143
|
return null;
|
|
@@ -199,13 +155,13 @@ async function findCustomerForSession(customerId) {
|
|
|
199
155
|
* @param email - Customer email
|
|
200
156
|
* @returns Customer or null if not found
|
|
201
157
|
*/
|
|
202
|
-
async function findCustomerByEmail(email) {
|
|
203
|
-
const db =
|
|
204
|
-
const tenantId =
|
|
158
|
+
export async function findCustomerByEmail(email) {
|
|
159
|
+
const db = getDb();
|
|
160
|
+
const tenantId = getTenantId();
|
|
205
161
|
const [customer] = await db
|
|
206
162
|
.select()
|
|
207
163
|
.from(schema.customers)
|
|
208
|
-
.where(
|
|
164
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.email, email.toLowerCase().trim())))
|
|
209
165
|
.limit(1);
|
|
210
166
|
return customer || null;
|
|
211
167
|
}
|
|
@@ -215,13 +171,13 @@ async function findCustomerByEmail(email) {
|
|
|
215
171
|
* @param customerId - Customer UUID
|
|
216
172
|
* @returns Customer or null if not found
|
|
217
173
|
*/
|
|
218
|
-
async function findCustomerById(customerId) {
|
|
219
|
-
const db =
|
|
220
|
-
const tenantId =
|
|
174
|
+
export async function findCustomerById(customerId) {
|
|
175
|
+
const db = getDb();
|
|
176
|
+
const tenantId = getTenantId();
|
|
221
177
|
const [customer] = await db
|
|
222
178
|
.select()
|
|
223
179
|
.from(schema.customers)
|
|
224
|
-
.where(
|
|
180
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)))
|
|
225
181
|
.limit(1);
|
|
226
182
|
return customer || null;
|
|
227
183
|
}
|
|
@@ -237,9 +193,9 @@ async function findCustomerById(customerId) {
|
|
|
237
193
|
* const updated = await updateCustomer(customerId, { name: 'Jane Doe' })
|
|
238
194
|
* ```
|
|
239
195
|
*/
|
|
240
|
-
async function updateCustomer(customerId, data) {
|
|
241
|
-
const db =
|
|
242
|
-
const tenantId =
|
|
196
|
+
export async function updateCustomer(customerId, data) {
|
|
197
|
+
const db = getDb();
|
|
198
|
+
const tenantId = getTenantId();
|
|
243
199
|
const updateData = {};
|
|
244
200
|
if (data.name !== undefined) {
|
|
245
201
|
updateData.name = data.name?.trim() || null;
|
|
@@ -254,7 +210,7 @@ async function updateCustomer(customerId, data) {
|
|
|
254
210
|
const [customer] = await db
|
|
255
211
|
.update(schema.customers)
|
|
256
212
|
.set(updateData)
|
|
257
|
-
.where(
|
|
213
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)))
|
|
258
214
|
.returning();
|
|
259
215
|
return customer || null;
|
|
260
216
|
}
|
|
@@ -269,14 +225,14 @@ async function updateCustomer(customerId, data) {
|
|
|
269
225
|
* await updateCustomerPassword(customerId, 'newSecurePassword123')
|
|
270
226
|
* ```
|
|
271
227
|
*/
|
|
272
|
-
async function updateCustomerPassword(customerId, newPassword) {
|
|
273
|
-
const db =
|
|
274
|
-
const tenantId =
|
|
275
|
-
const passwordHash = await
|
|
228
|
+
export async function updateCustomerPassword(customerId, newPassword) {
|
|
229
|
+
const db = getDb();
|
|
230
|
+
const tenantId = getTenantId();
|
|
231
|
+
const passwordHash = await hashPassword(newPassword);
|
|
276
232
|
await db
|
|
277
233
|
.update(schema.customers)
|
|
278
234
|
.set({ passwordHash })
|
|
279
|
-
.where(
|
|
235
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)));
|
|
280
236
|
}
|
|
281
237
|
/**
|
|
282
238
|
* Mark customer email as verified.
|
|
@@ -288,13 +244,13 @@ async function updateCustomerPassword(customerId, newPassword) {
|
|
|
288
244
|
* await markEmailVerified(customerId)
|
|
289
245
|
* ```
|
|
290
246
|
*/
|
|
291
|
-
async function markEmailVerified(customerId) {
|
|
292
|
-
const db =
|
|
293
|
-
const tenantId =
|
|
247
|
+
export async function markEmailVerified(customerId) {
|
|
248
|
+
const db = getDb();
|
|
249
|
+
const tenantId = getTenantId();
|
|
294
250
|
await db
|
|
295
251
|
.update(schema.customers)
|
|
296
252
|
.set({ emailVerified: new Date() })
|
|
297
|
-
.where(
|
|
253
|
+
.where(and(eq(schema.customers.tenantId, tenantId), eq(schema.customers.id, customerId)));
|
|
298
254
|
}
|
|
299
255
|
/**
|
|
300
256
|
* Check if email is already registered.
|
|
@@ -302,7 +258,7 @@ async function markEmailVerified(customerId) {
|
|
|
302
258
|
* @param email - Email to check
|
|
303
259
|
* @returns True if email exists
|
|
304
260
|
*/
|
|
305
|
-
async function emailExists(email) {
|
|
261
|
+
export async function emailExists(email) {
|
|
306
262
|
const customer = await findCustomerByEmail(email);
|
|
307
263
|
return !!customer;
|
|
308
264
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer-service.js","sourceRoot":"","sources":["../../../src/auth/server/customer-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"customer-service.js","sourceRoot":"","sources":["../../../src/auth/server/customer-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/email-sender
|
|
4
3
|
*
|
|
@@ -10,12 +9,7 @@
|
|
|
10
9
|
* import { sendVerificationEmail, sendWelcomeEmail } from '@rovela/sdk/emails'
|
|
11
10
|
* ```
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
exports.sendVerificationEmail = sendVerificationEmail;
|
|
15
|
-
exports.sendPasswordResetEmail = sendPasswordResetEmail;
|
|
16
|
-
exports.sendWelcomeEmail = sendWelcomeEmail;
|
|
17
|
-
exports.getStoreName = getStoreName;
|
|
18
|
-
const emails_1 = require("../../emails");
|
|
12
|
+
import { sendVerificationEmail as sendVerification, sendPasswordResetEmail as sendPasswordReset, sendWelcomeEmail as sendWelcome, getStoreName as getStoreNameFromEmails, getStoreUrl, } from '../../emails';
|
|
19
13
|
// =============================================================================
|
|
20
14
|
// Re-exported Functions (Backward Compatible API)
|
|
21
15
|
// =============================================================================
|
|
@@ -33,10 +27,10 @@ const emails_1 = require("../../emails");
|
|
|
33
27
|
*
|
|
34
28
|
* @deprecated Use `sendVerificationEmail` from '@rovela/sdk/emails' for more options
|
|
35
29
|
*/
|
|
36
|
-
async function sendVerificationEmail(email, token, storeName) {
|
|
37
|
-
const storeUrl =
|
|
30
|
+
export async function sendVerificationEmail(email, token, storeName) {
|
|
31
|
+
const storeUrl = getStoreUrl();
|
|
38
32
|
const verificationLink = `${storeUrl}/auth/verify-email?token=${token}`;
|
|
39
|
-
const result = await (
|
|
33
|
+
const result = await sendVerification({
|
|
40
34
|
to: email,
|
|
41
35
|
customerName: email.split('@')[0], // Fallback to email prefix
|
|
42
36
|
verificationLink,
|
|
@@ -61,10 +55,10 @@ async function sendVerificationEmail(email, token, storeName) {
|
|
|
61
55
|
*
|
|
62
56
|
* @deprecated Use `sendPasswordResetEmail` from '@rovela/sdk/emails' for more options
|
|
63
57
|
*/
|
|
64
|
-
async function sendPasswordResetEmail(email, token, storeName) {
|
|
65
|
-
const storeUrl =
|
|
58
|
+
export async function sendPasswordResetEmail(email, token, storeName) {
|
|
59
|
+
const storeUrl = getStoreUrl();
|
|
66
60
|
const resetLink = `${storeUrl}/auth/reset-password?token=${token}`;
|
|
67
|
-
const result = await (
|
|
61
|
+
const result = await sendPasswordReset({
|
|
68
62
|
to: email,
|
|
69
63
|
customerName: email.split('@')[0], // Fallback to email prefix
|
|
70
64
|
resetLink,
|
|
@@ -89,9 +83,9 @@ async function sendPasswordResetEmail(email, token, storeName) {
|
|
|
89
83
|
*
|
|
90
84
|
* @deprecated Use `sendWelcomeEmail` from '@rovela/sdk/emails' for more options
|
|
91
85
|
*/
|
|
92
|
-
async function sendWelcomeEmail(email, name, storeName) {
|
|
86
|
+
export async function sendWelcomeEmail(email, name, storeName) {
|
|
93
87
|
const customerName = name || 'there';
|
|
94
|
-
const result = await (
|
|
88
|
+
const result = await sendWelcome({
|
|
95
89
|
to: email,
|
|
96
90
|
customerName,
|
|
97
91
|
});
|
|
@@ -106,7 +100,7 @@ async function sendWelcomeEmail(email, name, storeName) {
|
|
|
106
100
|
*
|
|
107
101
|
* @deprecated Use `getStoreName` from '@rovela/sdk/emails'
|
|
108
102
|
*/
|
|
109
|
-
async function getStoreName() {
|
|
110
|
-
return (
|
|
103
|
+
export async function getStoreName() {
|
|
104
|
+
return getStoreNameFromEmails();
|
|
111
105
|
}
|
|
112
106
|
//# sourceMappingURL=email-sender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender.js","sourceRoot":"","sources":["../../../src/auth/server/email-sender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-sender.js","sourceRoot":"","sources":["../../../src/auth/server/email-sender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,qBAAqB,IAAI,gBAAgB,EACzC,sBAAsB,IAAI,iBAAiB,EAC3C,gBAAgB,IAAI,WAAW,EAC/B,YAAY,IAAI,sBAAsB,EACtC,WAAW,GACZ,MAAM,cAAc,CAAA;AAErB,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,gBAAgB,GAAG,GAAG,QAAQ,4BAA4B,KAAK,EAAE,CAAA;IAEvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;QACpC,EAAE,EAAE,KAAK;QACT,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B;QAC9D,gBAAgB;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9E,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,GAAG,QAAQ,8BAA8B,KAAK,EAAE,CAAA;IAElE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,EAAE,EAAE,KAAK;QACT,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B;QAC9D,SAAS;QACT,UAAU,EAAE,GAAG;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAChF,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,IAA+B,EAC/B,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,IAAI,OAAO,CAAA;IAEpC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,EAAE,EAAE,KAAK;QACT,YAAY;KACb,CAAC,CAAA;IAEF,sDAAsD;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,sBAAsB,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server
|
|
4
3
|
*
|
|
5
4
|
* Server-side authentication utilities.
|
|
6
5
|
* Import from '@rovela/sdk/auth/server' in server components and API routes.
|
|
7
6
|
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.cleanupExpiredResetTokens = exports.deletePasswordResetTokens = exports.resetPassword = exports.validateResetToken = exports.requestPasswordReset = exports.cleanupExpiredTokens = exports.isEmailVerified = exports.resendVerificationEmail = exports.deleteVerificationTokens = exports.verifyEmail = exports.createVerificationToken = exports.emailExists = exports.markEmailVerified = exports.updateCustomerPassword = exports.updateCustomer = exports.findCustomerById = exports.findCustomerByEmail = exports.findCustomerForSession = exports.authenticateCustomer = exports.createCustomer = exports.getStoreName = exports.sendWelcomeEmail = exports.sendPasswordResetEmail = exports.sendVerificationEmail = exports.MIN_PASSWORD_LENGTH = exports.validatePassword = exports.verifyPassword = exports.hashPassword = void 0;
|
|
10
7
|
// Password utilities
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(exports, "hashPassword", { enumerable: true, get: function () { return password_1.hashPassword; } });
|
|
13
|
-
Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return password_1.verifyPassword; } });
|
|
14
|
-
Object.defineProperty(exports, "validatePassword", { enumerable: true, get: function () { return password_1.validatePassword; } });
|
|
15
|
-
Object.defineProperty(exports, "MIN_PASSWORD_LENGTH", { enumerable: true, get: function () { return password_1.MIN_PASSWORD_LENGTH; } });
|
|
8
|
+
export { hashPassword, verifyPassword, validatePassword, MIN_PASSWORD_LENGTH, } from './password';
|
|
16
9
|
// Email utilities
|
|
17
|
-
|
|
18
|
-
Object.defineProperty(exports, "sendVerificationEmail", { enumerable: true, get: function () { return email_sender_1.sendVerificationEmail; } });
|
|
19
|
-
Object.defineProperty(exports, "sendPasswordResetEmail", { enumerable: true, get: function () { return email_sender_1.sendPasswordResetEmail; } });
|
|
20
|
-
Object.defineProperty(exports, "sendWelcomeEmail", { enumerable: true, get: function () { return email_sender_1.sendWelcomeEmail; } });
|
|
21
|
-
Object.defineProperty(exports, "getStoreName", { enumerable: true, get: function () { return email_sender_1.getStoreName; } });
|
|
10
|
+
export { sendVerificationEmail, sendPasswordResetEmail, sendWelcomeEmail, getStoreName, } from './email-sender';
|
|
22
11
|
// Customer service
|
|
23
|
-
|
|
24
|
-
Object.defineProperty(exports, "createCustomer", { enumerable: true, get: function () { return customer_service_1.createCustomer; } });
|
|
25
|
-
Object.defineProperty(exports, "authenticateCustomer", { enumerable: true, get: function () { return customer_service_1.authenticateCustomer; } });
|
|
26
|
-
Object.defineProperty(exports, "findCustomerForSession", { enumerable: true, get: function () { return customer_service_1.findCustomerForSession; } });
|
|
27
|
-
Object.defineProperty(exports, "findCustomerByEmail", { enumerable: true, get: function () { return customer_service_1.findCustomerByEmail; } });
|
|
28
|
-
Object.defineProperty(exports, "findCustomerById", { enumerable: true, get: function () { return customer_service_1.findCustomerById; } });
|
|
29
|
-
Object.defineProperty(exports, "updateCustomer", { enumerable: true, get: function () { return customer_service_1.updateCustomer; } });
|
|
30
|
-
Object.defineProperty(exports, "updateCustomerPassword", { enumerable: true, get: function () { return customer_service_1.updateCustomerPassword; } });
|
|
31
|
-
Object.defineProperty(exports, "markEmailVerified", { enumerable: true, get: function () { return customer_service_1.markEmailVerified; } });
|
|
32
|
-
Object.defineProperty(exports, "emailExists", { enumerable: true, get: function () { return customer_service_1.emailExists; } });
|
|
12
|
+
export { createCustomer, authenticateCustomer, findCustomerForSession, findCustomerByEmail, findCustomerById, updateCustomer, updateCustomerPassword, markEmailVerified, emailExists, } from './customer-service';
|
|
33
13
|
// Verification service
|
|
34
|
-
|
|
35
|
-
Object.defineProperty(exports, "createVerificationToken", { enumerable: true, get: function () { return verification_service_1.createVerificationToken; } });
|
|
36
|
-
Object.defineProperty(exports, "verifyEmail", { enumerable: true, get: function () { return verification_service_1.verifyEmail; } });
|
|
37
|
-
Object.defineProperty(exports, "deleteVerificationTokens", { enumerable: true, get: function () { return verification_service_1.deleteVerificationTokens; } });
|
|
38
|
-
Object.defineProperty(exports, "resendVerificationEmail", { enumerable: true, get: function () { return verification_service_1.resendVerificationEmail; } });
|
|
39
|
-
Object.defineProperty(exports, "isEmailVerified", { enumerable: true, get: function () { return verification_service_1.isEmailVerified; } });
|
|
40
|
-
Object.defineProperty(exports, "cleanupExpiredTokens", { enumerable: true, get: function () { return verification_service_1.cleanupExpiredTokens; } });
|
|
14
|
+
export { createVerificationToken, verifyEmail, deleteVerificationTokens, resendVerificationEmail, isEmailVerified, cleanupExpiredTokens, } from './verification-service';
|
|
41
15
|
// Password reset service
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(exports, "requestPasswordReset", { enumerable: true, get: function () { return password_reset_service_1.requestPasswordReset; } });
|
|
44
|
-
Object.defineProperty(exports, "validateResetToken", { enumerable: true, get: function () { return password_reset_service_1.validateResetToken; } });
|
|
45
|
-
Object.defineProperty(exports, "resetPassword", { enumerable: true, get: function () { return password_reset_service_1.resetPassword; } });
|
|
46
|
-
Object.defineProperty(exports, "deletePasswordResetTokens", { enumerable: true, get: function () { return password_reset_service_1.deletePasswordResetTokens; } });
|
|
47
|
-
Object.defineProperty(exports, "cleanupExpiredResetTokens", { enumerable: true, get: function () { return password_reset_service_1.cleanupExpiredResetTokens; } });
|
|
16
|
+
export { requestPasswordReset, validateResetToken, resetPassword, deletePasswordResetTokens, cleanupExpiredResetTokens, } from './password-reset-service';
|
|
48
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAEnB,kBAAkB;AAClB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAO3B,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAE/B,yBAAyB;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA"}
|
|
@@ -1,55 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/password-reset-service
|
|
4
3
|
*
|
|
5
4
|
* Password reset token management.
|
|
6
5
|
* Handles creating, validating, and using reset tokens.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.requestPasswordReset = requestPasswordReset;
|
|
43
|
-
exports.validateResetToken = validateResetToken;
|
|
44
|
-
exports.resetPassword = resetPassword;
|
|
45
|
-
exports.deletePasswordResetTokens = deletePasswordResetTokens;
|
|
46
|
-
exports.cleanupExpiredResetTokens = cleanupExpiredResetTokens;
|
|
47
|
-
const drizzle_orm_1 = require("drizzle-orm");
|
|
48
|
-
const nanoid_1 = require("nanoid");
|
|
49
|
-
const client_1 = require("../../core/db/client");
|
|
50
|
-
const schema = __importStar(require("../../core/db/schema"));
|
|
51
|
-
const customer_service_1 = require("./customer-service");
|
|
52
|
-
const email_sender_1 = require("./email-sender");
|
|
7
|
+
import { eq, and, lt } from 'drizzle-orm';
|
|
8
|
+
import { nanoid } from 'nanoid';
|
|
9
|
+
import { getDb, getTenantId } from '../../core/db/client';
|
|
10
|
+
import * as schema from '../../core/db/schema';
|
|
11
|
+
import { findCustomerByEmail, updateCustomerPassword } from './customer-service';
|
|
12
|
+
import { sendPasswordResetEmail, getStoreName } from './email-sender';
|
|
53
13
|
// =============================================================================
|
|
54
14
|
// Constants
|
|
55
15
|
// =============================================================================
|
|
@@ -80,9 +40,9 @@ const TOKEN_LENGTH = 32;
|
|
|
80
40
|
* // Always show "If an account exists, we've sent a reset email"
|
|
81
41
|
* ```
|
|
82
42
|
*/
|
|
83
|
-
async function requestPasswordReset(email) {
|
|
43
|
+
export async function requestPasswordReset(email) {
|
|
84
44
|
// Find customer by email
|
|
85
|
-
const customer = await
|
|
45
|
+
const customer = await findCustomerByEmail(email);
|
|
86
46
|
if (!customer) {
|
|
87
47
|
// Don't reveal if email exists - return success anyway
|
|
88
48
|
return { success: true };
|
|
@@ -90,9 +50,9 @@ async function requestPasswordReset(email) {
|
|
|
90
50
|
// Delete any existing reset tokens for this customer
|
|
91
51
|
await deletePasswordResetTokens(customer.id);
|
|
92
52
|
// Generate new token
|
|
93
|
-
const db =
|
|
94
|
-
const tenantId =
|
|
95
|
-
const token =
|
|
53
|
+
const db = getDb();
|
|
54
|
+
const tenantId = getTenantId();
|
|
55
|
+
const token = nanoid(TOKEN_LENGTH);
|
|
96
56
|
const expires = new Date(Date.now() + TOKEN_EXPIRY_MS);
|
|
97
57
|
await db.insert(schema.customerPasswordResetTokens).values({
|
|
98
58
|
tenantId,
|
|
@@ -101,8 +61,8 @@ async function requestPasswordReset(email) {
|
|
|
101
61
|
expires,
|
|
102
62
|
});
|
|
103
63
|
// Send reset email (don't wait, but log errors)
|
|
104
|
-
const storeName = await
|
|
105
|
-
|
|
64
|
+
const storeName = await getStoreName();
|
|
65
|
+
sendPasswordResetEmail(email, token, storeName).catch((error) => {
|
|
106
66
|
console.error('[Auth Reset] Failed to send password reset email:', error);
|
|
107
67
|
});
|
|
108
68
|
return { success: true };
|
|
@@ -124,13 +84,13 @@ async function requestPasswordReset(email) {
|
|
|
124
84
|
* }
|
|
125
85
|
* ```
|
|
126
86
|
*/
|
|
127
|
-
async function validateResetToken(token) {
|
|
128
|
-
const db =
|
|
87
|
+
export async function validateResetToken(token) {
|
|
88
|
+
const db = getDb();
|
|
129
89
|
// Find the token (not tenant-scoped since we only have the token)
|
|
130
90
|
const [tokenRecord] = await db
|
|
131
91
|
.select()
|
|
132
92
|
.from(schema.customerPasswordResetTokens)
|
|
133
|
-
.where(
|
|
93
|
+
.where(eq(schema.customerPasswordResetTokens.token, token))
|
|
134
94
|
.limit(1);
|
|
135
95
|
if (!tokenRecord) {
|
|
136
96
|
return {
|
|
@@ -143,7 +103,7 @@ async function validateResetToken(token) {
|
|
|
143
103
|
// Clean up expired token
|
|
144
104
|
await db
|
|
145
105
|
.delete(schema.customerPasswordResetTokens)
|
|
146
|
-
.where(
|
|
106
|
+
.where(eq(schema.customerPasswordResetTokens.id, tokenRecord.id));
|
|
147
107
|
return {
|
|
148
108
|
valid: false,
|
|
149
109
|
error: 'Reset link has expired. Please request a new one.',
|
|
@@ -169,13 +129,13 @@ async function validateResetToken(token) {
|
|
|
169
129
|
* }
|
|
170
130
|
* ```
|
|
171
131
|
*/
|
|
172
|
-
async function resetPassword(token, newPassword) {
|
|
173
|
-
const db =
|
|
132
|
+
export async function resetPassword(token, newPassword) {
|
|
133
|
+
const db = getDb();
|
|
174
134
|
// Find the token
|
|
175
135
|
const [tokenRecord] = await db
|
|
176
136
|
.select()
|
|
177
137
|
.from(schema.customerPasswordResetTokens)
|
|
178
|
-
.where(
|
|
138
|
+
.where(eq(schema.customerPasswordResetTokens.token, token))
|
|
179
139
|
.limit(1);
|
|
180
140
|
if (!tokenRecord) {
|
|
181
141
|
return {
|
|
@@ -188,18 +148,18 @@ async function resetPassword(token, newPassword) {
|
|
|
188
148
|
// Clean up expired token
|
|
189
149
|
await db
|
|
190
150
|
.delete(schema.customerPasswordResetTokens)
|
|
191
|
-
.where(
|
|
151
|
+
.where(eq(schema.customerPasswordResetTokens.id, tokenRecord.id));
|
|
192
152
|
return {
|
|
193
153
|
success: false,
|
|
194
154
|
error: 'Reset link has expired. Please request a new one.',
|
|
195
155
|
};
|
|
196
156
|
}
|
|
197
157
|
// Update the customer's password
|
|
198
|
-
await
|
|
158
|
+
await updateCustomerPassword(tokenRecord.customerId, newPassword);
|
|
199
159
|
// Delete all reset tokens for this customer
|
|
200
160
|
await db
|
|
201
161
|
.delete(schema.customerPasswordResetTokens)
|
|
202
|
-
.where(
|
|
162
|
+
.where(eq(schema.customerPasswordResetTokens.customerId, tokenRecord.customerId));
|
|
203
163
|
return { success: true };
|
|
204
164
|
}
|
|
205
165
|
/**
|
|
@@ -212,12 +172,12 @@ async function resetPassword(token, newPassword) {
|
|
|
212
172
|
* await deletePasswordResetTokens(customerId)
|
|
213
173
|
* ```
|
|
214
174
|
*/
|
|
215
|
-
async function deletePasswordResetTokens(customerId) {
|
|
216
|
-
const db =
|
|
217
|
-
const tenantId =
|
|
175
|
+
export async function deletePasswordResetTokens(customerId) {
|
|
176
|
+
const db = getDb();
|
|
177
|
+
const tenantId = getTenantId();
|
|
218
178
|
await db
|
|
219
179
|
.delete(schema.customerPasswordResetTokens)
|
|
220
|
-
.where(
|
|
180
|
+
.where(and(eq(schema.customerPasswordResetTokens.tenantId, tenantId), eq(schema.customerPasswordResetTokens.customerId, customerId)));
|
|
221
181
|
}
|
|
222
182
|
/**
|
|
223
183
|
* Clean up expired password reset tokens.
|
|
@@ -225,11 +185,11 @@ async function deletePasswordResetTokens(customerId) {
|
|
|
225
185
|
*
|
|
226
186
|
* @returns Number of tokens deleted
|
|
227
187
|
*/
|
|
228
|
-
async function cleanupExpiredResetTokens() {
|
|
229
|
-
const db =
|
|
188
|
+
export async function cleanupExpiredResetTokens() {
|
|
189
|
+
const db = getDb();
|
|
230
190
|
const result = await db
|
|
231
191
|
.delete(schema.customerPasswordResetTokens)
|
|
232
|
-
.where(
|
|
192
|
+
.where(lt(schema.customerPasswordResetTokens.expires, new Date()))
|
|
233
193
|
.returning({ id: schema.customerPasswordResetTokens.id });
|
|
234
194
|
return result.length;
|
|
235
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset-service.js","sourceRoot":"","sources":["../../../src/auth/server/password-reset-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"password-reset-service.js","sourceRoot":"","sources":["../../../src/auth/server/password-reset-service.ts"],"names":[],"mappings":"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"}
|