Skip to content

Commit 1429b13

Browse files
committed
bump 1.1.18
1 parent a5f31ec commit 1429b13

11 files changed

Lines changed: 127 additions & 55 deletions

package-lock.json

Lines changed: 19 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.1.17",
2+
"version": "1.1.18",
33
"license": "MIT",
44
"main": "dist/index.js",
55
"typings": "dist/index.d.ts",
@@ -52,6 +52,7 @@
5252
"@size-limit/preset-small-lib": "^8.1.0",
5353
"@types/react": "^18.0.25",
5454
"@types/react-dom": "^18.0.9",
55+
"@types/validator": "^13.11.7",
5556
"babel-loader": "^9.1.0",
5657
"husky": "^8.0.2",
5758
"postcss": "^8.4.19",
@@ -65,6 +66,7 @@
6566
"typescript": "^5.2.2"
6667
},
6768
"dependencies": {
68-
"@authorizerdev/authorizer-js": "^1.2.18"
69+
"@authorizerdev/authorizer-js": "^1.2.18",
70+
"validator": "^13.11.0"
6971
}
7072
}

src/components/AuthorizerBasicAuthLogin.tsx

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import React, { FC, useEffect, useState } from 'react';
22
import { AuthToken, LoginInput } from '@authorizerdev/authorizer-js';
3-
import styles from '../styles/default.css';
3+
import isEmail from 'validator/es/lib/isEmail';
4+
import isMobilePhone from 'validator/es/lib/isMobilePhone';
45

6+
import styles from '../styles/default.css';
57
import { ButtonAppearance, MessageType, Views } from '../constants';
68
import { useAuthorizer } from '../contexts/AuthorizerContext';
79
import { StyledButton, StyledFooter, StyledLink } from '../styledComponents';
8-
import { isValidEmail } from '../utils/validations';
910
import { Message } from './Message';
1011
import { AuthorizerVerifyOtp } from './AuthorizerVerifyOtp';
1112
import { OtpDataType, TotpDataType } from '../types';
@@ -59,9 +60,26 @@ export const AuthorizerBasicAuthLogin: FC<{
5960
e.preventDefault();
6061
setLoading(true);
6162
try {
63+
let email: string = '';
64+
let phone_number: string = '';
65+
if (formData.email_or_phone_number) {
66+
if (isEmail(formData.email_or_phone_number)) {
67+
email = formData.email_or_phone_number;
68+
} else if (isMobilePhone(formData.email_or_phone_number)) {
69+
phone_number = formData.email_or_phone_number;
70+
}
71+
}
72+
if (!email && !phone_number) {
73+
setErrorData({
74+
...errorData,
75+
email_or_phone_number: 'Invalid email or phone number',
76+
});
77+
setLoading(false);
78+
return;
79+
}
6280
const data: LoginInput = {
63-
email: formData.email_or_phone_number || '',
64-
phone_number: formData.email_or_phone_number || '',
81+
email: email,
82+
phone_number: phone_number,
6583
password: formData.password || '',
6684
};
6785
if (urlProps?.scope) {
@@ -144,12 +162,12 @@ export const AuthorizerBasicAuthLogin: FC<{
144162
email_or_phone_number: 'Email OR Phone Number is required',
145163
});
146164
} else if (
147-
formData.email_or_phone_number &&
148-
!isValidEmail(formData.email_or_phone_number)
165+
!isEmail(formData.email_or_phone_number || '') &&
166+
!isMobilePhone(formData.email_or_phone_number || '')
149167
) {
150168
setErrorData({
151169
...errorData,
152-
email_or_phone_number: 'Please enter valid email',
170+
email_or_phone_number: 'Invalid Email OR Phone Number',
153171
});
154172
} else {
155173
setErrorData({ ...errorData, email_or_phone_number: null });
@@ -219,7 +237,7 @@ export const AuthorizerBasicAuthLogin: FC<{
219237
? styles['input-error-content']
220238
: null
221239
}`}
222-
placeholder="eg. foo@bar.com / +919999999999"
240+
placeholder="eg. hello@world.com / +919999999999"
223241
type="text"
224242
value={formData.email_or_phone_number || ''}
225243
onChange={(e) =>

src/components/AuthorizerForgotPassword.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React, { FC, useEffect, useState } from 'react';
2-
import styles from '../styles/default.css';
2+
import isEmail from 'validator/es/lib/isEmail';
33

4+
import styles from '../styles/default.css';
45
import { ButtonAppearance, MessageType, Views } from '../constants';
56
import { useAuthorizer } from '../contexts/AuthorizerContext';
67
import { StyledButton, StyledFooter, StyledLink } from '../styledComponents';
7-
import { isValidEmail } from '../utils/validations';
88
import { formatErrorMessage } from '../utils/format';
99
import { Message } from './Message';
1010

@@ -68,7 +68,7 @@ export const AuthorizerForgotPassword: FC<{
6868
useEffect(() => {
6969
if (formData.email === '') {
7070
setErrorData({ ...errorData, email: 'Email is required' });
71-
} else if (formData.email && !isValidEmail(formData.email)) {
71+
} else if (formData.email && !isEmail(formData.email)) {
7272
setErrorData({ ...errorData, email: 'Please enter valid email' });
7373
} else {
7474
setErrorData({ ...errorData, email: null });

src/components/AuthorizerMagicLinkLogin.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React, { FC, useEffect, useState } from 'react';
2-
import styles from '../styles/default.css';
2+
import isEmail from 'validator/es/lib/isEmail';
33

4+
import styles from '../styles/default.css';
45
import { ButtonAppearance, MessageType } from '../constants';
56
import { useAuthorizer } from '../contexts/AuthorizerContext';
67
import { StyledButton } from '../styledComponents';
7-
import { isValidEmail } from '../utils/validations';
88
import { formatErrorMessage } from '../utils/format';
99
import { Message } from './Message';
1010
import { MagicLinkLoginInput } from '@authorizerdev/authorizer-js';
@@ -77,7 +77,7 @@ export const AuthorizerMagicLinkLogin: FC<{
7777
useEffect(() => {
7878
if (formData.email === '') {
7979
setErrorData({ ...errorData, email: 'Email is required' });
80-
} else if (formData.email && !isValidEmail(formData.email)) {
80+
} else if (formData.email && !isEmail(formData.email)) {
8181
setErrorData({ ...errorData, email: 'Please enter valid email' });
8282
} else {
8383
setErrorData({ ...errorData, email: null });

src/components/AuthorizerRoot.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ export const AuthorizerRoot: FC<{
4848
<StyledWrapper>
4949
<AuthorizerSocialLogin urlProps={urlProps} roles={roles} />
5050
{view === Views.Login &&
51-
config.is_basic_authentication_enabled &&
51+
(config.is_basic_authentication_enabled ||
52+
config.is_mobile_basic_authentication_enabled) &&
5253
!config.is_magic_link_login_enabled && (
5354
<AuthorizerBasicAuthLogin
5455
setView={setView}
@@ -59,7 +60,8 @@ export const AuthorizerRoot: FC<{
5960
)}
6061

6162
{view === Views.Signup &&
62-
config.is_basic_authentication_enabled &&
63+
(config.is_basic_authentication_enabled ||
64+
config.is_mobile_basic_authentication_enabled) &&
6365
!config.is_magic_link_login_enabled &&
6466
config.is_sign_up_enabled && (
6567
<AuthorizerSignup

src/components/AuthorizerSignup.tsx

Lines changed: 55 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import React, { FC, useEffect, useState } from 'react';
22
import { AuthToken, SignupInput } from '@authorizerdev/authorizer-js';
3-
import styles from '../styles/default.css';
3+
import isEmail from 'validator/es/lib/isEmail';
4+
import isMobilePhone from 'validator/es/lib/isMobilePhone';
45

6+
import styles from '../styles/default.css';
57
import { ButtonAppearance, MessageType, Views } from '../constants';
68
import { useAuthorizer } from '../contexts/AuthorizerContext';
79
import { StyledButton, StyledFooter, StyledLink } from '../styledComponents';
8-
import { isValidEmail } from '../utils/validations';
910
import { formatErrorMessage } from '../utils/format';
1011
import { Message } from './Message';
1112
import PasswordStrengthIndicator from './PasswordStrengthIndicator';
1213

1314
interface InputDataType {
14-
email: string | null;
15+
email_or_phone_number: string | null;
1516
password: string | null;
1617
confirmPassword: string | null;
1718
}
@@ -26,12 +27,12 @@ export const AuthorizerSignup: FC<{
2627
const [loading, setLoading] = useState(false);
2728
const [successMessage, setSuccessMessage] = useState(``);
2829
const [formData, setFormData] = useState<InputDataType>({
29-
email: null,
30+
email_or_phone_number: null,
3031
password: null,
3132
confirmPassword: null,
3233
});
3334
const [errorData, setErrorData] = useState<InputDataType>({
34-
email: null,
35+
email_or_phone_number: null,
3536
password: null,
3637
confirmPassword: null,
3738
});
@@ -46,8 +47,26 @@ export const AuthorizerSignup: FC<{
4647
e.preventDefault();
4748
try {
4849
setLoading(true);
50+
let email: string = '';
51+
let phone_number: string = '';
52+
if (formData.email_or_phone_number) {
53+
if (isEmail(formData.email_or_phone_number)) {
54+
email = formData.email_or_phone_number;
55+
} else if (isMobilePhone(formData.email_or_phone_number)) {
56+
phone_number = formData.email_or_phone_number;
57+
}
58+
}
59+
if (!email && !phone_number) {
60+
setErrorData({
61+
...errorData,
62+
email_or_phone_number: 'Invalid email or phone number',
63+
});
64+
setLoading(false);
65+
return;
66+
}
4967
const data: SignupInput = {
50-
email: formData.email || '',
68+
email: email,
69+
phone_number: phone_number,
5170
password: formData.password || '',
5271
confirm_password: formData.confirmPassword || '',
5372
};
@@ -103,14 +122,23 @@ export const AuthorizerSignup: FC<{
103122
};
104123

105124
useEffect(() => {
106-
if (formData.email === '') {
107-
setErrorData({ ...errorData, email: 'Email is required' });
108-
} else if (formData.email && !isValidEmail(formData.email)) {
109-
setErrorData({ ...errorData, email: 'Please enter valid email' });
125+
if (formData.email_or_phone_number === '') {
126+
setErrorData({
127+
...errorData,
128+
email_or_phone_number: 'Email OR Phone Number is required',
129+
});
130+
} else if (
131+
!isEmail(formData.email_or_phone_number || '') &&
132+
!isMobilePhone(formData.email_or_phone_number || '')
133+
) {
134+
setErrorData({
135+
...errorData,
136+
email_or_phone_number: 'Invalid Email OR Phone Number',
137+
});
110138
} else {
111-
setErrorData({ ...errorData, email: null });
139+
setErrorData({ ...errorData, email_or_phone_number: null });
112140
}
113-
}, [formData.email]);
141+
}, [formData.email_or_phone_number]);
114142

115143
useEffect(() => {
116144
if (formData.password === '') {
@@ -158,7 +186,8 @@ export const AuthorizerSignup: FC<{
158186
{error && (
159187
<Message type={MessageType.Error} text={error} onClose={onErrorClose} />
160188
)}
161-
{config.is_basic_authentication_enabled &&
189+
{(config.is_basic_authentication_enabled ||
190+
config.is_mobile_basic_authentication_enabled) &&
162191
!config.is_magic_link_login_enabled && (
163192
<>
164193
<form onSubmit={onSubmit} name="authorizer-sign-up-form">
@@ -167,22 +196,24 @@ export const AuthorizerSignup: FC<{
167196
className={styles['form-input-label']}
168197
htmlFor="authorizer-sign-up-email"
169198
>
170-
<span>* </span>Email
199+
<span>* </span>Email / Phone Number
171200
</label>
172201
<input
173-
name="email"
174-
id="authorizer-sign-up-email"
202+
name="eemail_or_phone_numbermail"
203+
id="authorizer-login-email-or-phone-number"
175204
className={`${styles['form-input-field']} ${
176-
errorData.email ? styles['input-error-content'] : null
205+
errorData.email_or_phone_number
206+
? styles['input-error-content']
207+
: null
177208
}`}
178-
placeholder="eg. foo@bar.com"
179-
type="email"
180-
value={formData.email || ''}
209+
placeholder="eg. hello@world.com / +919999999999"
210+
type="text"
211+
value={formData.email_or_phone_number || ''}
181212
onChange={(e) => onInputChange('email', e.target.value)}
182213
/>
183-
{errorData.email && (
214+
{errorData.email_or_phone_number && (
184215
<div className={styles['form-input-error']}>
185-
{errorData.email}
216+
{errorData.email_or_phone_number}
186217
</div>
187218
)}
188219
</div>
@@ -253,10 +284,10 @@ export const AuthorizerSignup: FC<{
253284
disabled={
254285
loading ||
255286
disableSignupButton ||
256-
!!errorData.email ||
287+
!!errorData.email_or_phone_number ||
257288
!!errorData.password ||
258289
!!errorData.confirmPassword ||
259-
!formData.email ||
290+
!formData.email_or_phone_number ||
260291
!formData.password ||
261292
!formData.confirmPassword
262293
}

src/components/AuthorizerSocialLogin.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ export const AuthorizerSocialLogin: React.FC<{
157157
)}
158158
{hasSocialLogin &&
159159
(config.is_basic_authentication_enabled ||
160+
config.is_mobile_basic_authentication_enabled ||
160161
config.is_magic_link_login_enabled) && (
161162
<StyledSeparator>OR</StyledSeparator>
162163
)}

src/contexts/AuthorizerContext.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ const AuthorizerContext = createContext<AuthorizerContextPropsType>({
3434
is_magic_link_login_enabled: false,
3535
is_sign_up_enabled: false,
3636
is_strong_password_enabled: true,
37+
is_multi_factor_auth_enabled: false,
38+
is_mobile_basic_authentication_enabled: false,
39+
is_phone_verification_enabled: false,
3740
},
3841
user: null,
3942
token: null,
@@ -103,6 +106,9 @@ let initialState: AuthorizerState = {
103106
is_magic_link_login_enabled: false,
104107
is_sign_up_enabled: false,
105108
is_strong_password_enabled: true,
109+
is_multi_factor_auth_enabled: false,
110+
is_mobile_basic_authentication_enabled: false,
111+
is_phone_verification_enabled: false,
106112
},
107113
};
108114

0 commit comments

Comments
 (0)