Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 32 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
FROM node:18
FROM node:20.19.2
WORKDIR /usr/src/app

# Update and upgrade apt packages
RUN apt update && apt -y upgrade
RUN npm i -g npm

# Install FFMPEG (existing)
RUN apt-get install -y ffmpeg

# 🌟 NEW: Install essential Chromium dependencies
# These packages are needed to run a browser headless inside the container.
# This list is often needed for Puppeteer or similar tools.
RUN apt-get update && \
apt-get install -y \
chromium \
libnss3 \
libatk-bridge2.0-0 \
libgconf-2-4 \
libgbm-dev \
libasound2 \
libgtk-3-0 \
libxshmfence-dev \
libnspr4 \
libdbus-glib-1-2 \
fonts-noto-color-emoji \
--no-install-recommends && \
rm -rf /var/lib/apt/lists/*

# 🌟 MODIFIED: Set environment variable to skip Puppeteer's Chromium download
ENV PUPPETEER_SKIP_DOWNLOAD=true


COPY ./package.json .
RUN npx patch-package -y

Expand Down
4 changes: 3 additions & 1 deletion src/credential/services/credential.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -650,7 +650,9 @@ export class CredentialService {
namespace,
);
}
if (await this.checkAllowence(address)) {
Logger.log(`Address: ${address}`);
const isDevMode = this.config.get('NODE_ENV') === 'development';
if (!isDevMode && (await this.checkAllowence(address))) {
await this.txnService.sendVCTxn(
credentialStatus,
proof,
Expand Down
5 changes: 3 additions & 2 deletions src/credit-manager/controllers/credit-manager.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import {
import {
createCreditResponse,
ActivateCredtiResponse,
CreditManagerRequestDto,
} from '../dto/create-credit-manager.dto';
import { AllExceptionsFilter } from 'src/utils/utils';
import {
Expand Down Expand Up @@ -59,12 +60,12 @@ export class CreditManagerController {
type: CreditUnAuthorizeError,
})
@Post()
AddNewCreditDetail(@Req() req) {
AddNewCreditDetail(@Body() body: CreditManagerRequestDto, @Req() req) {
Logger.log(
'AddNewCreditDetail() method to add credit detail',
'CreditManagerController',
);
return this.creditManagerService.addCreditDetail(req.creditDetail);
return this.creditManagerService.addCreditDetail(body, req.creditDetail);
}
@ApiBearerAuth('Authorization')
@UseGuards(AuthGuard('jwt'))
Expand Down
28 changes: 26 additions & 2 deletions src/credit-manager/dto/create-credit-manager.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ export class Credit {
description: 'Token denom',
example: 'uhid',
})
@IsNumber()
denom: number;
@IsString()
denom: string;
@ApiProperty({
name: 'used',
description: 'Total used credit',
Expand Down Expand Up @@ -162,3 +162,27 @@ export class ActivateCredtiResponse extends createCreditResponse {
@IsString()
expiresAt: Date;
}

export class CreditManagerRequestDto {
@ApiProperty({
name: 'credit',
type: Credit,
})
@Type(() => Credit)
@ValidateNested()
credit: Credit;
@ApiProperty({
name: 'creditScope',
description: 'Scope that one will get',
example: [
'MsgRegisterDID',
'MsgDeactivateDID',
'MsgRegisterCredentialSchema',
'MsgUpdateDID',
'MsgUpdateCredentialStatus',
'MsgRegisterCredentialStatus',
],
})
@IsString()
creditScope: Array<string>;
}
32 changes: 7 additions & 25 deletions src/credit-manager/services/credit-manager.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,19 @@ import {
} from '@nestjs/common';
import {
CreateCreditManagerDto,
CreditManagerRequestDto,
ValidityPeriodUnit,
} from '../dto/create-credit-manager.dto';
import { CreditManagerRepository } from '../repository/credit-manager.repository';
import { Status } from '../schema/credit-manager.schema';
import { constant } from '../utils';
import { urlSanitizer } from 'src/utils/sanitizeUrl.validator';

@Injectable()
export class CreditService {
constructor(private readonly creditRepository: CreditManagerRepository) {}
async addCreditDetail(createCreditManagerDto: CreateCreditManagerDto) {
async addCreditDetail(
body: CreditManagerRequestDto,
createCreditManagerDto: CreateCreditManagerDto,
) {
Logger.log('addCreditDetail() method starts....', 'CreditService');
const ifActivePlanExists =
await this.creditRepository.findParticularCreditDetail({
Expand All @@ -30,15 +32,12 @@ export class CreditService {
);
createCreditManagerDto.validityDuration = validityPeriodInDays;
Logger.debug(`Credit status:${status}`);
let grantDetail;
const grantDetail = body;
if (status === 'Active') {
expiryTime = this.calculateExpiryTime(
createCreditManagerDto.validityDuration,
);
grantDetail = await this.grantAdminAllowanceForTxFee(
createCreditManagerDto.serviceId,
);
grantDetail['credit']['used'] = 0;
// TOOD need to validate if authz grant was given to that wallet addres on blockchain.
}
const newCreditDetail = {
...createCreditManagerDto,
Expand Down Expand Up @@ -85,15 +84,6 @@ export class CreditService {
creditDocument.validityDuration,
);
paramsToUpdate['expiresAt'] = expiresAt;

const grantDetail = await this.grantAdminAllowanceForTxFee(
creditDocument.serviceId,
);
if (grantDetail) {
grantDetail['credit']['used'] = 0;
(paramsToUpdate['credit'] = grantDetail?.credit),
(paramsToUpdate['creditScope'] = grantDetail?.creditScope);
}
}
return this.creditRepository.updateCreditDetail(
{ _id: creditId },
Expand Down Expand Up @@ -236,12 +226,4 @@ export class CreditService {
}
}

async grantAdminAllowanceForTxFee(appId) {
const url = `${urlSanitizer(constant.AUTHZ_URL, false)}/${appId}`;
const data = await fetch(url);
if (data && data.ok) {
const resp = await data.json();
return resp;
}
}
}
4 changes: 3 additions & 1 deletion src/did/services/did.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,9 @@ export class DidService {
const { wallet, address } = await this.hidWallet.generateWallet(
appMenemonic,
);
if (await this.checkAllowence(address)) {
Logger.log(`Address: ${address}`)
const isDevMode = this.config.get('NODE_ENV') === 'development';
if (!isDevMode && (await this.checkAllowence(address))) {
await this.txnService.sendDIDTxn(
didDocument,
signInfos,
Expand Down
Loading