modified backend controllers to support new auth providers

This commit is contained in:
Sheen Capadngan
2023-08-06 19:45:27 +08:00
parent 5604232aea
commit 04fdccc45d
5 changed files with 25 additions and 6 deletions
+8 -2
View File
@@ -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,
+5 -2
View File
@@ -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.")
}
}
}
+3
View File
@@ -44,6 +44,9 @@ const userSchema = new Schema<IUser>(
type: String,
enum: AuthProvider,
},
authProviders: [{
type: String,
}],
email: {
type: String,
required: true,
+3
View File
@@ -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