47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { ConfigurationService } from '../config/config.service';
|
|
import { Upload } from '../objects/upload/upload.entity';
|
|
import { Privilege } from '../objects/privilege/privilege.entity';
|
|
import { OAuth2Client } from '../objects/oauth2-client/oauth2-client.entity';
|
|
import { FormUtilityService } from '../utility/services/form-utility.service';
|
|
import { TokenService } from '../utility/services/token.service';
|
|
import { UserResource } from './resources/user.resource';
|
|
|
|
/**
|
|
* Shim service for AdminJs features
|
|
*/
|
|
@Injectable({})
|
|
export class AdminjsService {
|
|
constructor(
|
|
private readonly config: ConfigurationService,
|
|
private readonly formUtil: FormUtilityService,
|
|
private readonly token: TokenService,
|
|
private readonly userResource: UserResource,
|
|
) {}
|
|
|
|
async getConfiguration() {
|
|
const { AdminJS } = await import('adminjs');
|
|
const AdminJSTypeORM = await import('@adminjs/typeorm');
|
|
AdminJS.registerAdapter({
|
|
Database: AdminJSTypeORM.Database,
|
|
Resource: AdminJSTypeORM.Resource,
|
|
});
|
|
return {
|
|
adminJsOptions: {
|
|
rootPath: '/admin',
|
|
resources: [this.userResource, Upload, Privilege, OAuth2Client],
|
|
},
|
|
// auth: {
|
|
// authenticate: (email, password) => Promise.resolve({ email }),
|
|
// cookieName: 'adminjs',
|
|
// cookiePassword: 'secret',
|
|
// },
|
|
sessionOptions: {
|
|
resave: true,
|
|
saveUninitialized: true,
|
|
secret: 'secret',
|
|
},
|
|
};
|
|
}
|
|
}
|