mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
modified backend controllers to support new auth providers
This commit is contained in:
@@ -56,7 +56,10 @@ export const login1 = async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
if (!user) throw new Error("Failed to find user");
|
if (!user) throw new Error("Failed to find user");
|
||||||
|
|
||||||
if (user.authProvider && user.authProvider !== AuthProvider.EMAIL) {
|
const shouldValidateProviderAuth = (user.authProvider && user.authProvider !== AuthProvider.EMAIL)
|
||||||
|
|| (user.authProviders && !user.authProviders?.includes(AuthProvider.EMAIL))
|
||||||
|
|
||||||
|
if (shouldValidateProviderAuth) {
|
||||||
await validateProviderAuthToken({
|
await validateProviderAuthToken({
|
||||||
email,
|
email,
|
||||||
user,
|
user,
|
||||||
@@ -116,7 +119,10 @@ export const login2 = async (req: Request, res: Response) => {
|
|||||||
|
|
||||||
if (!user) throw new Error("Failed to find user");
|
if (!user) throw new Error("Failed to find user");
|
||||||
|
|
||||||
if (user.authProvider && user.authProvider !== AuthProvider.EMAIL) {
|
const shouldValidateProviderAuth = (user.authProvider && user.authProvider !== AuthProvider.EMAIL)
|
||||||
|
|| (user.authProviders && !user.authProviders?.includes(AuthProvider.EMAIL))
|
||||||
|
|
||||||
|
if (shouldValidateProviderAuth) {
|
||||||
await validateProviderAuthToken({
|
await validateProviderAuthToken({
|
||||||
email,
|
email,
|
||||||
user,
|
user,
|
||||||
|
|||||||
@@ -390,10 +390,13 @@ export const validateProviderAuthToken = async ({
|
|||||||
jwt.verify(providerAuthToken, await getJwtProviderAuthSecret())
|
jwt.verify(providerAuthToken, await getJwtProviderAuthSecret())
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const doesProviderMatch = (user.authProvider && user.authProvider === decodedToken.authProvider)
|
||||||
|
|| (user.authProviders && user.authProviders.includes(decodedToken.authProvider));
|
||||||
|
|
||||||
if (
|
if (
|
||||||
decodedToken.authProvider !== user.authProvider ||
|
!doesProviderMatch ||
|
||||||
decodedToken.email !== email
|
decodedToken.email !== email
|
||||||
) {
|
) {
|
||||||
throw new Error("Invalid authentication credentials.")
|
throw new Error("Invalid authentication credentials.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ const userSchema = new Schema<IUser>(
|
|||||||
type: String,
|
type: String,
|
||||||
enum: AuthProvider,
|
enum: AuthProvider,
|
||||||
},
|
},
|
||||||
|
authProviders: [{
|
||||||
|
type: String,
|
||||||
|
}],
|
||||||
email: {
|
email: {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ const initializePassport = async () => {
|
|||||||
firstName: user.firstName,
|
firstName: user.firstName,
|
||||||
lastName: user.lastName,
|
lastName: user.lastName,
|
||||||
authProvider: user.authProvider,
|
authProvider: user.authProvider,
|
||||||
|
authProviders: user.authProviders,
|
||||||
isUserCompleted,
|
isUserCompleted,
|
||||||
...(req.query.state ? {
|
...(req.query.state ? {
|
||||||
callbackPort: req.query.state as string
|
callbackPort: req.query.state as string
|
||||||
@@ -173,6 +174,7 @@ const initializePassport = async () => {
|
|||||||
firstName: user.firstName,
|
firstName: user.firstName,
|
||||||
lastName: user.lastName,
|
lastName: user.lastName,
|
||||||
authProvider: user.authProvider,
|
authProvider: user.authProvider,
|
||||||
|
authProviders: user.authProviders,
|
||||||
isUserCompleted,
|
isUserCompleted,
|
||||||
...(req.query.state ? {
|
...(req.query.state ? {
|
||||||
callbackPort: req.query.state as string
|
callbackPort: req.query.state as string
|
||||||
@@ -302,6 +304,7 @@ const initializePassport = async () => {
|
|||||||
lastName,
|
lastName,
|
||||||
organizationName: organization?.name,
|
organizationName: organization?.name,
|
||||||
authProvider: user.authProvider,
|
authProvider: user.authProvider,
|
||||||
|
authProviders: user.authProviders,
|
||||||
isUserCompleted,
|
isUserCompleted,
|
||||||
...(req.body.RelayState ? {
|
...(req.body.RelayState ? {
|
||||||
callbackPort: req.body.RelayState as string
|
callbackPort: req.body.RelayState as string
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ export const AuthMethodSection = () => {
|
|||||||
const { user } = useUser();
|
const { user } = useUser();
|
||||||
const { mutateAsync, isLoading } = useUpdateUserAuthProviders();
|
const { mutateAsync, isLoading } = useUpdateUserAuthProviders();
|
||||||
|
|
||||||
|
const defaultAuthMethods = user.authProviders?.length ?
|
||||||
|
user.authProviders :
|
||||||
|
[user?.authProvider ?? "email"];
|
||||||
|
|
||||||
const {
|
const {
|
||||||
reset,
|
reset,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
@@ -40,7 +44,7 @@ export const AuthMethodSection = () => {
|
|||||||
watch,
|
watch,
|
||||||
} = useForm<FormData>({
|
} = useForm<FormData>({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
authMethods: [user?.authProvider ?? "email"]
|
authMethods: defaultAuthMethods,
|
||||||
},
|
},
|
||||||
resolver: yupResolver(schema)
|
resolver: yupResolver(schema)
|
||||||
});
|
});
|
||||||
@@ -50,7 +54,7 @@ export const AuthMethodSection = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user) {
|
if (user) {
|
||||||
reset({
|
reset({
|
||||||
authMethods: [user?.authProvider ?? "email"]
|
authMethods: defaultAuthMethods,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [user]);
|
}, [user]);
|
||||||
|
|||||||
Reference in New Issue
Block a user