icynet-auth-server/src/modules/api/admin/admin.module.ts

58 lines
1.9 KiB
TypeScript
Raw Normal View History

2022-08-27 08:59:26 +00:00
import { Module } from '@nestjs/common';
2022-08-27 15:52:37 +00:00
import { MulterModule } from '@nestjs/platform-express';
import * as multer from 'multer';
import * as mime from 'mime-types';
import { join } from 'path';
2022-08-27 10:53:37 +00:00
import { OAuth2Module } from 'src/modules/oauth2/oauth2.module';
import { ObjectsModule } from 'src/modules/objects/objects.module';
2022-08-27 15:52:37 +00:00
import { OAuth2AdminController } from './oauth2-admin.controller';
2022-08-27 10:53:37 +00:00
import { PrivilegeAdminController } from './privilege-admin.controller';
import { UserAdminController } from './user-admin.controller';
2022-08-27 15:52:37 +00:00
import { ConfigurationModule } from 'src/modules/config/config.module';
import { AdminService } from './admin.service';
2022-09-09 18:50:14 +00:00
import { AuditAdminController } from './audit-admin.controller';
2022-08-27 08:59:26 +00:00
2022-08-27 10:53:37 +00:00
@Module({
2022-08-27 15:52:37 +00:00
controllers: [
UserAdminController,
PrivilegeAdminController,
OAuth2AdminController,
2022-09-09 18:50:14 +00:00
AuditAdminController,
2022-08-27 15:52:37 +00:00
],
imports: [
ObjectsModule,
OAuth2Module,
2022-09-17 07:13:52 +00:00
ConfigurationModule,
2022-08-27 15:52:37 +00:00
MulterModule.registerAsync({
2022-09-17 07:13:52 +00:00
useFactory: async () => ({
storage: multer.diskStorage({
destination: (req, file, cb) => {
cb(null, join(__dirname, '..', '..', '..', '..', 'uploads'));
2022-08-27 15:52:37 +00:00
},
2022-09-17 07:13:52 +00:00
filename: (req, file, cb) => {
const hashTruncate = req.user.uuid.split('-')[0];
const timestamp = Math.floor(Date.now() / 1000);
const ext = mime.extension(file.mimetype);
cb(null, `app-${hashTruncate}-${timestamp}.${ext}`);
2022-08-27 15:52:37 +00:00
},
2022-09-17 07:13:52 +00:00
}),
limits: {
fileSize: 1.049e7, // 10 MiB
},
fileFilter: (req, file, cb) => {
if (
!file.mimetype.startsWith('image/') ||
file.mimetype.includes('svg')
) {
return cb(new Error('Invalid file type.'), false);
}
cb(null, true);
},
}),
2022-08-27 15:52:37 +00:00
}),
],
providers: [AdminService],
2022-08-27 10:53:37 +00:00
})
2022-08-27 08:59:26 +00:00
export class AdminApiModule {}