mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
finalization of create token logic
This commit is contained in:
@@ -56,10 +56,9 @@ export const login1 = async (req: Request, res: Response) => {
|
||||
|
||||
if (!user) throw new Error("Failed to find user");
|
||||
|
||||
const shouldValidateProviderAuth = (user.authProvider && user.authProvider !== AuthProvider.EMAIL)
|
||||
|| (user.authProviders && !user.authProviders?.includes(AuthProvider.EMAIL))
|
||||
|
||||
if (shouldValidateProviderAuth) {
|
||||
let authProviders = [...(user.authProviders || []), user.authProvider];
|
||||
|
||||
if (!authProviders.includes(AuthProvider.EMAIL)) {
|
||||
await validateProviderAuthToken({
|
||||
email,
|
||||
user,
|
||||
@@ -119,10 +118,9 @@ export const login2 = async (req: Request, res: Response) => {
|
||||
|
||||
if (!user) throw new Error("Failed to find user");
|
||||
|
||||
const shouldValidateProviderAuth = (user.authProvider && user.authProvider !== AuthProvider.EMAIL)
|
||||
|| (user.authProviders && !user.authProviders?.includes(AuthProvider.EMAIL))
|
||||
|
||||
if (shouldValidateProviderAuth) {
|
||||
let authProviders = [...(user.authProviders || []), user.authProvider];
|
||||
|
||||
if (!authProviders.includes(AuthProvider.EMAIL)) {
|
||||
await validateProviderAuthToken({
|
||||
email,
|
||||
user,
|
||||
|
||||
@@ -390,11 +390,10 @@ export const validateProviderAuthToken = async ({
|
||||
jwt.verify(providerAuthToken, await getJwtProviderAuthSecret())
|
||||
);
|
||||
|
||||
const doesProviderMatch = (user.authProvider && user.authProvider === decodedToken.authProvider)
|
||||
|| (user.authProviders && user.authProviders.includes(decodedToken.authProvider));
|
||||
let authProviders = [...(user.authProviders || []), user.authProvider];
|
||||
|
||||
if (
|
||||
!doesProviderMatch ||
|
||||
!authProviders.includes(decodedToken.authProvider) ||
|
||||
decodedToken.email !== email
|
||||
) {
|
||||
throw new Error("Invalid authentication credentials.")
|
||||
|
||||
@@ -46,6 +46,7 @@ const userSchema = new Schema<IUser>(
|
||||
},
|
||||
authProviders: [{
|
||||
type: String,
|
||||
enum: AuthProvider,
|
||||
}],
|
||||
email: {
|
||||
type: String,
|
||||
|
||||
@@ -97,20 +97,22 @@ const initializePassport = async () => {
|
||||
email
|
||||
}).select("+publicKey");
|
||||
|
||||
if (user && user.authProvider !== AuthProvider.GOOGLE) {
|
||||
done(InternalServerError());
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
user = await new User({
|
||||
email,
|
||||
authProvider: AuthProvider.GOOGLE,
|
||||
authProviders: [AuthProvider.GOOGLE],
|
||||
authId: profile.id,
|
||||
firstName: profile.name.givenName,
|
||||
lastName: profile.name.familyName
|
||||
}).save();
|
||||
}
|
||||
|
||||
let authProviders = [...(user.authProviders || []), user.authProvider];
|
||||
|
||||
if (!authProviders.includes(AuthProvider.GOOGLE)) {
|
||||
done(InternalServerError());
|
||||
}
|
||||
|
||||
const isUserCompleted = !!user.publicKey;
|
||||
const providerAuthToken = createToken({
|
||||
payload: {
|
||||
@@ -118,8 +120,7 @@ const initializePassport = async () => {
|
||||
email: user.email,
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
authProvider: AuthProvider.GOOGLE,
|
||||
isUserCompleted,
|
||||
...(req.query.state ? {
|
||||
callbackPort: req.query.state as string
|
||||
@@ -151,21 +152,23 @@ const initializePassport = async () => {
|
||||
let user = await User.findOne({
|
||||
email
|
||||
}).select("+publicKey");
|
||||
|
||||
if (user && user.authProvider !== AuthProvider.GITHUB) {
|
||||
done(InternalServerError());
|
||||
}
|
||||
|
||||
|
||||
if (!user) {
|
||||
user = await new User({
|
||||
email: email,
|
||||
authProvider: AuthProvider.GITHUB,
|
||||
authProviders: [AuthProvider.GITHUB],
|
||||
authId: profile.id,
|
||||
firstName: profile.displayName,
|
||||
lastName: ""
|
||||
}).save();
|
||||
}
|
||||
|
||||
let authProviders = [...(user.authProviders || []), user.authProvider];
|
||||
|
||||
if (!authProviders.includes(AuthProvider.GITHUB)) {
|
||||
done(InternalServerError());
|
||||
}
|
||||
|
||||
const isUserCompleted = !!user.publicKey;
|
||||
const providerAuthToken = createToken({
|
||||
payload: {
|
||||
@@ -173,8 +176,7 @@ const initializePassport = async () => {
|
||||
email: user.email,
|
||||
firstName: user.firstName,
|
||||
lastName: user.lastName,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
authProvider: AuthProvider.GITHUB,
|
||||
isUserCompleted,
|
||||
...(req.query.state ? {
|
||||
callbackPort: req.query.state as string
|
||||
@@ -249,7 +251,7 @@ const initializePassport = async () => {
|
||||
await User.findByIdAndUpdate(
|
||||
user._id,
|
||||
{
|
||||
authProvider: req.ssoConfig.authProvider
|
||||
authProviders: [req.ssoConfig.authProvider]
|
||||
},
|
||||
{
|
||||
new: true
|
||||
@@ -281,7 +283,7 @@ const initializePassport = async () => {
|
||||
} else {
|
||||
user = await new User({
|
||||
email,
|
||||
authProvider: req.ssoConfig.authProvider,
|
||||
authProviders: [req.ssoConfig.authProvider],
|
||||
firstName,
|
||||
lastName
|
||||
}).save();
|
||||
@@ -303,8 +305,7 @@ const initializePassport = async () => {
|
||||
firstName,
|
||||
lastName,
|
||||
organizationName: organization?.name,
|
||||
authProvider: user.authProvider,
|
||||
authProviders: user.authProviders,
|
||||
authProvider: req.ssoConfig.authProvider,
|
||||
isUserCompleted,
|
||||
...(req.body.RelayState ? {
|
||||
callbackPort: req.body.RelayState as string
|
||||
|
||||
Reference in New Issue
Block a user