Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
{
audience: req.clientId,
subject: req.username,
issuer: process.env.JWT_ISSUER,
},
) as ClientAuthCode;
return await this.createJWT(payload, authClient);
} catch (error) {
if (error.name === 'TokenExpiredError') {
throw new HttpErrors.Unauthorized(AuthErrorKeys.CodeExpired);
// eslint-disable-next-line no-prototype-builtins
} else if (HttpErrors.HttpError.prototype.isPrototypeOf(error)) {
throw error;
} else {
throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
}
}
}
async replaceById(
id: ID,
data: DataObject,
options?: Options,
): Promise {
const currentUser = await this.getCurrentUser();
if (!currentUser) {
throw new HttpErrors.Forbidden(AuthErrorKeys.InvalidCredentials);
}
data.modifiedBy = currentUser.id;
return super.replaceById(id, data, options);
}
}
},
});
if (!user) {
throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
}
const creds = await this.userCredsRepository.findOne({
where: {
userId: user.id,
},
});
if (
!creds ||
creds.authProvider !== 'google' ||
creds.authId !== profile.id
) {
throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
}
const authUser: AuthUser = new AuthUser(user);
authUser.permissions = [];
authUser.externalAuthToken = accessToken;
authUser.externalRefreshToken = refreshToken;
authUser.tenant = new Tenant({id: user.defaultTenant});
return authUser;
};
}
if (!this.client || !this.user) {
throw new HttpErrors.Unauthorized(AuthErrorKeys.ClientInvalid);
} else if (!this.client.userIds || this.client.userIds.length === 0) {
throw new HttpErrors.UnprocessableEntity(AuthErrorKeys.ClientUserMissing);
} else if (!req.client_secret) {
throw new HttpErrors.BadRequest(AuthErrorKeys.ClientSecretMissing);
}
try {
const payload: ClientAuthCode = {
clientId: this.client.clientId,
user: this.user,
};
return await this.createJWT(payload, this.client);
} catch (error) {
throw new HttpErrors.InternalServerError(
AuthErrorKeys.InvalidCredentials,
);
}
}
async verifyPassword(username: string, password: string): Promise {
const user = await super.findOne({where: {username}});
const creds = user && (await this.credentials(user.id).get());
if (!user || user.deleted || !creds || !creds.password) {
throw new HttpErrors.Unauthorized(AuthenticateErrorKeys.UserDoesNotExist);
} else if (!(await bcrypt.compare(password, creds.password))) {
throw new HttpErrors.Unauthorized(AuthErrorKeys.InvalidCredentials);
} else if (
await bcrypt.compare(password, process.env.USER_TEMP_PASSWORD!)
) {
throw new HttpErrors.Forbidden(
AuthenticateErrorKeys.TempPasswordLoginDisallowed,
);
}
return user;
}