powr-sdk-web 6.15.1 → 6.17.1
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/auth/index.js +699 -185
- package/dist/components/PhoneInput.js +180 -26
- package/dist/onboarding/utils.js +3 -1
- package/dist/utils/phone.js +123 -1
- package/package.json +1 -1
package/dist/auth/index.js
CHANGED
|
@@ -10,6 +10,7 @@ var _firebase = require("../utils/firebase");
|
|
|
10
10
|
var _AddPhonePanel = _interopRequireDefault(require("../onboarding/AddPhonePanel"));
|
|
11
11
|
var _PhoneInput = _interopRequireDefault(require("../components/PhoneInput"));
|
|
12
12
|
var _utils = require("../onboarding/utils");
|
|
13
|
+
var _profileNameStep = require("../onboarding/steps/profileNameStep");
|
|
13
14
|
var _phone = require("../utils/phone");
|
|
14
15
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
15
16
|
var cache;
|
|
@@ -17,13 +18,13 @@ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e;
|
|
|
17
18
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
18
19
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
19
20
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
21
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
22
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
20
23
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
21
24
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
22
25
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
23
26
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
24
27
|
function _toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
|
|
25
|
-
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
26
|
-
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
27
28
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
28
29
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
29
30
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
@@ -48,6 +49,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
48
49
|
passwordResetHelpUrl = _ref$passwordResetHel === void 0 ? null : _ref$passwordResetHel,
|
|
49
50
|
_ref$passwordResetHel2 = _ref.passwordResetHelpLabel,
|
|
50
51
|
passwordResetHelpLabel = _ref$passwordResetHel2 === void 0 ? 'Forgot password? WhatsApp us' : _ref$passwordResetHel2,
|
|
52
|
+
_ref$forgotPasswordCh = _ref.forgotPasswordChannel,
|
|
53
|
+
forgotPasswordChannel = _ref$forgotPasswordCh === void 0 ? null : _ref$forgotPasswordCh,
|
|
54
|
+
_ref$otpApp = _ref.otpApp,
|
|
55
|
+
otpApp = _ref$otpApp === void 0 ? null : _ref$otpApp,
|
|
56
|
+
_ref$powrAccountUrl = _ref.powrAccountUrl,
|
|
57
|
+
powrAccountUrl = _ref$powrAccountUrl === void 0 ? 'https://lawazia.tech/#identity' : _ref$powrAccountUrl,
|
|
58
|
+
_ref$otpReset = _ref.otpReset,
|
|
59
|
+
otpReset = _ref$otpReset === void 0 ? false : _ref$otpReset,
|
|
51
60
|
_ref$completeProfileO = _ref.completeProfileOnLogin,
|
|
52
61
|
completeProfileOnLogin = _ref$completeProfileO === void 0 ? false : _ref$completeProfileO,
|
|
53
62
|
_ref$requireTerms = _ref.requireTerms,
|
|
@@ -63,6 +72,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
63
72
|
onSessionExpired = _ref.onSessionExpired;
|
|
64
73
|
var projectId = projectIdProp || config.projectId;
|
|
65
74
|
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
75
|
+
var resetChannel = forgotPasswordChannel || (otpReset ? 'otp' : 'whatsapp');
|
|
66
76
|
var _useState = (0, _react.useState)(function () {
|
|
67
77
|
switch (mode) {
|
|
68
78
|
case 'login':
|
|
@@ -122,55 +132,116 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
122
132
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
123
133
|
otpSent = _useState20[0],
|
|
124
134
|
setOtpSent = _useState20[1];
|
|
125
|
-
var _useState21 = (0, _react.useState)(
|
|
135
|
+
var _useState21 = (0, _react.useState)(null),
|
|
126
136
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
127
|
-
|
|
128
|
-
|
|
137
|
+
smsResetStep = _useState22[0],
|
|
138
|
+
setSmsResetStep = _useState22[1];
|
|
129
139
|
var _useState23 = (0, _react.useState)(''),
|
|
130
140
|
_useState24 = _slicedToArray(_useState23, 2),
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
var _useState25 = (0, _react.useState)(
|
|
141
|
+
smsOtp = _useState24[0],
|
|
142
|
+
setSmsOtp = _useState24[1];
|
|
143
|
+
var _useState25 = (0, _react.useState)(''),
|
|
134
144
|
_useState26 = _slicedToArray(_useState25, 2),
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var _useState27 = (0, _react.useState)(
|
|
145
|
+
smsNewPassword = _useState26[0],
|
|
146
|
+
setSmsNewPassword = _useState26[1];
|
|
147
|
+
var _useState27 = (0, _react.useState)(''),
|
|
138
148
|
_useState28 = _slicedToArray(_useState27, 2),
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
var _useState29 = (0, _react.useState)(
|
|
149
|
+
smsConfirmPassword = _useState28[0],
|
|
150
|
+
setSmsConfirmPassword = _useState28[1];
|
|
151
|
+
var _useState29 = (0, _react.useState)(null),
|
|
142
152
|
_useState30 = _slicedToArray(_useState29, 2),
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
var _useState31 = (0, _react.useState)(
|
|
153
|
+
smsVerifyAuth = _useState30[0],
|
|
154
|
+
setSmsVerifyAuth = _useState30[1];
|
|
155
|
+
var _useState31 = (0, _react.useState)('phone'),
|
|
146
156
|
_useState32 = _slicedToArray(_useState31, 2),
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
var _useState33 = (0, _react.useState)(
|
|
157
|
+
loginGate = _useState32[0],
|
|
158
|
+
setLoginGate = _useState32[1];
|
|
159
|
+
var _useState33 = (0, _react.useState)(false),
|
|
150
160
|
_useState34 = _slicedToArray(_useState33, 2),
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
var _useState35 = (0, _react.useState)(
|
|
161
|
+
otpLoading = _useState34[0],
|
|
162
|
+
setOtpLoading = _useState34[1];
|
|
163
|
+
var _useState35 = (0, _react.useState)(''),
|
|
154
164
|
_useState36 = _slicedToArray(_useState35, 2),
|
|
155
|
-
|
|
156
|
-
|
|
165
|
+
otp = _useState36[0],
|
|
166
|
+
setOtp = _useState36[1];
|
|
157
167
|
var _useState37 = (0, _react.useState)(false),
|
|
158
168
|
_useState38 = _slicedToArray(_useState37, 2),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var _useState39 = (0, _react.useState)(
|
|
169
|
+
firebaseOtpSent = _useState38[0],
|
|
170
|
+
setFirebaseOtpSent = _useState38[1];
|
|
171
|
+
var _useState39 = (0, _react.useState)(null),
|
|
162
172
|
_useState40 = _slicedToArray(_useState39, 2),
|
|
163
|
-
|
|
164
|
-
|
|
173
|
+
firebaseConfirm = _useState40[0],
|
|
174
|
+
setFirebaseConfirm = _useState40[1];
|
|
165
175
|
var _useState41 = (0, _react.useState)(false),
|
|
166
176
|
_useState42 = _slicedToArray(_useState41, 2),
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
var _useState43 = (0, _react.useState)(
|
|
177
|
+
showOtpModal = _useState42[0],
|
|
178
|
+
setShowOtpModal = _useState42[1];
|
|
179
|
+
var _useState43 = (0, _react.useState)(false),
|
|
170
180
|
_useState44 = _slicedToArray(_useState43, 2),
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var
|
|
181
|
+
isPhoneVerified = _useState44[0],
|
|
182
|
+
setIsPhoneVerified = _useState44[1];
|
|
183
|
+
var _useState45 = (0, _react.useState)('form'),
|
|
184
|
+
_useState46 = _slicedToArray(_useState45, 2),
|
|
185
|
+
authView = _useState46[0],
|
|
186
|
+
setAuthView = _useState46[1];
|
|
187
|
+
var _useState47 = (0, _react.useState)(null),
|
|
188
|
+
_useState48 = _slicedToArray(_useState47, 2),
|
|
189
|
+
pendingAuth = _useState48[0],
|
|
190
|
+
setPendingAuth = _useState48[1];
|
|
191
|
+
var _useState49 = (0, _react.useState)(false),
|
|
192
|
+
_useState50 = _slicedToArray(_useState49, 2),
|
|
193
|
+
termsAccepted = _useState50[0],
|
|
194
|
+
setTermsAccepted = _useState50[1];
|
|
195
|
+
var _useState51 = (0, _react.useState)(resolvedDefaultCountry),
|
|
196
|
+
_useState52 = _slicedToArray(_useState51, 2),
|
|
197
|
+
phoneCountry = _useState52[0],
|
|
198
|
+
setPhoneCountry = _useState52[1];
|
|
199
|
+
var _useState53 = (0, _react.useState)(false),
|
|
200
|
+
_useState54 = _slicedToArray(_useState53, 2),
|
|
201
|
+
registerPhoneValid = _useState54[0],
|
|
202
|
+
setRegisterPhoneValid = _useState54[1];
|
|
203
|
+
var _useState55 = (0, _react.useState)(''),
|
|
204
|
+
_useState56 = _slicedToArray(_useState55, 2),
|
|
205
|
+
registerPhoneE164 = _useState56[0],
|
|
206
|
+
setRegisterPhoneE164 = _useState56[1];
|
|
207
|
+
var shouldShowToggle = false;
|
|
208
|
+
var askForProfile = true;
|
|
209
|
+
var finishWithSession = function finishWithSession(data) {
|
|
210
|
+
if (!(data !== null && data !== void 0 && data.token)) return;
|
|
211
|
+
if (askForProfile && data.user && (0, _utils.needsPhone)(data.user)) {
|
|
212
|
+
setPendingAuth({
|
|
213
|
+
user: data.user,
|
|
214
|
+
token: data.token,
|
|
215
|
+
refreshToken: data.refreshToken,
|
|
216
|
+
onTokenRefreshed: function onTokenRefreshed(newToken) {
|
|
217
|
+
setPendingAuth(function (prev) {
|
|
218
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
219
|
+
token: newToken
|
|
220
|
+
}) : prev;
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
setAuthView('add-phone');
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (askForProfile && data.user && (0, _utils.needsProfileName)(data.user)) {
|
|
228
|
+
setPendingAuth({
|
|
229
|
+
user: data.user,
|
|
230
|
+
token: data.token,
|
|
231
|
+
refreshToken: data.refreshToken,
|
|
232
|
+
onTokenRefreshed: function onTokenRefreshed(newToken) {
|
|
233
|
+
setPendingAuth(function (prev) {
|
|
234
|
+
return prev ? _objectSpread(_objectSpread({}, prev), {}, {
|
|
235
|
+
token: newToken
|
|
236
|
+
}) : prev;
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
setAuthView('add-name');
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (onLogin) onLogin(data);
|
|
244
|
+
};
|
|
174
245
|
var handleInputChange = /*#__PURE__*/function () {
|
|
175
246
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
176
247
|
var _e$target, name, value;
|
|
@@ -401,48 +472,144 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
401
472
|
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
402
473
|
return emailRegex.test(email);
|
|
403
474
|
};
|
|
475
|
+
var storedPhone = function storedPhone() {
|
|
476
|
+
return registerPhoneE164 || (0, _phone.coercePhoneForStorage)(formData.phoneOrEmail.trim(), phoneCountry) || (0, _phone.coercePhoneForStorage)(formData.phoneOrEmail.trim(), resolvedDefaultCountry) || (0, _phone.normalizePhone)(formData.phoneOrEmail.trim(), phoneCountry);
|
|
477
|
+
};
|
|
478
|
+
var isIndiaNumber = function isIndiaNumber() {
|
|
479
|
+
var e164 = storedPhone() || '';
|
|
480
|
+
return e164.startsWith('+91') || phoneCountry === 'IN';
|
|
481
|
+
};
|
|
482
|
+
var continuePhone = /*#__PURE__*/function () {
|
|
483
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
|
|
484
|
+
var phoneOrEmail, _yield$apiCall, data, ok, _t5;
|
|
485
|
+
return _regenerator().w(function (_context4) {
|
|
486
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
487
|
+
case 0:
|
|
488
|
+
phoneOrEmail = storedPhone();
|
|
489
|
+
if (registerPhoneValid) {
|
|
490
|
+
_context4.n = 1;
|
|
491
|
+
break;
|
|
492
|
+
}
|
|
493
|
+
setFieldErrors({
|
|
494
|
+
phoneOrEmail: 'Enter a valid mobile number'
|
|
495
|
+
});
|
|
496
|
+
return _context4.a(2);
|
|
497
|
+
case 1:
|
|
498
|
+
setLoading(true);
|
|
499
|
+
setError('');
|
|
500
|
+
setSuccess('');
|
|
501
|
+
_context4.p = 2;
|
|
502
|
+
_context4.n = 3;
|
|
503
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login-options', projectId, {
|
|
504
|
+
method: 'POST',
|
|
505
|
+
body: {
|
|
506
|
+
phoneOrEmail: phoneOrEmail,
|
|
507
|
+
mobile: smsMobile()
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
case 3:
|
|
511
|
+
_yield$apiCall = _context4.v;
|
|
512
|
+
data = _yield$apiCall.data;
|
|
513
|
+
ok = _yield$apiCall.ok;
|
|
514
|
+
if (!(ok && data.exists && data.hasPassword)) {
|
|
515
|
+
_context4.n = 4;
|
|
516
|
+
break;
|
|
517
|
+
}
|
|
518
|
+
setLoginGate('password');
|
|
519
|
+
setSuccess('');
|
|
520
|
+
return _context4.a(2);
|
|
521
|
+
case 4:
|
|
522
|
+
if (!(resetChannel === 'otp')) {
|
|
523
|
+
_context4.n = 8;
|
|
524
|
+
break;
|
|
525
|
+
}
|
|
526
|
+
if (isIndiaNumber()) {
|
|
527
|
+
_context4.n = 5;
|
|
528
|
+
break;
|
|
529
|
+
}
|
|
530
|
+
setLoginGate('password');
|
|
531
|
+
setError('SMS is for Indian numbers. Sign in with your password.');
|
|
532
|
+
return _context4.a(2);
|
|
533
|
+
case 5:
|
|
534
|
+
if (!ok) {
|
|
535
|
+
_context4.n = 7;
|
|
536
|
+
break;
|
|
537
|
+
}
|
|
538
|
+
setLoading(false);
|
|
539
|
+
_context4.n = 6;
|
|
540
|
+
return handleSmsForgotStart();
|
|
541
|
+
case 6:
|
|
542
|
+
return _context4.a(2);
|
|
543
|
+
case 7:
|
|
544
|
+
setLoginGate('password');
|
|
545
|
+
return _context4.a(2);
|
|
546
|
+
case 8:
|
|
547
|
+
if (!(ok && (!data.exists || !data.hasPassword))) {
|
|
548
|
+
_context4.n = 9;
|
|
549
|
+
break;
|
|
550
|
+
}
|
|
551
|
+
setLoginGate('help');
|
|
552
|
+
return _context4.a(2);
|
|
553
|
+
case 9:
|
|
554
|
+
setLoginGate('password');
|
|
555
|
+
_context4.n = 11;
|
|
556
|
+
break;
|
|
557
|
+
case 10:
|
|
558
|
+
_context4.p = 10;
|
|
559
|
+
_t5 = _context4.v;
|
|
560
|
+
setLoginGate('password');
|
|
561
|
+
case 11:
|
|
562
|
+
_context4.p = 11;
|
|
563
|
+
setLoading(false);
|
|
564
|
+
return _context4.f(11);
|
|
565
|
+
case 12:
|
|
566
|
+
return _context4.a(2);
|
|
567
|
+
}
|
|
568
|
+
}, _callee4, null, [[2, 10, 11, 12]]);
|
|
569
|
+
}));
|
|
570
|
+
return function continuePhone() {
|
|
571
|
+
return _ref6.apply(this, arguments);
|
|
572
|
+
};
|
|
573
|
+
}();
|
|
404
574
|
var handleSubmit = /*#__PURE__*/function () {
|
|
405
|
-
var
|
|
575
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(e) {
|
|
406
576
|
var skipPhoneValidation,
|
|
407
577
|
errors,
|
|
408
578
|
value,
|
|
409
|
-
isEmail,
|
|
410
579
|
endpoint,
|
|
411
580
|
normalizedPhone,
|
|
412
581
|
payload,
|
|
413
|
-
_yield$
|
|
582
|
+
_yield$apiCall2,
|
|
414
583
|
data,
|
|
415
584
|
ok,
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
585
|
+
_login$data,
|
|
586
|
+
login,
|
|
587
|
+
_args5 = arguments,
|
|
588
|
+
_t6;
|
|
589
|
+
return _regenerator().w(function (_context5) {
|
|
590
|
+
while (1) switch (_context5.p = _context5.n) {
|
|
420
591
|
case 0:
|
|
421
|
-
skipPhoneValidation =
|
|
592
|
+
skipPhoneValidation = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : false;
|
|
422
593
|
if (e) e.preventDefault();
|
|
423
|
-
setLoading(true);
|
|
424
594
|
setError('');
|
|
425
595
|
setSuccess('');
|
|
426
596
|
setFieldErrors({});
|
|
427
597
|
errors = {};
|
|
428
598
|
value = formData.phoneOrEmail.trim();
|
|
429
|
-
|
|
599
|
+
if (!(isLogin && loginGate === 'phone' && !smsResetStep)) {
|
|
600
|
+
_context5.n = 2;
|
|
601
|
+
break;
|
|
602
|
+
}
|
|
603
|
+
_context5.n = 1;
|
|
604
|
+
return continuePhone();
|
|
605
|
+
case 1:
|
|
606
|
+
return _context5.a(2);
|
|
607
|
+
case 2:
|
|
430
608
|
if (!formData.phoneOrEmail.trim()) {
|
|
431
|
-
errors.phoneOrEmail =
|
|
609
|
+
errors.phoneOrEmail = 'Phone number is required';
|
|
432
610
|
}
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
if (!isLogin && !registerPhoneValid) {
|
|
436
|
-
errors.phoneOrEmail = international ? 'Please enter a valid phone number' : 'Please enter a valid mobile number';
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
// Login: Allow both phone and email
|
|
440
|
-
if (isLogin) {
|
|
441
|
-
if (isEmail && !isValidEmail(value)) {
|
|
442
|
-
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
443
|
-
} else if (!isEmail && !(0, _phone.coercePhoneForStorage)(value, resolvedDefaultCountry)) {
|
|
444
|
-
errors.phoneOrEmail = 'Please enter a valid phone number (include country code, e.g. +1…) or email';
|
|
445
|
-
}
|
|
611
|
+
if (!registerPhoneValid && !storedPhone()) {
|
|
612
|
+
errors.phoneOrEmail = 'Please enter a valid mobile number';
|
|
446
613
|
}
|
|
447
614
|
if (!formData.password.trim()) {
|
|
448
615
|
errors.password = 'Password is required';
|
|
@@ -462,72 +629,62 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
462
629
|
errors.terms = 'Please accept the terms to continue';
|
|
463
630
|
}
|
|
464
631
|
if (!(Object.keys(errors).length > 0)) {
|
|
465
|
-
|
|
632
|
+
_context5.n = 3;
|
|
466
633
|
break;
|
|
467
634
|
}
|
|
468
635
|
setFieldErrors(errors);
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
636
|
+
return _context5.a(2);
|
|
637
|
+
case 3:
|
|
638
|
+
setLoading(true);
|
|
639
|
+
_context5.p = 4;
|
|
473
640
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
474
|
-
normalizedPhone =
|
|
641
|
+
normalizedPhone = storedPhone() || value;
|
|
475
642
|
payload = isLogin ? {
|
|
476
|
-
phoneOrEmail:
|
|
643
|
+
phoneOrEmail: normalizedPhone,
|
|
477
644
|
password: formData.password
|
|
478
645
|
} : {
|
|
479
646
|
fullName: formData.fullName,
|
|
480
647
|
phoneOrEmail: normalizedPhone,
|
|
481
648
|
password: formData.password
|
|
482
649
|
};
|
|
483
|
-
|
|
650
|
+
_context5.n = 5;
|
|
484
651
|
return (0, _auth.apiCall)(apiUrl, endpoint, projectId, {
|
|
485
652
|
method: 'POST',
|
|
486
653
|
body: payload
|
|
487
654
|
});
|
|
488
|
-
case
|
|
489
|
-
_yield$
|
|
490
|
-
data = _yield$
|
|
491
|
-
ok = _yield$
|
|
655
|
+
case 5:
|
|
656
|
+
_yield$apiCall2 = _context5.v;
|
|
657
|
+
data = _yield$apiCall2.data;
|
|
658
|
+
ok = _yield$apiCall2.ok;
|
|
492
659
|
if (!ok) {
|
|
493
|
-
|
|
660
|
+
_context5.n = 9;
|
|
494
661
|
break;
|
|
495
662
|
}
|
|
496
663
|
setSuccess(isLogin ? 'Login successful!' : 'Registration successful!');
|
|
497
664
|
if (!isLogin) {
|
|
498
|
-
|
|
499
|
-
break;
|
|
500
|
-
}
|
|
501
|
-
if (!(completeProfileOnLogin && (0, _utils.needsPhone)(data.user))) {
|
|
502
|
-
_context4.n = 3;
|
|
665
|
+
_context5.n = 6;
|
|
503
666
|
break;
|
|
504
667
|
}
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
668
|
+
finishWithSession(data);
|
|
669
|
+
_context5.n = 8;
|
|
670
|
+
break;
|
|
671
|
+
case 6:
|
|
672
|
+
_context5.n = 7;
|
|
673
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login', projectId, {
|
|
674
|
+
method: 'POST',
|
|
675
|
+
body: {
|
|
676
|
+
phoneOrEmail: normalizedPhone,
|
|
677
|
+
password: formData.password
|
|
515
678
|
}
|
|
516
679
|
});
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
if (
|
|
522
|
-
onLogin(data);
|
|
523
|
-
}
|
|
524
|
-
_context4.n = 5;
|
|
525
|
-
break;
|
|
526
|
-
case 4:
|
|
527
|
-
if (!isLogin && onRegister) {
|
|
680
|
+
case 7:
|
|
681
|
+
login = _context5.v;
|
|
682
|
+
if (login.ok && (_login$data = login.data) !== null && _login$data !== void 0 && _login$data.token) {
|
|
683
|
+
if (onLogin) finishWithSession(login.data);else if (onRegister) onRegister(login.data);
|
|
684
|
+
} else if (onRegister) {
|
|
528
685
|
onRegister(data);
|
|
529
686
|
}
|
|
530
|
-
case
|
|
687
|
+
case 8:
|
|
531
688
|
setFormData({
|
|
532
689
|
phoneOrEmail: '',
|
|
533
690
|
password: '',
|
|
@@ -538,9 +695,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
538
695
|
setOtp('');
|
|
539
696
|
setFirebaseOtpSent(false);
|
|
540
697
|
setFirebaseConfirm(null);
|
|
541
|
-
|
|
698
|
+
_context5.n = 10;
|
|
542
699
|
break;
|
|
543
|
-
case
|
|
700
|
+
case 9:
|
|
544
701
|
if (data.message) {
|
|
545
702
|
setError(data.message);
|
|
546
703
|
} else if (data.error) {
|
|
@@ -554,24 +711,24 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
554
711
|
} else {
|
|
555
712
|
setError("".concat(isLogin ? 'Login' : 'Registration', " failed. Please try again."));
|
|
556
713
|
}
|
|
557
|
-
case
|
|
558
|
-
|
|
714
|
+
case 10:
|
|
715
|
+
_context5.n = 12;
|
|
559
716
|
break;
|
|
560
|
-
case
|
|
561
|
-
|
|
562
|
-
|
|
717
|
+
case 11:
|
|
718
|
+
_context5.p = 11;
|
|
719
|
+
_t6 = _context5.v;
|
|
563
720
|
setError('Network error. Please try again.');
|
|
564
|
-
case
|
|
565
|
-
|
|
721
|
+
case 12:
|
|
722
|
+
_context5.p = 12;
|
|
566
723
|
setLoading(false);
|
|
567
|
-
return
|
|
568
|
-
case
|
|
569
|
-
return
|
|
724
|
+
return _context5.f(12);
|
|
725
|
+
case 13:
|
|
726
|
+
return _context5.a(2);
|
|
570
727
|
}
|
|
571
|
-
},
|
|
728
|
+
}, _callee5, null, [[4, 11, 12, 13]]);
|
|
572
729
|
}));
|
|
573
730
|
return function handleSubmit(_x3) {
|
|
574
|
-
return
|
|
731
|
+
return _ref7.apply(this, arguments);
|
|
575
732
|
};
|
|
576
733
|
}();
|
|
577
734
|
var toggleMode = function toggleMode() {
|
|
@@ -631,26 +788,313 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
631
788
|
}
|
|
632
789
|
setError('Your session timed out. Sign in again to add your phone number.');
|
|
633
790
|
};
|
|
791
|
+
var smsMobile = function smsMobile() {
|
|
792
|
+
var digits = formData.phoneOrEmail.replace(/\D/g, '');
|
|
793
|
+
if (digits.length === 10) return digits;
|
|
794
|
+
if (digits.length === 12 && digits.startsWith('91')) return digits.slice(2);
|
|
795
|
+
if (digits.length === 11 && digits.startsWith('0')) return digits.slice(1);
|
|
796
|
+
return digits;
|
|
797
|
+
};
|
|
798
|
+
var hostOtp = /*#__PURE__*/function () {
|
|
799
|
+
var _ref8 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(path, extra) {
|
|
800
|
+
var body, app, _yield$apiCall3, data, ok;
|
|
801
|
+
return _regenerator().w(function (_context6) {
|
|
802
|
+
while (1) switch (_context6.n) {
|
|
803
|
+
case 0:
|
|
804
|
+
body = _objectSpread({
|
|
805
|
+
mobile: smsMobile()
|
|
806
|
+
}, extra);
|
|
807
|
+
app = otpApp && String(otpApp).trim();
|
|
808
|
+
if (app) body.app = app;
|
|
809
|
+
_context6.n = 1;
|
|
810
|
+
return (0, _auth.apiCall)(apiUrl, path, projectId, {
|
|
811
|
+
method: 'POST',
|
|
812
|
+
body: body
|
|
813
|
+
});
|
|
814
|
+
case 1:
|
|
815
|
+
_yield$apiCall3 = _context6.v;
|
|
816
|
+
data = _yield$apiCall3.data;
|
|
817
|
+
ok = _yield$apiCall3.ok;
|
|
818
|
+
if (!(!ok || data.success === false)) {
|
|
819
|
+
_context6.n = 2;
|
|
820
|
+
break;
|
|
821
|
+
}
|
|
822
|
+
throw new Error(data.message || 'Could not complete the phone check');
|
|
823
|
+
case 2:
|
|
824
|
+
return _context6.a(2, data);
|
|
825
|
+
}
|
|
826
|
+
}, _callee6);
|
|
827
|
+
}));
|
|
828
|
+
return function hostOtp(_x4, _x5) {
|
|
829
|
+
return _ref8.apply(this, arguments);
|
|
830
|
+
};
|
|
831
|
+
}();
|
|
832
|
+
var handleSmsForgotStart = /*#__PURE__*/function () {
|
|
833
|
+
var _ref9 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7() {
|
|
834
|
+
var _t7;
|
|
835
|
+
return _regenerator().w(function (_context7) {
|
|
836
|
+
while (1) switch (_context7.p = _context7.n) {
|
|
837
|
+
case 0:
|
|
838
|
+
if (!(resetChannel !== 'otp')) {
|
|
839
|
+
_context7.n = 1;
|
|
840
|
+
break;
|
|
841
|
+
}
|
|
842
|
+
return _context7.a(2);
|
|
843
|
+
case 1:
|
|
844
|
+
if (!(!isIndiaNumber() || smsMobile().length !== 10)) {
|
|
845
|
+
_context7.n = 2;
|
|
846
|
+
break;
|
|
847
|
+
}
|
|
848
|
+
setFieldErrors({
|
|
849
|
+
phoneOrEmail: 'SMS is for a 10-digit Indian mobile'
|
|
850
|
+
});
|
|
851
|
+
return _context7.a(2);
|
|
852
|
+
case 2:
|
|
853
|
+
setSmsOtp('');
|
|
854
|
+
setSmsResetStep('otp');
|
|
855
|
+
setOtpLoading(true);
|
|
856
|
+
setError('');
|
|
857
|
+
setSuccess('Sending a code…');
|
|
858
|
+
_context7.p = 3;
|
|
859
|
+
_context7.n = 4;
|
|
860
|
+
return hostOtp('/auth/send-otp');
|
|
861
|
+
case 4:
|
|
862
|
+
setSuccess('Code sent. Enter the 5-digit SMS.');
|
|
863
|
+
_context7.n = 6;
|
|
864
|
+
break;
|
|
865
|
+
case 5:
|
|
866
|
+
_context7.p = 5;
|
|
867
|
+
_t7 = _context7.v;
|
|
868
|
+
setSmsResetStep(null);
|
|
869
|
+
setSuccess('');
|
|
870
|
+
setError(_t7.message || 'Could not send the code.');
|
|
871
|
+
case 6:
|
|
872
|
+
_context7.p = 6;
|
|
873
|
+
setOtpLoading(false);
|
|
874
|
+
return _context7.f(6);
|
|
875
|
+
case 7:
|
|
876
|
+
return _context7.a(2);
|
|
877
|
+
}
|
|
878
|
+
}, _callee7, null, [[3, 5, 6, 7]]);
|
|
879
|
+
}));
|
|
880
|
+
return function handleSmsForgotStart() {
|
|
881
|
+
return _ref9.apply(this, arguments);
|
|
882
|
+
};
|
|
883
|
+
}();
|
|
884
|
+
var handleSmsVerify = /*#__PURE__*/function () {
|
|
885
|
+
var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {
|
|
886
|
+
var code, data, _t8;
|
|
887
|
+
return _regenerator().w(function (_context8) {
|
|
888
|
+
while (1) switch (_context8.p = _context8.n) {
|
|
889
|
+
case 0:
|
|
890
|
+
code = smsOtp.replace(/\D/g, '').slice(0, 5);
|
|
891
|
+
if (!(code.length !== 5)) {
|
|
892
|
+
_context8.n = 1;
|
|
893
|
+
break;
|
|
894
|
+
}
|
|
895
|
+
setError('Enter the 5-digit code.');
|
|
896
|
+
return _context8.a(2);
|
|
897
|
+
case 1:
|
|
898
|
+
setOtpLoading(true);
|
|
899
|
+
setError('');
|
|
900
|
+
_context8.p = 2;
|
|
901
|
+
_context8.n = 3;
|
|
902
|
+
return hostOtp('/auth/verify-otp', {
|
|
903
|
+
otp: code
|
|
904
|
+
});
|
|
905
|
+
case 3:
|
|
906
|
+
data = _context8.v;
|
|
907
|
+
setSmsVerifyAuth(data);
|
|
908
|
+
setSmsNewPassword('');
|
|
909
|
+
setSmsConfirmPassword('');
|
|
910
|
+
setSmsResetStep('password');
|
|
911
|
+
setSuccess(data.user ? 'Phone confirmed. Set a new password.' : 'Create a password. Next time you sign in with this number and password.');
|
|
912
|
+
_context8.n = 5;
|
|
913
|
+
break;
|
|
914
|
+
case 4:
|
|
915
|
+
_context8.p = 4;
|
|
916
|
+
_t8 = _context8.v;
|
|
917
|
+
setError(_t8.message || 'Could not verify the code.');
|
|
918
|
+
case 5:
|
|
919
|
+
_context8.p = 5;
|
|
920
|
+
setOtpLoading(false);
|
|
921
|
+
return _context8.f(5);
|
|
922
|
+
case 6:
|
|
923
|
+
return _context8.a(2);
|
|
924
|
+
}
|
|
925
|
+
}, _callee8, null, [[2, 4, 5, 6]]);
|
|
926
|
+
}));
|
|
927
|
+
return function handleSmsVerify() {
|
|
928
|
+
return _ref0.apply(this, arguments);
|
|
929
|
+
};
|
|
930
|
+
}();
|
|
931
|
+
var handleSmsSavePassword = /*#__PURE__*/function () {
|
|
932
|
+
var _ref1 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee0() {
|
|
933
|
+
var phoneOrEmail, resetExisting, registered, _registered$data, msg, login, _login$data2, _t9;
|
|
934
|
+
return _regenerator().w(function (_context0) {
|
|
935
|
+
while (1) switch (_context0.p = _context0.n) {
|
|
936
|
+
case 0:
|
|
937
|
+
if (!(smsNewPassword.length < 6)) {
|
|
938
|
+
_context0.n = 1;
|
|
939
|
+
break;
|
|
940
|
+
}
|
|
941
|
+
setError('Password must be at least 6 characters');
|
|
942
|
+
return _context0.a(2);
|
|
943
|
+
case 1:
|
|
944
|
+
if (!(smsNewPassword !== smsConfirmPassword)) {
|
|
945
|
+
_context0.n = 2;
|
|
946
|
+
break;
|
|
947
|
+
}
|
|
948
|
+
setError('Passwords do not match');
|
|
949
|
+
return _context0.a(2);
|
|
950
|
+
case 2:
|
|
951
|
+
phoneOrEmail = storedPhone() || formData.phoneOrEmail.trim();
|
|
952
|
+
setOtpLoading(true);
|
|
953
|
+
setError('');
|
|
954
|
+
_context0.p = 3;
|
|
955
|
+
resetExisting = /*#__PURE__*/function () {
|
|
956
|
+
var _ref10 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee9() {
|
|
957
|
+
var _forgot$data;
|
|
958
|
+
var forgot, _forgot$data2, reset, _reset$data;
|
|
959
|
+
return _regenerator().w(function (_context9) {
|
|
960
|
+
while (1) switch (_context9.n) {
|
|
961
|
+
case 0:
|
|
962
|
+
_context9.n = 1;
|
|
963
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/forgot-password', projectId, {
|
|
964
|
+
method: 'POST',
|
|
965
|
+
body: {
|
|
966
|
+
phoneOrEmail: phoneOrEmail
|
|
967
|
+
}
|
|
968
|
+
});
|
|
969
|
+
case 1:
|
|
970
|
+
forgot = _context9.v;
|
|
971
|
+
if (!(!forgot.ok || !((_forgot$data = forgot.data) !== null && _forgot$data !== void 0 && _forgot$data.resetToken))) {
|
|
972
|
+
_context9.n = 2;
|
|
973
|
+
break;
|
|
974
|
+
}
|
|
975
|
+
throw new Error(((_forgot$data2 = forgot.data) === null || _forgot$data2 === void 0 ? void 0 : _forgot$data2.message) || 'Could not reset password.');
|
|
976
|
+
case 2:
|
|
977
|
+
_context9.n = 3;
|
|
978
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/reset-password', projectId, {
|
|
979
|
+
method: 'POST',
|
|
980
|
+
body: {
|
|
981
|
+
resetToken: forgot.data.resetToken,
|
|
982
|
+
newPassword: smsNewPassword
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
case 3:
|
|
986
|
+
reset = _context9.v;
|
|
987
|
+
if (reset.ok) {
|
|
988
|
+
_context9.n = 4;
|
|
989
|
+
break;
|
|
990
|
+
}
|
|
991
|
+
throw new Error(((_reset$data = reset.data) === null || _reset$data === void 0 ? void 0 : _reset$data.message) || 'Could not save the new password.');
|
|
992
|
+
case 4:
|
|
993
|
+
return _context9.a(2);
|
|
994
|
+
}
|
|
995
|
+
}, _callee9);
|
|
996
|
+
}));
|
|
997
|
+
return function resetExisting() {
|
|
998
|
+
return _ref10.apply(this, arguments);
|
|
999
|
+
};
|
|
1000
|
+
}();
|
|
1001
|
+
if (!(smsVerifyAuth !== null && smsVerifyAuth !== void 0 && smsVerifyAuth.user)) {
|
|
1002
|
+
_context0.n = 5;
|
|
1003
|
+
break;
|
|
1004
|
+
}
|
|
1005
|
+
_context0.n = 4;
|
|
1006
|
+
return resetExisting();
|
|
1007
|
+
case 4:
|
|
1008
|
+
_context0.n = 9;
|
|
1009
|
+
break;
|
|
1010
|
+
case 5:
|
|
1011
|
+
_context0.n = 6;
|
|
1012
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/register', projectId, {
|
|
1013
|
+
method: 'POST',
|
|
1014
|
+
body: {
|
|
1015
|
+
fullName: (formData.fullName || '').trim() || 'User',
|
|
1016
|
+
phoneOrEmail: phoneOrEmail,
|
|
1017
|
+
password: smsNewPassword
|
|
1018
|
+
}
|
|
1019
|
+
});
|
|
1020
|
+
case 6:
|
|
1021
|
+
registered = _context0.v;
|
|
1022
|
+
if (registered.ok) {
|
|
1023
|
+
_context0.n = 9;
|
|
1024
|
+
break;
|
|
1025
|
+
}
|
|
1026
|
+
msg = ((_registered$data = registered.data) === null || _registered$data === void 0 ? void 0 : _registered$data.message) || '';
|
|
1027
|
+
if (!/exist|already|registered/i.test(msg)) {
|
|
1028
|
+
_context0.n = 8;
|
|
1029
|
+
break;
|
|
1030
|
+
}
|
|
1031
|
+
_context0.n = 7;
|
|
1032
|
+
return resetExisting();
|
|
1033
|
+
case 7:
|
|
1034
|
+
_context0.n = 9;
|
|
1035
|
+
break;
|
|
1036
|
+
case 8:
|
|
1037
|
+
throw new Error(msg || 'Could not create the account.');
|
|
1038
|
+
case 9:
|
|
1039
|
+
_context0.n = 10;
|
|
1040
|
+
return (0, _auth.apiCall)(apiUrl, '/auth/login', projectId, {
|
|
1041
|
+
method: 'POST',
|
|
1042
|
+
body: {
|
|
1043
|
+
phoneOrEmail: phoneOrEmail,
|
|
1044
|
+
password: smsNewPassword
|
|
1045
|
+
}
|
|
1046
|
+
});
|
|
1047
|
+
case 10:
|
|
1048
|
+
login = _context0.v;
|
|
1049
|
+
if (login.ok) {
|
|
1050
|
+
_context0.n = 11;
|
|
1051
|
+
break;
|
|
1052
|
+
}
|
|
1053
|
+
throw new Error(((_login$data2 = login.data) === null || _login$data2 === void 0 ? void 0 : _login$data2.message) || 'Password saved. Sign in with it.');
|
|
1054
|
+
case 11:
|
|
1055
|
+
setSmsResetStep(null);
|
|
1056
|
+
setSmsVerifyAuth(null);
|
|
1057
|
+
setSuccess('Password saved.');
|
|
1058
|
+
finishWithSession(login.data);
|
|
1059
|
+
_context0.n = 13;
|
|
1060
|
+
break;
|
|
1061
|
+
case 12:
|
|
1062
|
+
_context0.p = 12;
|
|
1063
|
+
_t9 = _context0.v;
|
|
1064
|
+
setError(_t9.message || 'Could not reset password.');
|
|
1065
|
+
case 13:
|
|
1066
|
+
_context0.p = 13;
|
|
1067
|
+
setOtpLoading(false);
|
|
1068
|
+
return _context0.f(13);
|
|
1069
|
+
case 14:
|
|
1070
|
+
return _context0.a(2);
|
|
1071
|
+
}
|
|
1072
|
+
}, _callee0, null, [[3, 12, 13, 14]]);
|
|
1073
|
+
}));
|
|
1074
|
+
return function handleSmsSavePassword() {
|
|
1075
|
+
return _ref1.apply(this, arguments);
|
|
1076
|
+
};
|
|
1077
|
+
}();
|
|
634
1078
|
var handleGetOtp = /*#__PURE__*/function () {
|
|
635
|
-
var
|
|
636
|
-
var _yield$
|
|
637
|
-
return _regenerator().w(function (
|
|
638
|
-
while (1) switch (
|
|
1079
|
+
var _ref11 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee1() {
|
|
1080
|
+
var _yield$apiCall4, data, ok, _t0;
|
|
1081
|
+
return _regenerator().w(function (_context1) {
|
|
1082
|
+
while (1) switch (_context1.p = _context1.n) {
|
|
639
1083
|
case 0:
|
|
640
1084
|
if (formData.phoneOrEmail.trim()) {
|
|
641
|
-
|
|
1085
|
+
_context1.n = 1;
|
|
642
1086
|
break;
|
|
643
1087
|
}
|
|
644
1088
|
setFieldErrors({
|
|
645
1089
|
phoneOrEmail: 'Phone or email is required for OTP'
|
|
646
1090
|
});
|
|
647
|
-
return
|
|
1091
|
+
return _context1.a(2);
|
|
648
1092
|
case 1:
|
|
649
1093
|
setOtpLoading(true);
|
|
650
1094
|
setError('');
|
|
651
1095
|
setFieldErrors({});
|
|
652
|
-
|
|
653
|
-
|
|
1096
|
+
_context1.p = 2;
|
|
1097
|
+
_context1.n = 3;
|
|
654
1098
|
return (0, _auth.apiCall)(apiUrl, "/auth/send-otp", projectId, {
|
|
655
1099
|
method: 'POST',
|
|
656
1100
|
body: {
|
|
@@ -658,9 +1102,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
658
1102
|
}
|
|
659
1103
|
});
|
|
660
1104
|
case 3:
|
|
661
|
-
_yield$
|
|
662
|
-
data = _yield$
|
|
663
|
-
ok = _yield$
|
|
1105
|
+
_yield$apiCall4 = _context1.v;
|
|
1106
|
+
data = _yield$apiCall4.data;
|
|
1107
|
+
ok = _yield$apiCall4.ok;
|
|
664
1108
|
if (ok) {
|
|
665
1109
|
setOtpSent(true);
|
|
666
1110
|
setSuccess('OTP sent successfully! Check your phone/email.');
|
|
@@ -668,23 +1112,23 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
668
1112
|
} else {
|
|
669
1113
|
setError(data.message || 'Failed to send OTP. Please try again.');
|
|
670
1114
|
}
|
|
671
|
-
|
|
1115
|
+
_context1.n = 5;
|
|
672
1116
|
break;
|
|
673
1117
|
case 4:
|
|
674
|
-
|
|
675
|
-
|
|
1118
|
+
_context1.p = 4;
|
|
1119
|
+
_t0 = _context1.v;
|
|
676
1120
|
setError('Network error. Please try again.');
|
|
677
1121
|
case 5:
|
|
678
|
-
|
|
1122
|
+
_context1.p = 5;
|
|
679
1123
|
setOtpLoading(false);
|
|
680
|
-
return
|
|
1124
|
+
return _context1.f(5);
|
|
681
1125
|
case 6:
|
|
682
|
-
return
|
|
1126
|
+
return _context1.a(2);
|
|
683
1127
|
}
|
|
684
|
-
},
|
|
1128
|
+
}, _callee1, null, [[2, 4, 5, 6]]);
|
|
685
1129
|
}));
|
|
686
1130
|
return function handleGetOtp() {
|
|
687
|
-
return
|
|
1131
|
+
return _ref11.apply(this, arguments);
|
|
688
1132
|
};
|
|
689
1133
|
}();
|
|
690
1134
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -705,7 +1149,10 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
705
1149
|
style: styles.subtitleContainer
|
|
706
1150
|
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
707
1151
|
style: styles.subtitle
|
|
708
|
-
}, isLogin ? 'Sign in to your ' : 'Create your ', /*#__PURE__*/_react["default"].createElement("
|
|
1152
|
+
}, isLogin ? 'Sign in to your ' : 'Create your ', powrAccountUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
1153
|
+
href: powrAccountUrl,
|
|
1154
|
+
target: "_blank",
|
|
1155
|
+
rel: "noopener noreferrer",
|
|
709
1156
|
style: styles.powrAccountText,
|
|
710
1157
|
onMouseEnter: function onMouseEnter() {
|
|
711
1158
|
return setShowTooltip(true);
|
|
@@ -713,9 +1160,34 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
713
1160
|
onMouseLeave: function onMouseLeave() {
|
|
714
1161
|
return setShowTooltip(false);
|
|
715
1162
|
}
|
|
716
|
-
}, "PowrAccount")
|
|
1163
|
+
}, "PowrAccount") : /*#__PURE__*/_react["default"].createElement("span", {
|
|
1164
|
+
style: styles.powrAccountText,
|
|
1165
|
+
onMouseEnter: function onMouseEnter() {
|
|
1166
|
+
return setShowTooltip(true);
|
|
1167
|
+
},
|
|
1168
|
+
onMouseLeave: function onMouseLeave() {
|
|
1169
|
+
return setShowTooltip(false);
|
|
1170
|
+
}
|
|
1171
|
+
}, "PowrAccount")), isLogin ? /*#__PURE__*/_react["default"].createElement("p", {
|
|
1172
|
+
style: _objectSpread(_objectSpread({}, styles.subtitle), {}, {
|
|
1173
|
+
marginTop: 6,
|
|
1174
|
+
fontSize: 14,
|
|
1175
|
+
fontWeight: 400
|
|
1176
|
+
})
|
|
1177
|
+
}, loginGate === 'password' ? 'Enter your password.' : smsResetStep === 'otp' ? 'Enter the code we sent.' : loginGate === 'help' ? 'WhatsApp us to get in.' : smsResetStep === 'password' ? 'Set a password for next time.' : 'Enter your mobile number.') : null, showTooltip && /*#__PURE__*/_react["default"].createElement("div", {
|
|
717
1178
|
style: styles.tooltip
|
|
718
|
-
}, "Secure authentication powered by Lawazia Tech"))), authView === 'add-
|
|
1179
|
+
}, "Secure authentication powered by Lawazia Tech"))), authView === 'add-name' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_profileNameStep.profileNameStep.Component, {
|
|
1180
|
+
ctx: {
|
|
1181
|
+
user: pendingAuth.user,
|
|
1182
|
+
token: pendingAuth.token,
|
|
1183
|
+
apiUrl: apiUrl,
|
|
1184
|
+
projectId: projectId,
|
|
1185
|
+
defaultCountry: resolvedDefaultCountry
|
|
1186
|
+
},
|
|
1187
|
+
onComplete: function onComplete(patch) {
|
|
1188
|
+
handleAddPhoneComplete(_objectSpread(_objectSpread({}, pendingAuth.user), patch), pendingAuth.token);
|
|
1189
|
+
}
|
|
1190
|
+
}) : authView === 'add-phone' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_AddPhonePanel["default"], {
|
|
719
1191
|
apiUrl: apiUrl,
|
|
720
1192
|
projectId: projectId,
|
|
721
1193
|
pendingAuth: pendingAuth,
|
|
@@ -753,23 +1225,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
753
1225
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
754
1226
|
htmlFor: "phoneOrEmail",
|
|
755
1227
|
style: styles.label
|
|
756
|
-
},
|
|
1228
|
+
}, "Mobile"), /*#__PURE__*/_react["default"].createElement(_PhoneInput["default"], {
|
|
757
1229
|
value: formData.phoneOrEmail,
|
|
758
1230
|
country: phoneCountry,
|
|
759
1231
|
onChange: handleRegisterPhoneChange,
|
|
760
|
-
international:
|
|
1232
|
+
international: true,
|
|
761
1233
|
allowedCountries: allowedCountries,
|
|
762
1234
|
defaultCountry: resolvedDefaultCountry,
|
|
763
1235
|
inputStyle: _objectSpread({}, fieldErrors.phoneOrEmail ? styles.inputError : {})
|
|
764
|
-
}) : /*#__PURE__*/_react["default"].createElement("input", {
|
|
765
|
-
type: "text",
|
|
766
|
-
id: "phoneOrEmail",
|
|
767
|
-
name: "phoneOrEmail",
|
|
768
|
-
value: formData.phoneOrEmail,
|
|
769
|
-
onChange: handlePhoneOrEmailChange,
|
|
770
|
-
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
771
|
-
placeholder: "Phone (+country code) or email",
|
|
772
|
-
required: true
|
|
773
1236
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
774
1237
|
style: styles.fieldError
|
|
775
1238
|
}, fieldErrors.phoneOrEmail), !isLogin && requirePhoneVerification && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -787,7 +1250,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
787
1250
|
style: styles.successText
|
|
788
1251
|
}, "Phone number verified successfully!"), /*#__PURE__*/_react["default"].createElement("div", {
|
|
789
1252
|
id: "recaptcha-container"
|
|
790
|
-
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
1253
|
+
})), (!isLogin || loginGate === 'password') && smsResetStep !== 'otp' && smsResetStep !== 'password' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
791
1254
|
style: styles.formGroup
|
|
792
1255
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
793
1256
|
htmlFor: "password",
|
|
@@ -867,27 +1330,78 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
867
1330
|
style: styles.checkboxText
|
|
868
1331
|
}, "I agree to the Terms of Service and Privacy Policy")), fieldErrors.terms && /*#__PURE__*/_react["default"].createElement("div", {
|
|
869
1332
|
style: styles.fieldError
|
|
870
|
-
}, fieldErrors.terms)), isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
871
|
-
style: styles.
|
|
872
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
873
|
-
style: styles.
|
|
874
|
-
}, /*#__PURE__*/_react["default"].createElement("
|
|
875
|
-
type: "checkbox",
|
|
876
|
-
style: styles.checkbox
|
|
877
|
-
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
878
|
-
style: styles.checkboxText
|
|
879
|
-
}, "Remember me")), passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
1333
|
+
}, fieldErrors.terms)), isLogin && loginGate === 'help' && !smsResetStep && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1334
|
+
style: styles.otpSection
|
|
1335
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1336
|
+
style: styles.otpText
|
|
1337
|
+
}, "No password on this number yet. WhatsApp us to create an account or reset."), passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
880
1338
|
href: passwordResetHelpUrl,
|
|
881
1339
|
target: "_blank",
|
|
882
1340
|
rel: "noopener noreferrer",
|
|
883
|
-
style: styles.
|
|
884
|
-
|
|
1341
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), {}, {
|
|
1342
|
+
display: 'block',
|
|
1343
|
+
textAlign: 'center',
|
|
1344
|
+
textDecoration: 'none'
|
|
1345
|
+
})
|
|
1346
|
+
}, passwordResetHelpLabel) : /*#__PURE__*/_react["default"].createElement("p", {
|
|
1347
|
+
style: styles.otpText
|
|
1348
|
+
}, "WhatsApp the app\u2019s support number."), /*#__PURE__*/_react["default"].createElement("button", {
|
|
885
1349
|
type: "button",
|
|
886
1350
|
onClick: function onClick() {
|
|
887
|
-
|
|
1351
|
+
setLoginGate('password');
|
|
1352
|
+
setError('');
|
|
1353
|
+
setSuccess('');
|
|
888
1354
|
},
|
|
889
1355
|
style: styles.forgotPasswordLink
|
|
890
|
-
}, "
|
|
1356
|
+
}, "I already have a password")), isLogin && resetChannel === 'otp' && smsResetStep === 'otp' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1357
|
+
style: styles.otpSection
|
|
1358
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1359
|
+
style: styles.otpText
|
|
1360
|
+
}, otpLoading && success === 'Sending a code…' ? 'Sending a code to your phone…' : 'Enter the 5-digit code we sent to your phone.'), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1361
|
+
type: "text",
|
|
1362
|
+
inputMode: "numeric",
|
|
1363
|
+
autoComplete: "one-time-code",
|
|
1364
|
+
value: smsOtp.replace(/\D/g, '').slice(0, 5),
|
|
1365
|
+
onChange: function onChange(e) {
|
|
1366
|
+
return setSmsOtp(e.target.value);
|
|
1367
|
+
},
|
|
1368
|
+
placeholder: "5-digit code",
|
|
1369
|
+
style: styles.input
|
|
1370
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1371
|
+
type: "button",
|
|
1372
|
+
onClick: handleSmsVerify,
|
|
1373
|
+
disabled: otpLoading || smsOtp.replace(/\D/g, '').length !== 5,
|
|
1374
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), otpLoading ? styles.buttonDisabled : {})
|
|
1375
|
+
}, otpLoading ? 'Checking…' : 'Verify code')), isLogin && resetChannel === 'otp' && smsResetStep === 'password' && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1376
|
+
style: styles.otpSection
|
|
1377
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
1378
|
+
style: styles.otpText
|
|
1379
|
+
}, smsVerifyAuth !== null && smsVerifyAuth !== void 0 && smsVerifyAuth.user ? 'Set a new password for this number.' : 'Create a password. Next time you sign in without SMS.'), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1380
|
+
type: "password",
|
|
1381
|
+
autoComplete: "new-password",
|
|
1382
|
+
value: smsNewPassword,
|
|
1383
|
+
onChange: function onChange(e) {
|
|
1384
|
+
return setSmsNewPassword(e.target.value);
|
|
1385
|
+
},
|
|
1386
|
+
placeholder: "New password",
|
|
1387
|
+
style: _objectSpread(_objectSpread({}, styles.input), {}, {
|
|
1388
|
+
marginBottom: 8
|
|
1389
|
+
})
|
|
1390
|
+
}), /*#__PURE__*/_react["default"].createElement("input", {
|
|
1391
|
+
type: "password",
|
|
1392
|
+
autoComplete: "new-password",
|
|
1393
|
+
value: smsConfirmPassword,
|
|
1394
|
+
onChange: function onChange(e) {
|
|
1395
|
+
return setSmsConfirmPassword(e.target.value);
|
|
1396
|
+
},
|
|
1397
|
+
placeholder: "Confirm password",
|
|
1398
|
+
style: styles.input
|
|
1399
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1400
|
+
type: "button",
|
|
1401
|
+
onClick: handleSmsSavePassword,
|
|
1402
|
+
disabled: otpLoading || smsNewPassword.length < 6,
|
|
1403
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), otpLoading ? styles.buttonDisabled : {})
|
|
1404
|
+
}, otpLoading ? 'Saving…' : 'Save password and sign in')), isLogin && resetChannel !== 'otp' && resetChannel !== 'whatsapp' && !passwordResetHelpUrl && showForgotPassword && showOtpOption && /*#__PURE__*/_react["default"].createElement("div", {
|
|
891
1405
|
style: styles.otpSection
|
|
892
1406
|
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
893
1407
|
style: styles.otpText
|
|
@@ -902,33 +1416,32 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
902
1416
|
style: styles.errorMessage
|
|
903
1417
|
}, error), success && /*#__PURE__*/_react["default"].createElement("div", {
|
|
904
1418
|
style: styles.successMessage
|
|
905
|
-
}, success), /*#__PURE__*/_react["default"].createElement("button", {
|
|
1419
|
+
}, success), !smsResetStep && loginGate !== 'help' && /*#__PURE__*/_react["default"].createElement("button", {
|
|
906
1420
|
type: "submit",
|
|
907
|
-
disabled: loading,
|
|
908
|
-
style: _objectSpread(_objectSpread({}, styles.button), loading ? styles.buttonDisabled : {})
|
|
909
|
-
}, loading ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
1421
|
+
disabled: loading || otpLoading,
|
|
1422
|
+
style: _objectSpread(_objectSpread({}, styles.button), loading || otpLoading ? styles.buttonDisabled : {})
|
|
1423
|
+
}, loading || otpLoading ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
910
1424
|
style: _objectSpread(_objectSpread({}, styles.spinner), {}, {
|
|
911
1425
|
animation: 'spin 1s linear infinite'
|
|
912
1426
|
})
|
|
913
|
-
}) : isLogin ? 'Sign In' : 'Sign Up')
|
|
914
|
-
style:
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
onClick: toggleMode,
|
|
920
|
-
style: styles.navigationLink
|
|
921
|
-
}, "Create one here") : /*#__PURE__*/_react["default"].createElement("a", {
|
|
922
|
-
href: "/signup",
|
|
923
|
-
style: styles.navigationLink
|
|
924
|
-
}, "Create one here")) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "Already have an account?", ' ', shouldShowToggle ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
1427
|
+
}) : isLogin ? loginGate === 'password' ? 'Sign In' : 'Continue' : 'Sign Up'), isLogin && loginGate === 'password' && !smsResetStep && /*#__PURE__*/_react["default"].createElement("div", {
|
|
1428
|
+
style: {
|
|
1429
|
+
textAlign: 'center',
|
|
1430
|
+
marginTop: 12
|
|
1431
|
+
}
|
|
1432
|
+
}, resetChannel === 'otp' ? /*#__PURE__*/_react["default"].createElement("button", {
|
|
925
1433
|
type: "button",
|
|
926
|
-
onClick:
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
1434
|
+
onClick: handleSmsForgotStart,
|
|
1435
|
+
disabled: otpLoading,
|
|
1436
|
+
style: styles.forgotPasswordLink
|
|
1437
|
+
}, otpLoading ? 'Sending a code…' : 'Forgot password? Get a code') : passwordResetHelpUrl ? /*#__PURE__*/_react["default"].createElement("a", {
|
|
1438
|
+
href: passwordResetHelpUrl,
|
|
1439
|
+
target: "_blank",
|
|
1440
|
+
rel: "noopener noreferrer",
|
|
1441
|
+
style: styles.forgotPasswordLink
|
|
1442
|
+
}, passwordResetHelpLabel) : /*#__PURE__*/_react["default"].createElement("span", {
|
|
1443
|
+
style: styles.forgotPasswordLink
|
|
1444
|
+
}, "Forgot password? WhatsApp us"))))), showOtpModal && /*#__PURE__*/_react["default"].createElement("div", {
|
|
932
1445
|
style: styles.modalOverlay
|
|
933
1446
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
934
1447
|
style: styles.modalContent
|
|
@@ -1390,7 +1903,8 @@ var styles = {
|
|
|
1390
1903
|
powrAccountText: {
|
|
1391
1904
|
color: '#ff6b35',
|
|
1392
1905
|
fontWeight: '600',
|
|
1393
|
-
cursor: '
|
|
1906
|
+
cursor: 'pointer',
|
|
1907
|
+
textDecoration: 'none'
|
|
1394
1908
|
},
|
|
1395
1909
|
tooltip: {
|
|
1396
1910
|
position: 'absolute',
|