powr-sdk-web 4.3.0 → 4.4.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 +308 -120
- package/package.json +1 -1
package/dist/auth/index.js
CHANGED
|
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
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
|
+
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 _t6 in e) "default" !== _t6 && {}.hasOwnProperty.call(e, _t6) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t6)) && (i.get || i.set) ? o(f, _t6, i) : f[_t6] = e[_t6]); return f; })(e, t); }
|
|
10
11
|
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); }
|
|
11
12
|
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 }; })(); }
|
|
12
13
|
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); }
|
|
@@ -23,8 +24,6 @@ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r)
|
|
|
23
24
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
25
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
25
26
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
26
|
-
// import { auth, RecaptchaVerifier, signInWithPhoneNumber } from '../utils/firebase';
|
|
27
|
-
|
|
28
27
|
var PowrLogin = function PowrLogin(_ref) {
|
|
29
28
|
var apiUrl = _ref.apiUrl,
|
|
30
29
|
onLogin = _ref.onLogin,
|
|
@@ -50,6 +49,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
50
49
|
setIsLogin = _useState2[1];
|
|
51
50
|
var _useState3 = (0, _react.useState)({
|
|
52
51
|
phoneOrEmail: '',
|
|
52
|
+
// For login: phone or email, For registration: phone only
|
|
53
53
|
password: '',
|
|
54
54
|
confirmPassword: '',
|
|
55
55
|
fullName: ''
|
|
@@ -85,20 +85,37 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
85
85
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
86
86
|
showTooltip = _useState16[0],
|
|
87
87
|
setShowTooltip = _useState16[1];
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
88
|
+
var formatPhone = function formatPhone(phone) {
|
|
89
|
+
var clean = phone.replace(/\D/g, '');
|
|
90
|
+
if (!clean.startsWith('91')) {
|
|
91
|
+
clean = '91' + clean;
|
|
92
|
+
}
|
|
93
|
+
return '+' + clean;
|
|
94
|
+
};
|
|
95
|
+
var _useState17 = (0, _react.useState)(false),
|
|
96
|
+
_useState18 = _slicedToArray(_useState17, 2),
|
|
97
|
+
showOtpOption = _useState18[0],
|
|
98
|
+
setShowOtpOption = _useState18[1];
|
|
99
|
+
var _useState19 = (0, _react.useState)(false),
|
|
100
|
+
_useState20 = _slicedToArray(_useState19, 2),
|
|
101
|
+
otpSent = _useState20[0],
|
|
102
|
+
setOtpSent = _useState20[1];
|
|
103
|
+
var _useState21 = (0, _react.useState)(false),
|
|
104
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
|
105
|
+
otpLoading = _useState22[0],
|
|
106
|
+
setOtpLoading = _useState22[1];
|
|
107
|
+
var _useState23 = (0, _react.useState)(''),
|
|
108
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
109
|
+
otp = _useState24[0],
|
|
110
|
+
setOtp = _useState24[1];
|
|
111
|
+
var _useState25 = (0, _react.useState)(false),
|
|
112
|
+
_useState26 = _slicedToArray(_useState25, 2),
|
|
113
|
+
firebaseOtpSent = _useState26[0],
|
|
114
|
+
setFirebaseOtpSent = _useState26[1];
|
|
115
|
+
var _useState27 = (0, _react.useState)(null),
|
|
116
|
+
_useState28 = _slicedToArray(_useState27, 2),
|
|
117
|
+
firebaseConfirm = _useState28[0],
|
|
118
|
+
setFirebaseConfirm = _useState28[1];
|
|
102
119
|
var shouldShowToggle = mode === 'toggle';
|
|
103
120
|
var handleInputChange = /*#__PURE__*/function () {
|
|
104
121
|
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(e) {
|
|
@@ -125,41 +142,88 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
125
142
|
return _ref2.apply(this, arguments);
|
|
126
143
|
};
|
|
127
144
|
}();
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
145
|
+
var sendFirebaseOtp = /*#__PURE__*/function () {
|
|
146
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(phone) {
|
|
147
|
+
var appVerifier, confirmationResult, _t;
|
|
148
|
+
return _regenerator().w(function (_context2) {
|
|
149
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
150
|
+
case 0:
|
|
151
|
+
setOtpLoading(true);
|
|
152
|
+
setError('');
|
|
153
|
+
_context2.p = 1;
|
|
154
|
+
if (!window.recaptchaVerifier) {
|
|
155
|
+
window.recaptchaVerifier = new _firebase.RecaptchaVerifier(_firebase.auth, 'recaptcha-container', {
|
|
156
|
+
size: 'invisible'
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
appVerifier = window.recaptchaVerifier;
|
|
160
|
+
_context2.n = 2;
|
|
161
|
+
return (0, _firebase.signInWithPhoneNumber)(_firebase.auth, phone, appVerifier);
|
|
162
|
+
case 2:
|
|
163
|
+
confirmationResult = _context2.v;
|
|
164
|
+
setFirebaseConfirm(confirmationResult);
|
|
165
|
+
setFirebaseOtpSent(true);
|
|
166
|
+
setSuccess('OTP sent to your phone!');
|
|
167
|
+
_context2.n = 4;
|
|
168
|
+
break;
|
|
169
|
+
case 3:
|
|
170
|
+
_context2.p = 3;
|
|
171
|
+
_t = _context2.v;
|
|
172
|
+
case 4:
|
|
173
|
+
_context2.p = 4;
|
|
174
|
+
setOtpLoading(false);
|
|
175
|
+
return _context2.f(4);
|
|
176
|
+
case 5:
|
|
177
|
+
return _context2.a(2);
|
|
178
|
+
}
|
|
179
|
+
}, _callee2, null, [[1, 3, 4, 5]]);
|
|
180
|
+
}));
|
|
181
|
+
return function sendFirebaseOtp(_x2) {
|
|
182
|
+
return _ref3.apply(this, arguments);
|
|
183
|
+
};
|
|
184
|
+
}();
|
|
185
|
+
var verifyFirebaseOtp = /*#__PURE__*/function () {
|
|
186
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() {
|
|
187
|
+
var result, _t2;
|
|
188
|
+
return _regenerator().w(function (_context3) {
|
|
189
|
+
while (1) switch (_context3.p = _context3.n) {
|
|
190
|
+
case 0:
|
|
191
|
+
setLoading(true);
|
|
192
|
+
setError('');
|
|
193
|
+
_context3.p = 1;
|
|
194
|
+
if (firebaseConfirm) {
|
|
195
|
+
_context3.n = 2;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
setError('OTP not sent yet.');
|
|
199
|
+
return _context3.a(2);
|
|
200
|
+
case 2:
|
|
201
|
+
_context3.n = 3;
|
|
202
|
+
return firebaseConfirm.confirm(otp);
|
|
203
|
+
case 3:
|
|
204
|
+
result = _context3.v;
|
|
205
|
+
_context3.n = 4;
|
|
206
|
+
return handleSubmit(null, true);
|
|
207
|
+
case 4:
|
|
208
|
+
_context3.n = 6;
|
|
209
|
+
break;
|
|
210
|
+
case 5:
|
|
211
|
+
_context3.p = 5;
|
|
212
|
+
_t2 = _context3.v;
|
|
213
|
+
setError('Invalid OTP. Please try again.');
|
|
214
|
+
case 6:
|
|
215
|
+
_context3.p = 6;
|
|
216
|
+
setLoading(false);
|
|
217
|
+
return _context3.f(6);
|
|
218
|
+
case 7:
|
|
219
|
+
return _context3.a(2);
|
|
220
|
+
}
|
|
221
|
+
}, _callee3, null, [[1, 5, 6, 7]]);
|
|
222
|
+
}));
|
|
223
|
+
return function verifyFirebaseOtp() {
|
|
224
|
+
return _ref4.apply(this, arguments);
|
|
225
|
+
};
|
|
226
|
+
}();
|
|
163
227
|
|
|
164
228
|
// Validation functions
|
|
165
229
|
var isValidEmail = function isValidEmail(email) {
|
|
@@ -173,7 +237,7 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
173
237
|
return cleanPhone.length >= 7 && cleanPhone.length <= 15;
|
|
174
238
|
};
|
|
175
239
|
var handleSubmit = /*#__PURE__*/function () {
|
|
176
|
-
var
|
|
240
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(e) {
|
|
177
241
|
var skipPhoneValidation,
|
|
178
242
|
errors,
|
|
179
243
|
value,
|
|
@@ -183,12 +247,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
183
247
|
_yield$apiCall,
|
|
184
248
|
data,
|
|
185
249
|
ok,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
250
|
+
_args4 = arguments,
|
|
251
|
+
_t3,
|
|
252
|
+
_t4;
|
|
253
|
+
return _regenerator().w(function (_context4) {
|
|
254
|
+
while (1) switch (_context4.p = _context4.n) {
|
|
190
255
|
case 0:
|
|
191
|
-
skipPhoneValidation =
|
|
256
|
+
skipPhoneValidation = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : false;
|
|
192
257
|
if (e) e.preventDefault();
|
|
193
258
|
setLoading(true);
|
|
194
259
|
setError('');
|
|
@@ -198,12 +263,21 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
198
263
|
value = formData.phoneOrEmail.trim();
|
|
199
264
|
isEmail = value.includes('@');
|
|
200
265
|
if (!formData.phoneOrEmail.trim()) {
|
|
201
|
-
errors.phoneOrEmail = 'Phone or email is required';
|
|
266
|
+
errors.phoneOrEmail = isLogin ? 'Phone or email is required' : 'Phone number is required';
|
|
202
267
|
}
|
|
268
|
+
|
|
269
|
+
// Registration: Only allow phone numbers
|
|
203
270
|
if (!isLogin && !isValidPhone(value)) {
|
|
204
|
-
errors.phoneOrEmail = 'Please enter a valid phone number';
|
|
205
|
-
}
|
|
206
|
-
|
|
271
|
+
errors.phoneOrEmail = 'Please enter a valid phone number for registration';
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Login: Allow both phone and email
|
|
275
|
+
if (isLogin) {
|
|
276
|
+
if (isEmail && !isValidEmail(value)) {
|
|
277
|
+
errors.phoneOrEmail = 'Please enter a valid email address';
|
|
278
|
+
} else if (!isEmail && !isValidPhone(value)) {
|
|
279
|
+
errors.phoneOrEmail = 'Please enter a valid phone number';
|
|
280
|
+
}
|
|
207
281
|
}
|
|
208
282
|
if (!formData.password.trim()) {
|
|
209
283
|
errors.password = 'Password is required';
|
|
@@ -216,18 +290,46 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
216
290
|
if (!isLogin && formData.password !== formData.confirmPassword) {
|
|
217
291
|
errors.confirmPassword = 'Passwords do not match';
|
|
218
292
|
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
293
|
+
if (!isLogin && (!otp || !firebaseConfirm)) {
|
|
294
|
+
errors.otp = 'Please verify OTP before signing up';
|
|
295
|
+
}
|
|
222
296
|
if (!(Object.keys(errors).length > 0)) {
|
|
223
|
-
|
|
297
|
+
_context4.n = 1;
|
|
224
298
|
break;
|
|
225
299
|
}
|
|
226
300
|
setFieldErrors(errors);
|
|
227
301
|
setLoading(false);
|
|
228
|
-
return
|
|
302
|
+
return _context4.a(2);
|
|
229
303
|
case 1:
|
|
230
|
-
|
|
304
|
+
if (isLogin) {
|
|
305
|
+
_context4.n = 7;
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
_context4.p = 2;
|
|
309
|
+
if (!(firebaseConfirm && otp)) {
|
|
310
|
+
_context4.n = 4;
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
_context4.n = 3;
|
|
314
|
+
return firebaseConfirm.confirm(otp);
|
|
315
|
+
case 3:
|
|
316
|
+
_context4.n = 5;
|
|
317
|
+
break;
|
|
318
|
+
case 4:
|
|
319
|
+
setError('Please verify OTP before signing up');
|
|
320
|
+
setLoading(false);
|
|
321
|
+
return _context4.a(2);
|
|
322
|
+
case 5:
|
|
323
|
+
_context4.n = 7;
|
|
324
|
+
break;
|
|
325
|
+
case 6:
|
|
326
|
+
_context4.p = 6;
|
|
327
|
+
_t3 = _context4.v;
|
|
328
|
+
setError('Invalid OTP. Please try again.');
|
|
329
|
+
setLoading(false);
|
|
330
|
+
return _context4.a(2);
|
|
331
|
+
case 7:
|
|
332
|
+
_context4.p = 7;
|
|
231
333
|
endpoint = isLogin ? "/auth/login" : "/auth/register";
|
|
232
334
|
payload = isLogin ? {
|
|
233
335
|
phoneOrEmail: formData.phoneOrEmail,
|
|
@@ -237,13 +339,13 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
237
339
|
phoneOrEmail: formData.phoneOrEmail,
|
|
238
340
|
password: formData.password
|
|
239
341
|
};
|
|
240
|
-
|
|
342
|
+
_context4.n = 8;
|
|
241
343
|
return (0, _auth.apiCall)(apiUrl, endpoint, projectId, {
|
|
242
344
|
method: 'POST',
|
|
243
345
|
body: payload
|
|
244
346
|
});
|
|
245
|
-
case
|
|
246
|
-
_yield$apiCall =
|
|
347
|
+
case 8:
|
|
348
|
+
_yield$apiCall = _context4.v;
|
|
247
349
|
data = _yield$apiCall.data;
|
|
248
350
|
ok = _yield$apiCall.ok;
|
|
249
351
|
if (ok) {
|
|
@@ -259,6 +361,10 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
259
361
|
confirmPassword: '',
|
|
260
362
|
fullName: ''
|
|
261
363
|
});
|
|
364
|
+
// Reset OTP related states
|
|
365
|
+
setOtp('');
|
|
366
|
+
setFirebaseOtpSent(false);
|
|
367
|
+
setFirebaseConfirm(null);
|
|
262
368
|
} else {
|
|
263
369
|
if (data.message) {
|
|
264
370
|
setError(data.message);
|
|
@@ -274,23 +380,23 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
274
380
|
setError("".concat(isLogin ? 'Login' : 'Registration', " failed. Please try again."));
|
|
275
381
|
}
|
|
276
382
|
}
|
|
277
|
-
|
|
383
|
+
_context4.n = 10;
|
|
278
384
|
break;
|
|
279
|
-
case
|
|
280
|
-
|
|
281
|
-
|
|
385
|
+
case 9:
|
|
386
|
+
_context4.p = 9;
|
|
387
|
+
_t4 = _context4.v;
|
|
282
388
|
setError('Network error. Please try again.');
|
|
283
|
-
case
|
|
284
|
-
|
|
389
|
+
case 10:
|
|
390
|
+
_context4.p = 10;
|
|
285
391
|
setLoading(false);
|
|
286
|
-
return
|
|
287
|
-
case
|
|
288
|
-
return
|
|
392
|
+
return _context4.f(10);
|
|
393
|
+
case 11:
|
|
394
|
+
return _context4.a(2);
|
|
289
395
|
}
|
|
290
|
-
},
|
|
396
|
+
}, _callee4, null, [[7, 9, 10, 11], [2, 6]]);
|
|
291
397
|
}));
|
|
292
|
-
return function handleSubmit(
|
|
293
|
-
return
|
|
398
|
+
return function handleSubmit(_x3) {
|
|
399
|
+
return _ref5.apply(this, arguments);
|
|
294
400
|
};
|
|
295
401
|
}();
|
|
296
402
|
var toggleMode = function toggleMode() {
|
|
@@ -298,8 +404,11 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
298
404
|
setError('');
|
|
299
405
|
setSuccess('');
|
|
300
406
|
setFieldErrors({});
|
|
301
|
-
|
|
302
|
-
|
|
407
|
+
setShowOtpOption(false);
|
|
408
|
+
setOtpSent(false);
|
|
409
|
+
setOtp('');
|
|
410
|
+
setFirebaseOtpSent(false);
|
|
411
|
+
setFirebaseConfirm(null);
|
|
303
412
|
setFormData({
|
|
304
413
|
phoneOrEmail: '',
|
|
305
414
|
password: '',
|
|
@@ -307,37 +416,62 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
307
416
|
fullName: ''
|
|
308
417
|
});
|
|
309
418
|
};
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
419
|
+
var handleGetOtp = /*#__PURE__*/function () {
|
|
420
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5() {
|
|
421
|
+
var _yield$apiCall2, data, ok, _t5;
|
|
422
|
+
return _regenerator().w(function (_context5) {
|
|
423
|
+
while (1) switch (_context5.p = _context5.n) {
|
|
424
|
+
case 0:
|
|
425
|
+
if (formData.phoneOrEmail.trim()) {
|
|
426
|
+
_context5.n = 1;
|
|
427
|
+
break;
|
|
428
|
+
}
|
|
429
|
+
setFieldErrors({
|
|
430
|
+
phoneOrEmail: 'Phone or email is required for OTP'
|
|
431
|
+
});
|
|
432
|
+
return _context5.a(2);
|
|
433
|
+
case 1:
|
|
434
|
+
setOtpLoading(true);
|
|
435
|
+
setError('');
|
|
436
|
+
setFieldErrors({});
|
|
437
|
+
_context5.p = 2;
|
|
438
|
+
_context5.n = 3;
|
|
439
|
+
return (0, _auth.apiCall)(apiUrl, "/auth/send-otp", projectId, {
|
|
440
|
+
method: 'POST',
|
|
441
|
+
body: {
|
|
442
|
+
phoneOrEmail: formData.phoneOrEmail
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
case 3:
|
|
446
|
+
_yield$apiCall2 = _context5.v;
|
|
447
|
+
data = _yield$apiCall2.data;
|
|
448
|
+
ok = _yield$apiCall2.ok;
|
|
449
|
+
if (ok) {
|
|
450
|
+
setOtpSent(true);
|
|
451
|
+
setSuccess('OTP sent successfully! Check your phone/email.');
|
|
452
|
+
setShowOtpOption(false);
|
|
453
|
+
} else {
|
|
454
|
+
setError(data.message || 'Failed to send OTP. Please try again.');
|
|
455
|
+
}
|
|
456
|
+
_context5.n = 5;
|
|
457
|
+
break;
|
|
458
|
+
case 4:
|
|
459
|
+
_context5.p = 4;
|
|
460
|
+
_t5 = _context5.v;
|
|
461
|
+
setError('Network error. Please try again.');
|
|
462
|
+
case 5:
|
|
463
|
+
_context5.p = 5;
|
|
464
|
+
setOtpLoading(false);
|
|
465
|
+
return _context5.f(5);
|
|
466
|
+
case 6:
|
|
467
|
+
return _context5.a(2);
|
|
468
|
+
}
|
|
469
|
+
}, _callee5, null, [[2, 4, 5, 6]]);
|
|
470
|
+
}));
|
|
471
|
+
return function handleGetOtp() {
|
|
472
|
+
return _ref6.apply(this, arguments);
|
|
473
|
+
};
|
|
474
|
+
}();
|
|
341
475
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
342
476
|
style: styles.container
|
|
343
477
|
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
@@ -390,18 +524,48 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
390
524
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
391
525
|
htmlFor: "phoneOrEmail",
|
|
392
526
|
style: styles.label
|
|
393
|
-
},
|
|
527
|
+
}, isLogin ? 'Phone or Email' : 'Phone Number'), /*#__PURE__*/_react["default"].createElement("input", {
|
|
394
528
|
type: "text",
|
|
395
529
|
id: "phoneOrEmail",
|
|
396
530
|
name: "phoneOrEmail",
|
|
397
531
|
value: formData.phoneOrEmail,
|
|
398
532
|
onChange: handleInputChange,
|
|
399
533
|
style: _objectSpread(_objectSpread({}, styles.input), fieldErrors.phoneOrEmail ? styles.inputError : {}),
|
|
400
|
-
placeholder: "Enter your phone or email",
|
|
534
|
+
placeholder: isLogin ? "Enter your phone or email" : "Enter your phone number",
|
|
401
535
|
required: true
|
|
402
536
|
}), fieldErrors.phoneOrEmail && /*#__PURE__*/_react["default"].createElement("div", {
|
|
403
537
|
style: styles.fieldError
|
|
404
|
-
}, fieldErrors.phoneOrEmail)
|
|
538
|
+
}, fieldErrors.phoneOrEmail), !isLogin && /*#__PURE__*/_react["default"].createElement("div", {
|
|
539
|
+
style: styles.helpText
|
|
540
|
+
}, "Registration requires phone verification for security"), !isLogin && isValidPhone(formData.phoneOrEmail) && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !firebaseOtpSent ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("button", {
|
|
541
|
+
type: "button",
|
|
542
|
+
onClick: function onClick() {
|
|
543
|
+
return sendFirebaseOtp(formatPhone(formData.phoneOrEmail));
|
|
544
|
+
},
|
|
545
|
+
style: styles.otpButton,
|
|
546
|
+
disabled: otpLoading
|
|
547
|
+
}, otpLoading ? 'Sending OTP...' : 'Send OTP to Phone'), /*#__PURE__*/_react["default"].createElement("div", {
|
|
548
|
+
id: "recaptcha-container"
|
|
549
|
+
})) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("label", {
|
|
550
|
+
htmlFor: "otp",
|
|
551
|
+
style: styles.label
|
|
552
|
+
}, "Enter OTP"), /*#__PURE__*/_react["default"].createElement("input", {
|
|
553
|
+
type: "text",
|
|
554
|
+
id: "otp",
|
|
555
|
+
name: "otp",
|
|
556
|
+
value: otp,
|
|
557
|
+
onChange: function onChange(e) {
|
|
558
|
+
return setOtp(e.target.value);
|
|
559
|
+
},
|
|
560
|
+
style: styles.input,
|
|
561
|
+
placeholder: "Enter OTP received",
|
|
562
|
+
required: true
|
|
563
|
+
}), /*#__PURE__*/_react["default"].createElement("button", {
|
|
564
|
+
type: "button",
|
|
565
|
+
onClick: verifyFirebaseOtp,
|
|
566
|
+
style: styles.otpButton,
|
|
567
|
+
disabled: loading || !otp
|
|
568
|
+
}, loading ? 'Verifying...' : 'Verify OTP & Sign Up')))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
405
569
|
style: styles.formGroup
|
|
406
570
|
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
407
571
|
htmlFor: "password",
|
|
@@ -468,7 +632,24 @@ var PowrLogin = function PowrLogin(_ref) {
|
|
|
468
632
|
style: styles.checkbox
|
|
469
633
|
}), /*#__PURE__*/_react["default"].createElement("span", {
|
|
470
634
|
style: styles.checkboxText
|
|
471
|
-
}, "Remember me"))
|
|
635
|
+
}, "Remember me")), /*#__PURE__*/_react["default"].createElement("button", {
|
|
636
|
+
type: "button",
|
|
637
|
+
onClick: function onClick() {
|
|
638
|
+
return setShowOtpOption(!showOtpOption);
|
|
639
|
+
},
|
|
640
|
+
style: styles.forgotPasswordLink
|
|
641
|
+
}, "Forgot password?")), isLogin && showOtpOption && /*#__PURE__*/_react["default"].createElement("div", {
|
|
642
|
+
style: styles.otpSection
|
|
643
|
+
}, /*#__PURE__*/_react["default"].createElement("p", {
|
|
644
|
+
style: styles.otpText
|
|
645
|
+
}, "Having trouble signing in? Get a one-time password sent to your phone or email."), /*#__PURE__*/_react["default"].createElement("button", {
|
|
646
|
+
type: "button",
|
|
647
|
+
onClick: handleGetOtp,
|
|
648
|
+
disabled: otpLoading,
|
|
649
|
+
style: _objectSpread(_objectSpread({}, styles.otpButton), otpLoading ? styles.buttonDisabled : {})
|
|
650
|
+
}, otpLoading ? /*#__PURE__*/_react["default"].createElement("div", {
|
|
651
|
+
style: styles.spinner
|
|
652
|
+
}) : 'Get OTP')), error && /*#__PURE__*/_react["default"].createElement("div", {
|
|
472
653
|
style: styles.errorMessage
|
|
473
654
|
}, error), success && /*#__PURE__*/_react["default"].createElement("div", {
|
|
474
655
|
style: styles.successMessage
|
|
@@ -753,6 +934,13 @@ var styles = {
|
|
|
753
934
|
marginTop: '4px',
|
|
754
935
|
fontWeight: '400'
|
|
755
936
|
},
|
|
937
|
+
helpText: {
|
|
938
|
+
color: '#6b7280',
|
|
939
|
+
fontSize: '12px',
|
|
940
|
+
marginTop: '4px',
|
|
941
|
+
textAlign: 'left',
|
|
942
|
+
fontStyle: 'italic'
|
|
943
|
+
},
|
|
756
944
|
inputError: {
|
|
757
945
|
borderColor: '#dc2626 !important',
|
|
758
946
|
boxShadow: '0 0 0 3px rgba(220, 38, 38, 0.1) !important'
|