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