Merge branch 'main' of git.targo.ca:Targo/targo_backend into dev/matthieu/refactor
This commit is contained in:
commit
68f29b8842
|
|
@ -17,9 +17,7 @@ ENV AUTHENTIK_AUTH_URL="https://auth.targo.ca/application/o/authorize/"
|
|||
ENV AUTHENTIK_TOKEN_URL="https://auth.targo.ca/application/o/token/"
|
||||
ENV AUTHENTIK_USERINFO_URL="https://auth.targo.ca/application/o/userinfo/"
|
||||
|
||||
ENV TARGO_FRONTEND_URI_1="http://targo-frontend-nicolas:9000"
|
||||
ENV TARGO_FRONTEND_URI_2="http://targo-frontend-matthieu:9000"
|
||||
ENV TARGO_FRONTEND_URI_3="http://targo-frontend-lion:9000"
|
||||
ENV TARGO_FRONTEND_URI="http://10.100.251.2/"
|
||||
|
||||
ENV ATTACHMENTS_SERVER_ID="server"
|
||||
ENV ATTACHMENTS_ROOT=C:/
|
||||
|
|
|
|||
|
|
@ -315,7 +315,7 @@ model AttachmentVariants {
|
|||
attachment_id Int
|
||||
attachment Attachments @relation("attachmentVariantAttachment",fields: [attachment_id], references: [id], onDelete: Cascade)
|
||||
variant String
|
||||
patch String
|
||||
path String
|
||||
bytes Int
|
||||
width Int?
|
||||
height Int?
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ export class AuthController {
|
|||
@Get('/callback')
|
||||
@UseGuards(OIDCLoginGuard)
|
||||
loginCallback(@Req() req: Request, @Res() res: Response) {
|
||||
res.redirect('http://localhost:9000/#/login-success');
|
||||
res.redirect('http://10.100.251.2:9011/#/login-success');
|
||||
}
|
||||
|
||||
@Get('/me')
|
||||
|
|
|
|||
110
src/main.ts
110
src/main.ts
|
|
@ -1,10 +1,10 @@
|
|||
import 'reflect-metadata';
|
||||
//import and if case for @nestjs/schedule Cron jobs
|
||||
import * as nodeCrypto from 'crypto';
|
||||
if(!(globalThis as any).crypto) {
|
||||
(globalThis as any).crypto = nodeCrypto;
|
||||
if (!(globalThis as any).crypto) {
|
||||
(globalThis as any).crypto = nodeCrypto;
|
||||
}
|
||||
import { ensureAttachmentsTmpDir } from './config/attachment.fs';
|
||||
import { ensureAttachmentsTmpDir } from './config/attachment.fs';
|
||||
|
||||
import { resolveAttachmentsRoot } from './config/attachment.config';// log to be removed post dev
|
||||
import { ATT_TMP_DIR } from './config/attachment.config'; // log to be removed post dev
|
||||
|
|
@ -20,72 +20,72 @@ import * as session from 'express-session';
|
|||
import * as passport from 'passport';
|
||||
|
||||
async function bootstrap() {
|
||||
const app = await NestFactory.create(AppModule);
|
||||
const app = await NestFactory.create(AppModule);
|
||||
|
||||
const reflector = app.get(Reflector); //setup Reflector for Roles()
|
||||
const reflector = app.get(Reflector); //setup Reflector for Roles()
|
||||
|
||||
app.useGlobalGuards(
|
||||
// new JwtAuthGuard(reflector), //Authentification JWT
|
||||
new RolesGuard(reflector), //deny-by-default and Role-based Access Control
|
||||
new OwnershipGuard(reflector, app.get(ModuleRef)), //Global use of OwnershipGuard, not implemented yet
|
||||
);
|
||||
app.useGlobalGuards(
|
||||
// new JwtAuthGuard(reflector), //Authentification JWT
|
||||
new RolesGuard(reflector), //deny-by-default and Role-based Access Control
|
||||
new OwnershipGuard(reflector, app.get(ModuleRef)), //Global use of OwnershipGuard, not implemented yet
|
||||
);
|
||||
|
||||
// Authentication and session
|
||||
app.use(session({
|
||||
secret: 'This is a super secret dev secret that you cant share with anyone',
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
rolling: true,
|
||||
cookie: {
|
||||
maxAge: 30 * 60 * 1000,
|
||||
httpOnly: true,
|
||||
}
|
||||
}))
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
// Authentication and session
|
||||
app.use(session({
|
||||
secret: 'This is a super secret dev secret that you cant share with anyone',
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
rolling: true,
|
||||
cookie: {
|
||||
maxAge: 30 * 60 * 1000,
|
||||
httpOnly: true,
|
||||
}
|
||||
}))
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
|
||||
// Enable CORS
|
||||
app.enableCors({
|
||||
origin: [process.env.TARGO_FRONTEND_URI_1, process.env.TARGO_FRONTEND_URI_2, process.env.TARGO_FRONTEND_URI_3],
|
||||
credentials: true,
|
||||
});
|
||||
// Enable CORS
|
||||
app.enableCors({
|
||||
origin: ['http://10.100.251.2:9011', 'http://10.100.251.2:9012', 'http://10.100.251.2:9013'],
|
||||
credentials: true,
|
||||
});
|
||||
|
||||
//swagger config
|
||||
const config = new DocumentBuilder()
|
||||
.setTitle('Targo_Backend')
|
||||
.setDescription('Documentation de l`API REST pour Targo (NestJS + Prisma)')
|
||||
.setVersion('1.0')
|
||||
.addBearerAuth({
|
||||
type: 'http',
|
||||
scheme: 'bearer',
|
||||
bearerFormat: 'JWT',
|
||||
name: 'Authorization',
|
||||
description: 'Invalid JWT token',
|
||||
in: 'header',
|
||||
}, 'access-token')
|
||||
.addTag('Users')
|
||||
.addTag('Employees')
|
||||
.addTag('Customers')
|
||||
.addTag('Timesheets')
|
||||
.addTag('Shifts')
|
||||
.addTag('Leave Requests')
|
||||
.addTag('Shift Codes')
|
||||
.addTag('OAuth Access Tokens')
|
||||
.addTag('Authorization')
|
||||
.build();
|
||||
|
||||
//swagger config
|
||||
const config = new DocumentBuilder()
|
||||
.setTitle('Targo_Backend')
|
||||
.setDescription('Documentation de l`API REST pour Targo (NestJS + Prisma)')
|
||||
.setVersion('1.0')
|
||||
.addBearerAuth({
|
||||
type: 'http',
|
||||
scheme: 'bearer',
|
||||
bearerFormat: 'JWT',
|
||||
name: 'Authorization',
|
||||
description: 'Invalid JWT token',
|
||||
in: 'header',
|
||||
}, 'access-token')
|
||||
.addTag('Users')
|
||||
.addTag('Employees')
|
||||
.addTag('Customers')
|
||||
.addTag('Timesheets')
|
||||
.addTag('Shifts')
|
||||
.addTag('Leave Requests')
|
||||
.addTag('Shift Codes')
|
||||
.addTag('OAuth Access Tokens')
|
||||
.addTag('Authorization')
|
||||
.build();
|
||||
|
||||
//document builder for swagger docs
|
||||
const documentFactory = () => SwaggerModule.createDocument(app, config);
|
||||
const document = documentFactory()
|
||||
SwaggerModule.setup('api/docs', app, document);
|
||||
writeFileSync('./docs/swagger/swagger-spec.json', JSON.stringify(document, null, 2));
|
||||
|
||||
|
||||
// logs to be removed post dev
|
||||
console.log('[ENV.ATTACHMENTS_ROOT]', process.env.ATTACHMENTS_ROOT);
|
||||
console.log('[resolveAttachmentsRoot()]', resolveAttachmentsRoot());
|
||||
console.log('[ATT_TMP_DIR()]', ATT_TMP_DIR());
|
||||
|
||||
await ensureAttachmentsTmpDir();
|
||||
await app.listen(process.env.PORT ?? 3000);
|
||||
await ensureAttachmentsTmpDir();
|
||||
await app.listen(process.env.PORT ?? 3000);
|
||||
}
|
||||
bootstrap();
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
// import { Injectable, Logger } from "@nestjs/common";
|
||||
// import { Cron } from "@nestjs/schedule";
|
||||
// import { TimesheetArchiveService } from "src/time-and-attendance/modules/time-tracker/timesheets/services/timesheet-archive.service";
|
||||
// import { ExpensesArchivalService } from "src/time-and-attendance/modules/expenses/services/expenses-archival.service";
|
||||
// import { ShiftsArchivalService } from "src/time-and-attendance/modules/time-tracker/shifts/services/shifts-archival.service";
|
||||
// import { TimesheetArchiveService } from "src/time-and-attendance/modules/time-tracker/timesheets/services/timesheet-archive.service";
|
||||
// import { Injectable, Logger } from "@nestjs/common";
|
||||
// import { Cron } from "@nestjs/schedule";
|
||||
|
||||
// @Injectable()
|
||||
// export class ArchivalService {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,19 @@
|
|||
import { ScheduleModule } from "@nestjs/schedule";
|
||||
import { PrismaService } from "src/prisma/prisma.service";
|
||||
import { ArchivalAttachmentService } from "./services/archival-attachment.service";
|
||||
import { ArchivalAttachmentService } from "src/modules/attachments/services/archival-attachment.service";
|
||||
import { GarbargeCollectorService } from "src/modules/attachments/services/garbage-collector.service";
|
||||
import { AttachmentsController } from "src/modules/attachments/controllers/attachments.controller";
|
||||
import { DiskStorageService } from "src/modules/attachments/services/disk-storage.service";
|
||||
// import { ScheduleModule } from "@nestjs/schedule";
|
||||
import { VariantsQueue } from "src/modules/attachments/services/variants.queue";
|
||||
import { Module } from "@nestjs/common";
|
||||
import { GarbargeCollectorService } from "./services/garbage-collector.service";
|
||||
|
||||
@Module({
|
||||
imports: [ScheduleModule.forRoot()],
|
||||
// imports: [ScheduleModule.forRoot()],
|
||||
controllers: [ AttachmentsController],
|
||||
providers: [
|
||||
PrismaService,
|
||||
ArchivalAttachmentService,
|
||||
GarbargeCollectorService,
|
||||
DiskStorageService,
|
||||
VariantsQueue,
|
||||
],
|
||||
exports: [
|
||||
ArchivalAttachmentService,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import { Injectable } from '@nestjs/common';
|
||||
import { createHash } from 'node:crypto';
|
||||
import { promises as fsp } from 'node:fs';
|
||||
import { createWriteStream, statSync, existsSync } from 'node:fs';
|
||||
|
|
@ -7,6 +8,7 @@ import { ATT_TMP_DIR, resolveAttachmentsRoot } from 'src/config/attachment.confi
|
|||
|
||||
export type SaveResult = { sha256:string, storage_path:string, size:number};
|
||||
|
||||
@Injectable()
|
||||
export class DiskStorageService {
|
||||
private root = resolveAttachmentsRoot();
|
||||
|
||||
|
|
@ -38,7 +40,7 @@ export class DiskStorageService {
|
|||
|
||||
const hash = createHash('sha256');
|
||||
const tmpOut = createWriteStream(tmpPath);
|
||||
input.on('date', (chunk) => hash.update(chunk));
|
||||
input.on('data', (chunk) => hash.update(chunk));
|
||||
await pipeline(input, tmpOut); //await end of writing stream
|
||||
|
||||
const sha = hash.digest('hex');
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import { Injectable } from "@nestjs/common";
|
||||
import { Queue } from "bullmq";
|
||||
|
||||
@Injectable()
|
||||
export class VariantsQueue {
|
||||
private queue : Queue;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user