powr-sdk-web 5.6.14 → 5.8.0
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 +259 -71
- package/dist/components/PhoneInput.js +159 -0
- package/dist/index.js +159 -0
- package/dist/onboarding/AddPhonePanel.js +527 -0
- package/dist/onboarding/OnboardingShell.js +78 -0
- package/dist/onboarding/PowrOnboardingProvider.js +230 -0
- package/dist/onboarding/index.js +102 -0
- package/dist/onboarding/steps/addPhoneStep.js +44 -0
- package/dist/onboarding/steps/profileNameStep.js +201 -0
- package/dist/onboarding/utils.js +285 -0
- package/dist/powrVerify/index.js +73 -72
- package/dist/utils/phone.js +151 -0
- package/package.json +44 -43
package/dist/auth/index.js
CHANGED
|
@@ -7,6 +7,11 @@ exports["default"] = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _auth = require("../utils/auth");
|
|
9
9
|
var _firebase = require("../utils/firebase");
|
|
10
|
+
var _AddPhonePanel = _interopRequireDefault(require("../onboarding/AddPhonePanel"));
|
|
11
|
+
var _PhoneInput = _interopRequireDefault(require("../components/PhoneInput"));
|
|
12
|
+
var _utils = require("../onboarding/utils");
|
|
13
|
+
var _phone = require("../utils/phone");
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
10
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t7 in e) "default" !== _t7 && {}.hasOwnProperty.call(e, _t7) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t7)) && (i.get || i.set) ? o(f, _t7, i) : f[_t7] = e[_t7]); return f; })(e, t); }
|
|
11
16
|
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); }
|
|
12
17
|
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 }; })(); }
|
|
@@ -36,7 +41,20 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
36
41
|
_ref$requirePhoneVeri = _ref.requirePhoneVerification,
|
|
37
42
|
requirePhoneVerification = _ref$requirePhoneVeri === void 0 ? true : _ref$requirePhoneVeri,
|
|
38
43
|
_ref$showForgotPasswo = _ref.showForgotPassword,
|
|
39
|
-
showForgotPassword = _ref$showForgotPasswo === void 0 ? true : _ref$showForgotPasswo
|
|
44
|
+
showForgotPassword = _ref$showForgotPasswo === void 0 ? true : _ref$showForgotPasswo,
|
|
45
|
+
_ref$completeProfileO = _ref.completeProfileOnLogin,
|
|
46
|
+
completeProfileOnLogin = _ref$completeProfileO === void 0 ? false : _ref$completeProfileO,
|
|
47
|
+
_ref$requireTerms = _ref.requireTerms,
|
|
48
|
+
requireTerms = _ref$requireTerms === void 0 ? false : _ref$requireTerms,
|
|
49
|
+
_ref$defaultCountry = _ref.defaultCountry,
|
|
50
|
+
defaultCountry = _ref$defaultCountry === void 0 ? _phone.DEFAULT_COUNTRY : _ref$defaultCountry,
|
|
51
|
+
_ref$defaultCountryCo = _ref.defaultCountryCode,
|
|
52
|
+
defaultCountryCode = _ref$defaultCountryCo === void 0 ? _phone.DEFAULT_COUNTRY_CODE : _ref$defaultCountryCo,
|
|
53
|
+
_ref$international = _ref.international,
|
|
54
|
+
international = _ref$international === void 0 ? false : _ref$international,
|
|
55
|
+
_ref$allowedCountries = _ref.allowedCountries,
|
|
56
|
+
allowedCountries = _ref$allowedCountries === void 0 ? null : _ref$allowedCountries;
|
|
57
|
+
var resolvedDefaultCountry = (0, _phone.resolveCountry)(defaultCountry, defaultCountryCode);
|
|
40
58
|
var _useState = (0, _react.useState)(function () {
|
|
41
59
|
switch (mode) {
|
|
42
60
|
case 'login':
|
|
@@ -88,13 +106,6 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
88
106
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
89
107
|
showTooltip = _useState16[0],
|
|
90
108
|
setShowTooltip = _useState16[1];
|
|
91
|
-
var formatPhone = function formatPhone(phone) {
|
|
92
|
-
var clean = phone.replace(/\D/g, '');
|
|
93
|
-
if (!clean.startsWith('91')) {
|
|
94
|
-
clean = '91' + clean;
|
|
95
|
-
}
|
|
96
|
-
return '+' + clean;
|
|
97
|
-
};
|
|
98
109
|
var _useState17 = (0, _react.useState)(false),
|
|
99
110
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
100
111
|
showOtpOption = _useState18[0],
|
|
@@ -127,6 +138,30 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
127
138
|
_useState32 = _slicedToArray(_useState31, 2),
|
|
128
139
|
isPhoneVerified = _useState32[0],
|
|
129
140
|
setIsPhoneVerified = _useState32[1];
|
|
141
|
+
var _useState33 = (0, _react.useState)('form'),
|
|
142
|
+
_useState34 = _slicedToArray(_useState33, 2),
|
|
143
|
+
authView = _useState34[0],
|
|
144
|
+
setAuthView = _useState34[1];
|
|
145
|
+
var _useState35 = (0, _react.useState)(null),
|
|
146
|
+
_useState36 = _slicedToArray(_useState35, 2),
|
|
147
|
+
pendingAuth = _useState36[0],
|
|
148
|
+
setPendingAuth = _useState36[1];
|
|
149
|
+
var _useState37 = (0, _react.useState)(false),
|
|
150
|
+
_useState38 = _slicedToArray(_useState37, 2),
|
|
151
|
+
termsAccepted = _useState38[0],
|
|
152
|
+
setTermsAccepted = _useState38[1];
|
|
153
|
+
var _useState39 = (0, _react.useState)(resolvedDefaultCountry),
|
|
154
|
+
_useState40 = _slicedToArray(_useState39, 2),
|
|
155
|
+
phoneCountry = _useState40[0],
|
|
156
|
+
setPhoneCountry = _useState40[1];
|
|
157
|
+
var _useState41 = (0, _react.useState)(false),
|
|
158
|
+
_useState42 = _slicedToArray(_useState41, 2),
|
|
159
|
+
registerPhoneValid = _useState42[0],
|
|
160
|
+
setRegisterPhoneValid = _useState42[1];
|
|
161
|
+
var _useState43 = (0, _react.useState)(''),
|
|
162
|
+
_useState44 = _slicedToArray(_useState43, 2),
|
|
163
|
+
registerPhoneE164 = _useState44[0],
|
|
164
|
+
setRegisterPhoneE164 = _useState44[1];
|
|
130
165
|
var shouldShowToggle = mode === 'toggle';
|
|
131
166
|
var handleInputChange = /*#__PURE__*/function () {
|
|
132
167
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
@@ -153,8 +188,45 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
153
188
|
return _ref2.apply(this, arguments);
|
|
154
189
|
};
|
|
155
190
|
}();
|
|
191
|
+
var handlePhoneOrEmailChange = function handlePhoneOrEmailChange(e) {
|
|
192
|
+
setFormData(function (prev) {
|
|
193
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
194
|
+
phoneOrEmail: e.target.value
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
setError('');
|
|
198
|
+
if (fieldErrors.phoneOrEmail) {
|
|
199
|
+
setFieldErrors(function (prev) {
|
|
200
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
201
|
+
phoneOrEmail: ''
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
var handleRegisterPhoneChange = function handleRegisterPhoneChange(_ref3) {
|
|
207
|
+
var country = _ref3.country,
|
|
208
|
+
localNumber = _ref3.localNumber,
|
|
209
|
+
e164 = _ref3.e164,
|
|
210
|
+
isValid = _ref3.isValid;
|
|
211
|
+
setPhoneCountry(country);
|
|
212
|
+
setRegisterPhoneE164(e164);
|
|
213
|
+
setRegisterPhoneValid(isValid);
|
|
214
|
+
setFormData(function (prev) {
|
|
215
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
216
|
+
phoneOrEmail: localNumber
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
setError('');
|
|
220
|
+
if (fieldErrors.phoneOrEmail) {
|
|
221
|
+
setFieldErrors(function (prev) {
|
|
222
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
223
|
+
phoneOrEmail: ''
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
};
|
|
156
228
|
var sendFirebaseOtp = /*#__PURE__*/function () {
|
|
157
|
-
var
|
|
229
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(phone) {
|
|
158
230
|
var appVerifier, confirmationResult, _t, _t2;
|
|
159
231
|
return _regenerator().w(function (_context2) {
|
|
160
232
|
while (1) switch (_context2.p = _context2.n) {
|
|
@@ -249,11 +321,11 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
249
321
|
}, _callee2, null, [[2, 4], [1, 7, 8, 9]]);
|
|
250
322
|
}));
|
|
251
323
|
return function sendFirebaseOtp(_x2) {
|
|
252
|
-
return
|
|
324
|
+
return _ref4.apply(this, arguments);
|
|
253
325
|
};
|
|
254
326
|
}();
|
|
255
327
|
var verifyFirebaseOtp = /*#__PURE__*/function () {
|
|
256
|
-
var
|
|
328
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
257
329
|
var result, _t3, _t4;
|
|
258
330
|
return _regenerator().w(function (_context3) {
|
|
259
331
|
while (1) switch (_context3.p = _context3.n) {
|
|
@@ -312,7 +384,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
312
384
|
}, _callee3, null, [[4, 6], [1, 8, 9, 10]]);
|
|
313
385
|
}));
|
|
314
386
|
return function verifyFirebaseOtp() {
|
|
315
|
-
return
|
|
387
|
+
return _ref5.apply(this, arguments);
|
|
316
388
|
};
|
|
317
389
|
}();
|
|
318
390
|
|
|
@@ -321,17 +393,14 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
321
393
|
var emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
322
394
|
return emailRegex.test(email);
|
|
323
395
|
};
|
|
324
|
-
var isValidPhone = function isValidPhone(phone) {
|
|
325
|
-
var cleanPhone = phone.replace(/\D/g, '');
|
|
326
|
-
return cleanPhone.length >= 7 && cleanPhone.length <= 15;
|
|
327
|
-
};
|
|
328
396
|
var handleSubmit = /*#__PURE__*/function () {
|
|
329
|
-
var
|
|
397
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e) {
|
|
330
398
|
var skipPhoneValidation,
|
|
331
399
|
errors,
|
|
332
400
|
value,
|
|
333
401
|
isEmail,
|
|
334
402
|
endpoint,
|
|
403
|
+
normalizedPhone,
|
|
335
404
|
payload,
|
|
336
405
|
_yield$apiCall,
|
|
337
406
|
data,
|
|
@@ -355,16 +424,16 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
355
424
|
}
|
|
356
425
|
|
|
357
426
|
// Registration: Only allow phone numbers
|
|
358
|
-
if (!isLogin && !
|
|
359
|
-
errors.phoneOrEmail = 'Please enter a valid phone number
|
|
427
|
+
if (!isLogin && !registerPhoneValid) {
|
|
428
|
+
errors.phoneOrEmail = international ? 'Please enter a valid phone number' : 'Please enter a valid mobile number';
|
|
360
429
|
}
|
|
361
430
|
|
|
362
431
|
// Login: Allow both phone and email
|
|
363
432
|
if (isLogin) {
|
|
364
433
|
if (isEmail && !isValidEmail(value)) {
|
|
365
434
|
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
366
|
-
} else if (!isEmail && !isValidPhone(value)) {
|
|
367
|
-
errors.phoneOrEmail = 'Please enter a valid phone number';
|
|
435
|
+
} else if (!isEmail && !(0, _phone.isValidPhone)(value, resolvedDefaultCountry)) {
|
|
436
|
+
errors.phoneOrEmail = 'Please enter a valid phone number (include country code, e.g. +1…) or email';
|
|
368
437
|
}
|
|
369
438
|
}
|
|
370
439
|
if (!formData.password.trim()) {
|
|
@@ -381,6 +450,9 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
381
450
|
if (!isLogin && requirePhoneVerification && !isPhoneVerified) {
|
|
382
451
|
errors.phoneOrEmail = 'Please verify your phone number first';
|
|
383
452
|
}
|
|
453
|
+
if (!isLogin && requireTerms && !termsAccepted) {
|
|
454
|
+
errors.terms = 'Please accept the terms to continue';
|
|
455
|
+
}
|
|
384
456
|
if (!(Object.keys(errors).length > 0)) {
|
|
385
457
|
_context4.n = 1;
|
|
386
458
|
break;
|
|
@@ -391,12 +463,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
391
463
|
case 1:
|
|
392
464
|
_context4.p = 1;
|
|
393
465
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
466
|
+
normalizedPhone = isLogin ? isEmail ? value : (0, _phone.normalizePhone)(value, resolvedDefaultCountry) : registerPhoneE164 || (0, _phone.normalizePhone)(value, phoneCountry);
|
|
394
467
|
payload = isLogin ? {
|
|
395
|
-
phoneOrEmail:
|
|
468
|
+
phoneOrEmail: isEmail ? value : normalizedPhone,
|
|
396
469
|
password: formData.password
|
|
397
470
|
} : {
|
|
398
471
|
fullName: formData.fullName,
|
|
399
|
-
phoneOrEmail:
|
|
472
|
+
phoneOrEmail: normalizedPhone,
|
|
400
473
|
password: formData.password
|
|
401
474
|
};
|
|
402
475
|
_context4.n = 2;
|
|
@@ -408,55 +481,81 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
408
481
|
_yield$apiCall = _context4.v;
|
|
409
482
|
data = _yield$apiCall.data;
|
|
410
483
|
ok = _yield$apiCall.ok;
|
|
411
|
-
if (ok) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
484
|
+
if (!ok) {
|
|
485
|
+
_context4.n = 6;
|
|
486
|
+
break;
|
|
487
|
+
}
|
|
488
|
+
setSuccess(isLogin ? 'Login successful!' : 'Registration successful!');
|
|
489
|
+
if (!isLogin) {
|
|
490
|
+
_context4.n = 4;
|
|
491
|
+
break;
|
|
492
|
+
}
|
|
493
|
+
if (!(completeProfileOnLogin && (0, _utils.needsPhone)(data.user))) {
|
|
494
|
+
_context4.n = 3;
|
|
495
|
+
break;
|
|
496
|
+
}
|
|
497
|
+
setPendingAuth({
|
|
498
|
+
user: data.user,
|
|
499
|
+
token: data.token
|
|
500
|
+
});
|
|
501
|
+
setAuthView('add-phone');
|
|
502
|
+
setLoading(false);
|
|
503
|
+
return _context4.a(2);
|
|
504
|
+
case 3:
|
|
505
|
+
if (onLogin) {
|
|
506
|
+
onLogin(data);
|
|
507
|
+
}
|
|
508
|
+
_context4.n = 5;
|
|
509
|
+
break;
|
|
510
|
+
case 4:
|
|
511
|
+
if (!isLogin && onRegister) {
|
|
512
|
+
onRegister(data);
|
|
513
|
+
}
|
|
514
|
+
case 5:
|
|
515
|
+
setFormData({
|
|
516
|
+
phoneOrEmail: '',
|
|
517
|
+
password: '',
|
|
518
|
+
confirmPassword: '',
|
|
519
|
+
fullName: ''
|
|
520
|
+
});
|
|
521
|
+
// Reset OTP related states
|
|
522
|
+
setOtp('');
|
|
523
|
+
setFirebaseOtpSent(false);
|
|
524
|
+
setFirebaseConfirm(null);
|
|
525
|
+
_context4.n = 7;
|
|
526
|
+
break;
|
|
527
|
+
case 6:
|
|
528
|
+
if (data.message) {
|
|
529
|
+
setError(data.message);
|
|
530
|
+
} else if (data.error) {
|
|
531
|
+
setError(data.error);
|
|
532
|
+
} else if (data.errors) {
|
|
533
|
+
if (_typeof(data.errors) === 'object') {
|
|
534
|
+
setFieldErrors(data.errors);
|
|
439
535
|
} else {
|
|
440
|
-
setError(
|
|
536
|
+
setError(data.errors);
|
|
441
537
|
}
|
|
538
|
+
} else {
|
|
539
|
+
setError("".concat(isLogin ? 'Login' : 'Registration', " failed. Please try again."));
|
|
442
540
|
}
|
|
443
|
-
|
|
541
|
+
case 7:
|
|
542
|
+
_context4.n = 9;
|
|
444
543
|
break;
|
|
445
|
-
case
|
|
446
|
-
_context4.p =
|
|
544
|
+
case 8:
|
|
545
|
+
_context4.p = 8;
|
|
447
546
|
_t5 = _context4.v;
|
|
448
547
|
setError('Network error. Please try again.');
|
|
449
|
-
case
|
|
450
|
-
_context4.p =
|
|
548
|
+
case 9:
|
|
549
|
+
_context4.p = 9;
|
|
451
550
|
setLoading(false);
|
|
452
|
-
return _context4.f(
|
|
453
|
-
case
|
|
551
|
+
return _context4.f(9);
|
|
552
|
+
case 10:
|
|
454
553
|
return _context4.a(2);
|
|
455
554
|
}
|
|
456
|
-
}, _callee4, null, [[1,
|
|
555
|
+
}, _callee4, null, [[1, 8, 9, 10]]);
|
|
457
556
|
}));
|
|
458
557
|
return function handleSubmit(_x3) {
|
|
459
|
-
return
|
|
558
|
+
return _ref6.apply(this, arguments);
|
|
460
559
|
};
|
|
461
560
|
}();
|
|
462
561
|
var toggleMode = function toggleMode() {
|
|
@@ -471,6 +570,12 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
471
570
|
setFirebaseConfirm(null);
|
|
472
571
|
setShowOtpModal(false);
|
|
473
572
|
setIsPhoneVerified(false);
|
|
573
|
+
setAuthView('form');
|
|
574
|
+
setPendingAuth(null);
|
|
575
|
+
setTermsAccepted(false);
|
|
576
|
+
setPhoneCountry(resolvedDefaultCountry);
|
|
577
|
+
setRegisterPhoneValid(false);
|
|
578
|
+
setRegisterPhoneE164('');
|
|
474
579
|
setFormData({
|
|
475
580
|
phoneOrEmail: '',
|
|
476
581
|
password: '',
|
|
@@ -478,8 +583,27 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
478
583
|
fullName: ''
|
|
479
584
|
});
|
|
480
585
|
};
|
|
586
|
+
var handleAddPhoneComplete = function handleAddPhoneComplete(updatedUser) {
|
|
587
|
+
if (!pendingAuth) return;
|
|
588
|
+
var payload = {
|
|
589
|
+
success: true,
|
|
590
|
+
user: updatedUser,
|
|
591
|
+
token: pendingAuth.token
|
|
592
|
+
};
|
|
593
|
+
setAuthView('form');
|
|
594
|
+
setPendingAuth(null);
|
|
595
|
+
if (onLogin) {
|
|
596
|
+
onLogin(payload);
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
var handleAddPhoneBack = function handleAddPhoneBack() {
|
|
600
|
+
setAuthView('form');
|
|
601
|
+
setPendingAuth(null);
|
|
602
|
+
setError('');
|
|
603
|
+
setSuccess('');
|
|
604
|
+
};
|
|
481
605
|
var handleGetOtp = /*#__PURE__*/function () {
|
|
482
|
-
var
|
|
606
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
483
607
|
var _yield$apiCall2, data, ok, _t6;
|
|
484
608
|
return _regenerator().w(function (_context5) {
|
|
485
609
|
while (1) switch (_context5.p = _context5.n) {
|
|
@@ -531,7 +655,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
531
655
|
}, _callee5, null, [[2, 4, 5, 6]]);
|
|
532
656
|
}));
|
|
533
657
|
return function handleGetOtp() {
|
|
534
|
-
return
|
|
658
|
+
return _ref7.apply(this, arguments);
|
|
535
659
|
};
|
|
536
660
|
}();
|
|
537
661
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -562,7 +686,19 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
562
686
|
}
|
|
563
687
|
}, "PowrAccount")), showTooltip && /*#__PURE__*/_react["default"].createElement("div", {
|
|
564
688
|
style: styles.tooltip
|
|
565
|
-
}, "Secure authentication powered by Lawazia Tech"))), /*#__PURE__*/_react["default"].createElement("
|
|
689
|
+
}, "Secure authentication powered by Lawazia Tech"))), authView === 'add-phone' && pendingAuth ? /*#__PURE__*/_react["default"].createElement(_AddPhonePanel["default"], {
|
|
690
|
+
apiUrl: apiUrl,
|
|
691
|
+
projectId: projectId,
|
|
692
|
+
pendingAuth: pendingAuth,
|
|
693
|
+
appName: appName,
|
|
694
|
+
onComplete: handleAddPhoneComplete,
|
|
695
|
+
onBack: handleAddPhoneBack,
|
|
696
|
+
requirePhoneVerification: requirePhoneVerification,
|
|
697
|
+
defaultCountry: resolvedDefaultCountry,
|
|
698
|
+
defaultCountryCode: defaultCountryCode,
|
|
699
|
+
international: international,
|
|
700
|
+
allowedCountries: allowedCountries
|
|
701
|
+
}) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("form", {
|
|
566
702
|
onSubmit: handleSubmit,
|
|
567
703
|
style: styles.form
|
|
568
704
|
}, !isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -586,23 +722,31 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
586
722
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
587
723
|
htmlFor: "phoneOrEmail",
|
|
588
724
|
style: styles.label
|
|
589
|
-
}, isLogin ? 'Phone or Email' : 'Phone Number'), /*#__PURE__*/_react["default"].createElement("
|
|
725
|
+
}, isLogin ? 'Phone or Email' : 'Phone Number'), !isLogin ? /*#__PURE__*/_react["default"].createElement(_PhoneInput["default"], {
|
|
726
|
+
value: formData.phoneOrEmail,
|
|
727
|
+
country: phoneCountry,
|
|
728
|
+
onChange: handleRegisterPhoneChange,
|
|
729
|
+
international: international,
|
|
730
|
+
allowedCountries: allowedCountries,
|
|
731
|
+
defaultCountry: resolvedDefaultCountry,
|
|
732
|
+
inputStyle: _objectSpread({}, fieldErrors.phoneOrEmail ? styles.inputError : {})
|
|
733
|
+
}) : /*#__PURE__*/_react["default"].createElement("input", {
|
|
590
734
|
type: "text",
|
|
591
735
|
id: "phoneOrEmail",
|
|
592
736
|
name: "phoneOrEmail",
|
|
593
737
|
value: formData.phoneOrEmail,
|
|
594
|
-
onChange:
|
|
738
|
+
onChange: handlePhoneOrEmailChange,
|
|
595
739
|
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
596
|
-
placeholder:
|
|
740
|
+
placeholder: "Phone (+country code) or email",
|
|
597
741
|
required: true
|
|
598
742
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
599
743
|
style: styles.fieldError
|
|
600
744
|
}, fieldErrors.phoneOrEmail), !isLogin && requirePhoneVerification && /*#__PURE__*/_react["default"].createElement("div", {
|
|
601
745
|
style: styles.helpText
|
|
602
|
-
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification &&
|
|
746
|
+
}, "Registration requires phone verification for security"), !isLogin && requirePhoneVerification && registerPhoneValid && !isPhoneVerified && /*#__PURE__*/_react["default"].createElement("button", {
|
|
603
747
|
type: "button",
|
|
604
748
|
onClick: function onClick() {
|
|
605
|
-
return sendFirebaseOtp(
|
|
749
|
+
return sendFirebaseOtp((0, _phone.formatPhoneForSms)(formData.phoneOrEmail, phoneCountry));
|
|
606
750
|
},
|
|
607
751
|
style: _objectSpread(_objectSpread({}, styles.otpButton), {}, {
|
|
608
752
|
marginTop: '8px'
|
|
@@ -670,7 +814,29 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
670
814
|
style: styles.eyeIcon
|
|
671
815
|
}, "\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8\uFE0F"))), fieldErrors.confirmPassword && /*#__PURE__*/_react["default"].createElement("div", {
|
|
672
816
|
style: styles.fieldError
|
|
673
|
-
}, fieldErrors.confirmPassword)), isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
817
|
+
}, fieldErrors.confirmPassword)), !isLogin && requireTerms && /*#__PURE__*/_react["default"].createElement("div", {
|
|
818
|
+
style: styles.formGroup
|
|
819
|
+
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
820
|
+
style: styles.checkboxLabel
|
|
821
|
+
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
822
|
+
type: "checkbox",
|
|
823
|
+
checked: termsAccepted,
|
|
824
|
+
onChange: function onChange(e) {
|
|
825
|
+
setTermsAccepted(e.target.checked);
|
|
826
|
+
if (fieldErrors.terms) {
|
|
827
|
+
setFieldErrors(function (prev) {
|
|
828
|
+
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
829
|
+
terms: ''
|
|
830
|
+
});
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
},
|
|
834
|
+
style: styles.checkbox
|
|
835
|
+
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
836
|
+
style: styles.checkboxText
|
|
837
|
+
}, "I agree to the Terms of Service and Privacy Policy")), fieldErrors.terms && /*#__PURE__*/_react["default"].createElement("div", {
|
|
838
|
+
style: styles.fieldError
|
|
839
|
+
}, fieldErrors.terms)), isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
674
840
|
style: styles.rememberSection
|
|
675
841
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
676
842
|
style: styles.checkboxLabel
|
|
@@ -726,7 +892,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
726
892
|
}, "Sign in here") : /*#__PURE__*/_react["default"].createElement("a", {
|
|
727
893
|
href: "/login",
|
|
728
894
|
style: styles.navigationLink
|
|
729
|
-
}, "Sign in here"))))), showOtpModal && /*#__PURE__*/_react["default"].createElement("div", {
|
|
895
|
+
}, "Sign in here")))))), showOtpModal && /*#__PURE__*/_react["default"].createElement("div", {
|
|
730
896
|
style: styles.modalOverlay
|
|
731
897
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
732
898
|
style: styles.modalContent
|
|
@@ -864,6 +1030,28 @@ var styles = {
|
|
|
864
1030
|
outline: 'none',
|
|
865
1031
|
height: '48px'
|
|
866
1032
|
},
|
|
1033
|
+
phoneRow: {
|
|
1034
|
+
display: 'flex',
|
|
1035
|
+
gap: '8px',
|
|
1036
|
+
alignItems: 'stretch',
|
|
1037
|
+
width: '100%'
|
|
1038
|
+
},
|
|
1039
|
+
phonePrefix: {
|
|
1040
|
+
display: 'flex',
|
|
1041
|
+
alignItems: 'center',
|
|
1042
|
+
padding: '0 14px',
|
|
1043
|
+
background: '#fff7ed',
|
|
1044
|
+
color: '#7c2d12',
|
|
1045
|
+
border: '2px solid #ffedd5',
|
|
1046
|
+
borderRadius: '8px',
|
|
1047
|
+
fontWeight: '700',
|
|
1048
|
+
fontSize: '16px',
|
|
1049
|
+
whiteSpace: 'nowrap'
|
|
1050
|
+
},
|
|
1051
|
+
phoneInput: {
|
|
1052
|
+
flex: 1,
|
|
1053
|
+
minWidth: 0
|
|
1054
|
+
},
|
|
867
1055
|
inputFocus: {
|
|
868
1056
|
borderColor: '#667eea',
|
|
869
1057
|
boxShadow: '0 0 0 3px rgba(102, 126, 234, 0.1)'
|