diff --git a/apps/frontend/src/app/(app)/(site)/integrations/social/layout.tsx b/apps/frontend/src/app/(app)/(site)/integrations/social/layout.tsx
index 37bea8d8..124e0fec 100644
--- a/apps/frontend/src/app/(app)/(site)/integrations/social/layout.tsx
+++ b/apps/frontend/src/app/(app)/(site)/integrations/social/layout.tsx
@@ -8,9 +8,11 @@ export default async function IntegrationLayout({
const t = await getT();
return (
-
- {t('adding_channel_redirecting_you', 'Adding channel, Redirecting You')}
- {children}
+
+
+ {t('adding_channel_redirecting_you', 'Adding channel, Redirecting You')}
+ {children}
+
);
}
diff --git a/libraries/helpers/src/utils/valid.url.path.ts b/libraries/helpers/src/utils/valid.url.path.ts
index 8022ecc6..d7c18931 100644
--- a/libraries/helpers/src/utils/valid.url.path.ts
+++ b/libraries/helpers/src/utils/valid.url.path.ts
@@ -1,4 +1,28 @@
-import { ValidationArguments, ValidatorConstraintInterface, ValidatorConstraint } from "class-validator";
+import {
+ ValidationArguments,
+ ValidatorConstraintInterface,
+ ValidatorConstraint,
+} from 'class-validator';
+
+@ValidatorConstraint({ name: 'checkValidExtension', async: false })
+export class ValidUrlExtension implements ValidatorConstraintInterface {
+ validate(text: string, args: ValidationArguments) {
+ return (
+ text.endsWith('.png') ||
+ text.endsWith('.jpg') ||
+ text.endsWith('.jpeg') ||
+ text.endsWith('.gif') ||
+ text.endsWith('.mp4')
+ );
+ }
+
+ defaultMessage(args: ValidationArguments) {
+ // here you can provide default error message if validation failed
+ return (
+ 'File must have a valid extension: .png, .jpg, .jpeg, .gif, or .mp4'
+ );
+ }
+}
@ValidatorConstraint({ name: 'checkValidPath', async: false })
export class ValidUrlPath implements ValidatorConstraintInterface {
@@ -7,11 +31,15 @@ export class ValidUrlPath implements ValidatorConstraintInterface {
return true;
}
- return (text || 'invalid url').indexOf(process.env.RESTRICT_UPLOAD_DOMAINS) > -1;
+ return (
+ (text || 'invalid url').indexOf(process.env.RESTRICT_UPLOAD_DOMAINS) > -1
+ );
}
defaultMessage(args: ValidationArguments) {
// here you can provide default error message if validation failed
- return 'URL must contain the domain: ' + process.env.RESTRICT_UPLOAD_DOMAINS;
+ return (
+ 'URL must contain the domain: ' + process.env.RESTRICT_UPLOAD_DOMAINS
+ );
}
-}
\ No newline at end of file
+}
diff --git a/libraries/nestjs-libraries/src/dtos/media/media.dto.ts b/libraries/nestjs-libraries/src/dtos/media/media.dto.ts
index 2078921a..8d0ab7fc 100644
--- a/libraries/nestjs-libraries/src/dtos/media/media.dto.ts
+++ b/libraries/nestjs-libraries/src/dtos/media/media.dto.ts
@@ -1,5 +1,5 @@
import { IsDefined, IsString, IsUrl, ValidateIf, Validate } from 'class-validator';
-import { ValidUrlPath } from '@gitroom/helpers/utils/valid.url.path';
+import { ValidUrlExtension, ValidUrlPath } from '@gitroom/helpers/utils/valid.url.path';
export class MediaDto {
@IsString()
@@ -9,6 +9,7 @@ export class MediaDto {
@IsString()
@IsDefined()
@Validate(ValidUrlPath)
+ @Validate(ValidUrlExtension)
path: string;
@ValidateIf((o) => o.alt)