added user controller and modified auth method page

This commit is contained in:
Sheen Capadngan
2023-08-06 19:09:38 +08:00
parent 49bcd8839f
commit 5604232aea
8 changed files with 123 additions and 47 deletions
@@ -148,6 +148,43 @@ export const updateAuthProvider = async (req: Request, res: Response) => {
});
}
/**
* Update auth provider of the current user to [authProvider]
* @param req
* @param res
* @returns
*/
export const updateAuthProviders = async (req: Request, res: Response) => {
const {
authProviders
} = req.body;
if (
req.user?.authProvider === AuthProvider.OKTA_SAML
|| req.user?.authProvider === AuthProvider.AZURE_SAML
|| req.user?.authProvider === AuthProvider.JUMPCLOUD_SAML
) {
return res.status(400).send({
message: "Failed to update user authentication method because SAML SSO is enforced"
});
}
const user = await User.findByIdAndUpdate(
req.user._id.toString(),
{
authProviders
},
{
new: true
}
);
return res.status(200).send({
user
});
}
/**
* Return organizations that the current user is part of.
* @param req
+1
View File
@@ -13,6 +13,7 @@ export interface IUser extends Document {
_id: Types.ObjectId;
authId?: string;
authProvider?: AuthProvider;
authProviders?: AuthProvider[];
email: string;
firstName?: string;
lastName?: string;
+18
View File
@@ -57,6 +57,24 @@ router.patch(
usersController.updateAuthProvider
);
router.put(
"/me/auth-providers",
requireAuth({
acceptedAuthModes: [AUTH_MODE_JWT, AUTH_MODE_API_KEY],
}),
body("authProviders").exists().isArray({
min: 1,
}).custom((authProviders: AuthProvider[]) => {
return authProviders.every(provider => [
AuthProvider.EMAIL,
AuthProvider.GOOGLE,
AuthProvider.GITHUB
].includes(provider))
}),
validateRequest,
usersController.updateAuthProviders,
);
router.get(
"/me/organizations",
requireAuth({