Skip to content

Commit 6d40b79

Browse files
committed
fix social login
1 parent 9406310 commit 6d40b79

6 files changed

Lines changed: 76 additions & 29 deletions

File tree

package-lock.json

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

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.2.0-beta.1",
2+
"version": "1.2.0-beta.8",
33
"license": "MIT",
44
"main": "dist/index.js",
55
"typings": "dist/index.d.ts",
@@ -66,7 +66,7 @@
6666
"typescript": "^5.2.2"
6767
},
6868
"dependencies": {
69-
"@authorizerdev/authorizer-js": "^2.0.0-beta.1",
69+
"@authorizerdev/authorizer-js": "^2.0.0-beta.3",
7070
"validator": "^13.11.0"
7171
}
7272
}

src/components/AuthorizerForgotPassword.tsx

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ import { useAuthorizer } from '../contexts/AuthorizerContext';
88
import { StyledButton, StyledFooter, StyledLink } from '../styledComponents';
99
import { formatErrorMessage } from '../utils/format';
1010
import { Message } from './Message';
11-
import { AuthorizerVerifyOtp } from './AuthorizerVerifyOtp';
1211
import { OtpDataType } from '../types';
12+
import { AuthorizerResetPassword } from './AuthorizerResetPassword';
1313

1414
interface InputDataType {
1515
email_or_phone_number: string | null;
@@ -24,8 +24,9 @@ const initOtpData: OtpDataType = {
2424
export const AuthorizerForgotPassword: FC<{
2525
setView?: (v: Views) => void;
2626
onForgotPassword?: (data: any) => void;
27+
onPasswordReset?: () => void;
2728
urlProps?: Record<string, any>;
28-
}> = ({ setView, onForgotPassword, urlProps }) => {
29+
}> = ({ setView, onForgotPassword, onPasswordReset, urlProps }) => {
2930
const [error, setError] = useState(``);
3031
const [loading, setLoading] = useState(false);
3132
const [successMessage, setSuccessMessage] = useState(``);
@@ -110,7 +111,7 @@ export const AuthorizerForgotPassword: FC<{
110111
email_or_phone_number: 'Email OR Phone Number is required',
111112
});
112113
} else if (
113-
formData.email_or_phone_number !== '' &&
114+
formData.email_or_phone_number !== null &&
114115
!isEmail(formData.email_or_phone_number || '') &&
115116
!isMobilePhone(formData.email_or_phone_number || '')
116117
) {
@@ -124,21 +125,17 @@ export const AuthorizerForgotPassword: FC<{
124125
}, [formData.email_or_phone_number]);
125126

126127
if (successMessage) {
127-
return <Message type={MessageType.Success} text={successMessage} />;
128-
}
129-
130-
if (otpData.is_screen_visible) {
131128
return (
132-
<AuthorizerVerifyOtp
133-
email={otpData.email}
134-
phone_number={otpData.phone_number}
135-
urlProps={urlProps}
136-
onLogin={() => {
137-
if (onForgotPassword) {
138-
onForgotPassword({});
139-
}
140-
}}
141-
/>
129+
<>
130+
<Message type={MessageType.Success} text={successMessage} />
131+
{otpData.is_screen_visible && (
132+
<AuthorizerResetPassword
133+
showOTPInput
134+
onReset={onPasswordReset}
135+
phone_number={otpData.phone_number}
136+
/>
137+
)}
138+
</>
142139
);
143140
}
144141

@@ -191,7 +188,7 @@ export const AuthorizerForgotPassword: FC<{
191188
}
192189
appearance={ButtonAppearance.Primary}
193190
>
194-
{loading ? `Processing ...` : `Send Email`}
191+
{loading ? `Processing ...` : `Request Change`}
195192
</StyledButton>
196193
</form>
197194
{setView && (

src/components/AuthorizerResetPassword.tsx

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,32 @@ import { getSearchParams } from '../utils/url';
1010
import PasswordStrengthIndicator from './PasswordStrengthIndicator';
1111

1212
type Props = {
13+
showOTPInput?: boolean;
1314
onReset?: (res: any) => void;
15+
phone_number?: string;
1416
};
1517

1618
interface InputDataType {
19+
otp: string | null;
1720
password: string | null;
1821
confirmPassword: string | null;
1922
}
2023

21-
export const AuthorizerResetPassword: FC<Props> = ({ onReset }) => {
24+
export const AuthorizerResetPassword: FC<Props> = ({
25+
onReset,
26+
showOTPInput,
27+
phone_number,
28+
}) => {
2229
const { token, redirect_uri } = getSearchParams();
23-
const [error, setError] = useState(!token ? `Invalid token` : ``);
30+
const [error, setError] = useState('');
2431
const [loading, setLoading] = useState(false);
2532
const [formData, setFormData] = useState<InputDataType>({
33+
otp: null,
2634
password: null,
2735
confirmPassword: null,
2836
});
2937
const [errorData, setErrorData] = useState<InputDataType>({
38+
otp: null,
3039
password: null,
3140
confirmPassword: null,
3241
});
@@ -43,6 +52,8 @@ export const AuthorizerResetPassword: FC<Props> = ({ onReset }) => {
4352
try {
4453
const { data: res, errors } = await authorizerRef.resetPassword({
4554
token,
55+
otp: formData.otp || '',
56+
phone_number: phone_number || '',
4657
password: formData.password || '',
4758
confirm_password: formData.confirmPassword || '',
4859
});
@@ -111,6 +122,30 @@ export const AuthorizerResetPassword: FC<Props> = ({ onReset }) => {
111122
<Message type={MessageType.Error} text={error} onClose={onErrorClose} />
112123
)}
113124
<form onSubmit={onSubmit} name="authorizer-reset-password-form">
125+
{showOTPInput && (
126+
<div className={styles['styled-form-group']}>
127+
<label
128+
className={styles['form-input-label']}
129+
htmlFor="authorizer-verify-otp"
130+
>
131+
<span>* </span>OTP (One Time Password)
132+
</label>
133+
<input
134+
name="otp"
135+
id="authorizer-verify-otp"
136+
className={`${styles['form-input-field']} ${
137+
errorData.otp ? styles['input-error-content'] : null
138+
}`}
139+
placeholder="e.g.- AB123C"
140+
type="password"
141+
value={formData.otp || ''}
142+
onChange={(e) => onInputChange('otp', e.target.value)}
143+
/>
144+
{errorData.otp && (
145+
<div className={styles['form-input-error']}>{errorData.otp}</div>
146+
)}
147+
</div>
148+
)}
114149
<div className={styles['styled-form-group']}>
115150
<label
116151
className={styles['form-input-label']}

src/components/AuthorizerRoot.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,16 @@ export const AuthorizerRoot: FC<{
1717
onSignup?: (data: AuthToken | void) => void;
1818
onMagicLinkLogin?: (data: any) => void;
1919
onForgotPassword?: (data: any) => void;
20+
onPasswordReset?: () => void;
2021
roles?: string[];
21-
}> = ({ onLogin, onSignup, onMagicLinkLogin, onForgotPassword, roles }) => {
22+
}> = ({
23+
onLogin,
24+
onSignup,
25+
onMagicLinkLogin,
26+
onForgotPassword,
27+
onPasswordReset,
28+
roles,
29+
}) => {
2230
const [view, setView] = useState(Views.Login);
2331
const { config } = useAuthorizer();
2432
const searchParams = new URLSearchParams(
@@ -84,6 +92,7 @@ export const AuthorizerRoot: FC<{
8492
<AuthorizerForgotPassword
8593
setView={setView}
8694
onForgotPassword={onForgotPassword}
95+
onPasswordReset={onPasswordReset}
8796
urlProps={urlProps}
8897
/>
8998
)}

src/components/AuthorizerSocialLogin.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ export const AuthorizerSocialLogin: React.FC<{
3030
const data: {
3131
scope?: string;
3232
roles?: string[];
33+
redirect_uri?: string;
34+
redirectURL?: string;
3335
} = {
3436
...(urlProps || {}),
3537
scope: urlProps?.scope.join(' '),
@@ -39,6 +41,10 @@ export const AuthorizerSocialLogin: React.FC<{
3941
data.roles = roles;
4042
}
4143

44+
if (!data.redirect_uri && !data.redirectURL) {
45+
data.redirect_uri = config.redirectURL;
46+
}
47+
4248
const queryParams = createQueryParams(data);
4349

4450
return (

0 commit comments

Comments
 (0)