mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 12:50:38 +00:00
feat(nestjs): migrate to NestJS
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import { ClsService } from 'nestjs-cls';
|
||||
import { SystemUser } from '../System/models/SystemUser';
|
||||
import { TenantModel } from '../System/models/TenantModel';
|
||||
|
||||
@Injectable()
|
||||
export class TenancyContext {
|
||||
constructor(
|
||||
private readonly cls: ClsService,
|
||||
|
||||
@Inject(SystemUser.name)
|
||||
private readonly systemUserModel: typeof SystemUser,
|
||||
|
||||
@Inject(TenantModel.name)
|
||||
private readonly systemTenantModel: typeof TenantModel,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Get the current tenant.
|
||||
* @param {boolean} withMetadata - If true, the tenant metadata will be fetched.
|
||||
* @returns
|
||||
*/
|
||||
getTenant(withMetadata: boolean = false) {
|
||||
// Get the tenant from the request headers.
|
||||
const organizationId = this.cls.get('organizationId');
|
||||
|
||||
if (!organizationId) {
|
||||
throw new Error('Tenant not found');
|
||||
}
|
||||
const query = this.systemTenantModel.query().findOne({ organizationId });
|
||||
|
||||
if (withMetadata) {
|
||||
query.withGraphFetched('metadata');
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
async getTenantMetadata() {
|
||||
const tenant = await this.getTenant(true);
|
||||
|
||||
return tenant?.metadata;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current system user.
|
||||
* @returns {Promise<SystemUser>}
|
||||
*/
|
||||
getSystemUser() {
|
||||
// Get the user from the request headers.
|
||||
const userId = this.cls.get('userId');
|
||||
|
||||
return this.systemUserModel.query().findOne({ id: userId });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user