Skip to content

Commit

Permalink
SharedTemplateAPIModule no longer dynamically registered
Browse files Browse the repository at this point in the history
  • Loading branch information
norda-gunni committed Sep 10, 2024
1 parent 7289708 commit 2e2d64d
Show file tree
Hide file tree
Showing 73 changed files with 179 additions and 160 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import { environment } from '../../../environments'
import { ApplicationAccessService } from './tools/applicationAccess.service'

import { LoggingModule } from '@island.is/logging'
import { TemplateApiApplicationService } from './template-api.service'
import { AwsModule } from '@island.is/nest/aws'
import { ApplicationApiCoreModule } from '@island.is/application/api/core'
import { FeatureFlagModule } from '@island.is/nest/feature-flags'
Expand All @@ -35,10 +34,7 @@ import { ApplicationActionService } from './application-action.service'
PaymentModule,
AuditModule.forRoot(environment.audit),
AuthModule.register(environment.auth),
TemplateAPIModule.register({
...environment.templateApi,
applicationService: TemplateApiApplicationService,
}),
TemplateAPIModule.register(environment.templateApi),
ApplicationApiCoreModule,
createBullModule(),
ApplicationFilesModule,
Expand Down
2 changes: 1 addition & 1 deletion libs/application/template-api-modules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class ReferenceTemplateModule {
static register(config: BaseTemplateAPIModuleConfig): DynamicModule {
return {
module: ReferenceTemplateModule,
imports: [SharedTemplateAPIModule.register(config)],
imports: [SharedTemplateAPIModule],
providers: [ReferenceTemplateService],
exports: [ReferenceTemplateService],
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,42 +1,23 @@
import { DynamicModule } from '@nestjs/common'
import { ConfigModule } from '@nestjs/config'
import { Module } from '@nestjs/common'
import { EmailModule } from '@island.is/email-service'
import { ApplicationApiCoreModule } from '@island.is/application/api/core'
import { AwsModule } from '@island.is/nest/aws'
import {
BaseTemplateAPIModuleConfig,
BaseTemplateApiApplicationService,
} from '../../types'
import { SharedTemplateApiService } from './shared.service'
import { SmsModule } from '@island.is/nova-sms'
import { PaymentModule } from '@island.is/application/api/payment'
import { AttachmentS3Service } from './services'
import { ApplicationModule } from './api/application/application.module'

export class SharedTemplateAPIModule {
static register(config: BaseTemplateAPIModuleConfig): DynamicModule {
const configuration = () => config

return {
module: SharedTemplateAPIModule,
imports: [
ConfigModule.forRoot({
load: [configuration],
}),
EmailModule,
SmsModule,
ApplicationApiCoreModule,
AwsModule,
PaymentModule,
],
providers: [
SharedTemplateApiService,
{
provide: BaseTemplateApiApplicationService,
useClass: config.applicationService,
},
AttachmentS3Service,
],
exports: [SharedTemplateApiService, AttachmentS3Service],
}
}
}
@Module({
imports: [
EmailModule,
SmsModule,
ApplicationApiCoreModule,
AwsModule,
PaymentModule,
ApplicationModule,
],
providers: [SharedTemplateApiService, AttachmentS3Service],
exports: [SharedTemplateApiService, AttachmentS3Service],
})
export class SharedTemplateAPIModule {}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common'
import { ConfigType } from '@nestjs/config'
import { ConfigService, ConfigType } from '@nestjs/config'
import { EmailService } from '@island.is/email-service'
import {
Application,
Expand All @@ -23,6 +23,11 @@ import { PaymentService } from '@island.is/application/api/payment'
import { User } from '@island.is/auth-nest-tools'
import { ExtraData } from '@island.is/clients/charge-fjs-v2'
import { sharedModuleConfig } from './shared.config'
import { ApplicationService } from '@island.is/application/api/core'
import jwt from 'jsonwebtoken'
import { uuid } from 'uuidv4'
import { TemplateAPIConfig } from '../..'
import { AwsService } from '@island.is/nest/aws'

@Injectable()
export class SharedTemplateApiService {
Expand All @@ -36,15 +41,17 @@ export class SharedTemplateApiService {
private readonly smsService: SmsService,
@Inject(sharedModuleConfig.KEY)
private config: ConfigType<typeof sharedModuleConfig>,
@Inject(BaseTemplateApiApplicationService)
private readonly applicationService: BaseTemplateApiApplicationService,
@Inject(ConfigService)
private readonly configService: ConfigService<TemplateAPIConfig>,
private readonly applicationService: ApplicationService,
private readonly paymentService: PaymentService,
private readonly awsService: AwsService,
) {
this.s3 = new S3()
}

async createAssignToken(application: Application, expiresIn: number) {
const token = await this.applicationService.createAssignToken(
const token = await this.createToken(
application,
this.config.jwtSecret,
expiresIn,
Expand Down Expand Up @@ -204,7 +211,7 @@ export class SharedTemplateApiService {
ContentEncoding?: string
},
): Promise<string> {
return this.applicationService.saveAttachmentToApplicaton(
return this.saveAttachmentToApplicaton(
application,
fileName,
buffer,
Expand Down Expand Up @@ -265,4 +272,69 @@ export class SharedTemplateApiService {
Expires: expiration,
})
}

async saveAttachmentToApplicaton(
application: ApplicationWithAttachments,
fileName: string,
buffer: Buffer,
uploadParameters?: {
ContentType?: string
ContentDisposition?: string
ContentEncoding?: string
},
): Promise<string> {
const uploadBucket = this.configService.get('attachmentBucket') as string
if (!uploadBucket) throw new Error('No attachment bucket configured')

const fileId = uuid()
const attachmentKey = `${fileId}-${fileName}`
const s3key = `${application.id}/${attachmentKey}`
const url = await this.awsService.uploadFile(
buffer,
uploadBucket,
s3key,
uploadParameters,
)

await this.applicationService.update(application.id, {
attachments: {
...application.attachments,
[attachmentKey]: url,
},
})

return attachmentKey
}

async storeNonceForApplication(application: Application): Promise<string> {
const nonce = uuid()

const applicationToUpdate = await this.applicationService.findOneById(
application.id,
)

if (!applicationToUpdate) throw new Error('Application not found')

await this.applicationService.addNonce(applicationToUpdate, nonce)

return nonce
}

async createToken(
application: Application,
secret: string,
expiresIn: number,
): Promise<string> {
const nonce = await this.storeNonceForApplication(application)
const token = jwt.sign(
{
applicationId: application.id,
state: application.state,
nonce,
},
secret,
{ expiresIn },
)
return token
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,7 @@ export class AccidentNotificationModule {
static register(config: BaseTemplateAPIModuleConfig): DynamicModule {
return {
module: AccidentNotificationModule,
imports: [
SharedTemplateAPIModule.register(config),
HealthInsuranceV2ClientModule,
],
imports: [SharedTemplateAPIModule, HealthInsuranceV2ClientModule],
providers: [
{
provide: ACCIDENT_NOTIFICATION_CONFIG,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ import set from 'lodash/set'
import { S3Service } from './attachments/s3.service'
import { SmsService } from '@island.is/nova-sms'
import { PaymentService } from '@island.is/application/api/payment'
import { templateAPIConfig } from '../../template-api.config'
import { sharedModuleConfig } from '../../shared/shared.config'
import { ApplicationService } from '@island.is/application/api/core'
import { AwsService } from '@island.is/nest/aws'
const nationalId = '1234564321'
let id = 0

Expand Down Expand Up @@ -125,6 +126,14 @@ describe('AccidentNotificationService', () => {
applicationSenderEmail: '',
},
},
{
provide: ApplicationService,
useValue: {},
},
{
provide: AwsService,
useValue: {},
},
AccidentNotificationAttachmentProvider,
SharedTemplateApiService,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export class AnnouncementOfDeathModule {
imports: [
NationalRegistryClientModule,
SyslumennClientModule,
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
ConfigModule.forRoot({
isGlobal: true,
load: [XRoadConfig, NationalRegistryClientConfig],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class ChangeMachineSupervisorTemplateModule {
return {
module: ChangeMachineSupervisorTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ConfigModule.forRoot({
isGlobal: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class DeregisterMachineTemplateModule {
return {
module: DeregisterMachineTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ConfigModule.forRoot({
isGlobal: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class RegisterNewMachineTemplateModule {
return {
module: RegisterNewMachineTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ConfigModule.forRoot({
isGlobal: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class RequestInspectionTemplateModule {
return {
module: RequestInspectionTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ConfigModule.forRoot({
isGlobal: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class StreetRegistrationTemplateModule {
return {
module: StreetRegistrationTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ChargeFjsV2ClientModule,
ConfigModule.forRoot({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class TransferOfMachineOwnershipTemplateModule {
return {
module: TransferOfMachineOwnershipTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
WorkMachinesClientModule,
ChargeFjsV2ClientModule,
ConfigModule.forRoot({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export class CarRecyclingModule {
module: CarRecyclingModule,
imports: [
CarRecyclingClientModule,
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
ApplicationApiCoreModule,
VehiclesClientModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export class ChildrenResidenceChangeModuleV2 {
module: ChildrenResidenceChangeModuleV2,
imports: [
SyslumennClientModule,
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
SmsModule,
NationalRegistryClientModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export class ChildrenResidenceChangeModule {
module: ChildrenResidenceChangeModule,
imports: [
SyslumennClientModule,
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
SmsModule,
NationalRegistryClientModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class ComplaintsToAlthingiOmbudsmanTemplateModule {
return {
module: ComplaintsToAlthingiOmbudsmanTemplateModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
FileStorageModule,
ClientsAlthingiOmbudsmanModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export class CriminalRecordSubmissionModule {
return {
module: CriminalRecordSubmissionModule,
imports: [
SharedTemplateAPIModule.register(baseConfig),
SharedTemplateAPIModule,
CriminalRecordModule,
SyslumennClientModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export class DataProtectionComplaintModule {
return {
module: DataProtectionComplaintModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
FileStorageModule,
ClientsDataProtectionComplaintModule,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export class CitizenshipModule {
return {
module: CitizenshipModule,
imports: [
SharedTemplateAPIModule.register(baseConfig),
SharedTemplateAPIModule,
DirectorateOfImmigrationClientModule,
NationalRegistryClientModule,
ConfigModule.forRoot({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export class DocumentProviderOnboardingModule {
return {
module: DocumentProviderOnboardingModule,
imports: [
SharedTemplateAPIModule.register(config),
SharedTemplateAPIModule,
ClientsDocumentProviderModule.register({
basePath: SERVICE_DOCUMENTS_BASEPATH,
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@ export class DrivingLearnersPermitModule {
static register(config: BaseTemplateAPIModuleConfig): DynamicModule {
return {
module: DrivingLearnersPermitModule,
imports: [
DrivingLicenseApiModule,
SharedTemplateAPIModule.register(config),
],
imports: [DrivingLicenseApiModule, SharedTemplateAPIModule],
providers: [DrivingLearnersPermitService],
exports: [DrivingLearnersPermitService],
}
Expand Down
Loading

0 comments on commit 2e2d64d

Please sign in to comment.