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.authProvider && user.authProvider !== AuthProvider.EMAIL) {
|
||||
const shouldValidateProviderAuth = (user.authProvider && user.authProvider !== AuthProvider.EMAIL)
|
||||
|| (user.authProviders && !user.authProviders?.includes(AuthProvider.EMAIL))
|
||||
|
||||
if (shouldValidateProviderAuth) {
|
||||
await validateProviderAuthToken({
|
||||
email,
|
||||
user,
|
||||
@@ -116,7 +119,10 @@ export const login2 = async (req: Request, res: Response) => {
|
||||
|
||||
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({
|
||||
email,
|
||||
user,
|
||||
|
||||
@@ -390,10 +390,13 @@ export const validateProviderAuthToken = async ({
|
||||
jwt.verify(providerAuthToken, await getJwtProviderAuthSecret())
|
||||
);
|
||||
|
||||
const doesProviderMatch = (user.authProvider && user.authProvider === decodedToken.authProvider)
|
||||
|| (user.authProviders && user.authProviders.includes(decodedToken.authProvider));
|
||||
|
||||
if (
|
||||
decodedToken.authProvider !== user.authProvider ||
|
||||
!doesProviderMatch ||
|
||||
decodedToken.email !== email
|
||||
) {
|
||||
throw new Error("Invalid authentication credentials.")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,9 @@ const userSchema = new Schema<IUser>(
|
||||
type: String,
|
||||
enum: AuthProvider,
|
||||
},
|
||||
authProviders: [{
|
||||
type: String,
|
||||
}],
|
||||
email: {
|
||||
type: String,
|
||||
required: true,
|
||||
|
||||
@@ -119,6 +119,7 @@ const initializePassport = async () => {
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
isUserCompleted,
|
||||
...(req.query.state ? {
|
||||
callbackPort: req.query.state as string
|
||||
@@ -173,6 +174,7 @@ const initializePassport = async () => {
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
isUserCompleted,
|
||||
...(req.query.state ? {
|
||||
callbackPort: req.query.state as string
|
||||
@@ -302,6 +304,7 @@ const initializePassport = async () => {
|
||||
lastName,
|
||||
organizationName: organization?.name,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
isUserCompleted,
|
||||
...(req.body.RelayState ? {
|
||||
callbackPort: req.body.RelayState as string
|
||||
|
||||
@@ -33,6 +33,10 @@ export const AuthMethodSection = () => {
|
||||
const { user } = useUser();
|
||||
const { mutateAsync, isLoading } = useUpdateUserAuthProviders();
|
||||
|
||||
const defaultAuthMethods = user.authProviders?.length ?
|
||||
user.authProviders :
|
||||
[user?.authProvider ?? "email"];
|
||||
|
||||
const {
|
||||
reset,
|
||||
handleSubmit,
|
||||
@@ -40,7 +44,7 @@ export const AuthMethodSection = () => {
|
||||
watch,
|
||||
} = useForm<FormData>({
|
||||
defaultValues: {
|
||||
authMethods: [user?.authProvider ?? "email"]
|
||||
authMethods: defaultAuthMethods,
|
||||
},
|
||||
resolver: yupResolver(schema)
|
||||
});
|
||||
@@ -50,7 +54,7 @@ export const AuthMethodSection = () => {
|
||||
useEffect(() => {
|
||||
if (user) {
|
||||
reset({
|
||||
authMethods: [user?.authProvider ?? "email"]
|
||||
authMethods: defaultAuthMethods,
|
||||
});
|
||||
}
|
||||
}, [user]);
|
||||
|
||||
Reference in New Issue
Block a user