More production clearances

This commit is contained in:
Stephanos A
2026-07-01 15:20:39 +03:00
parent 103117d88b
commit 924cce5716
6 changed files with 17 additions and 91 deletions

View File

@@ -3,6 +3,7 @@ NODE_ENV=development
PORT=4000
# Database (Prisma) — owns the `passenger` schema in edr_database
# Production: append ?sslmode=require&connection_limit=10&pool_timeout=20 to enforce SSL and connection pooling
DATABASE_URL=postgresql://edr:edr_secret@localhost:5432/edr_database?schema=passenger
# Database (TypeORM / @tria-plc IAM) — shared `iam` schema in the SAME edr_database.
@@ -32,14 +33,14 @@ FRONTEND_URL=http://localhost:5174
BACK_OFFICE_URL=http://localhost:5184
# JWT (legacy passenger auth — being replaced by IAM)
JWT_SECRET=edr-platform-secret-change-in-production
# REQUIRED in production — use a random 32+ character string (e.g. openssl rand -hex 32)
JWT_SECRET=<change-me-min-32-chars>
JWT_EXPIRES_IN=7d
# @tria-plc IAM token contract — the package's JwtGuard/verifyToken + AuthService sign/verify with
# these. MUST match the IAM issuer's secret in shared deployments. (Expiry strings use jsonwebtoken/ms.)
JWT_ACCESS_TOKEN_SECRET=dev-iam-access-secret-change-me
# @tria-plc IAM token contract — REQUIRED in production. MUST match the IAM issuer's secret.
JWT_ACCESS_TOKEN_SECRET=<change-me-min-32-chars>
JWT_ACCESS_TOKEN_EXPIRES=1h
JWT_REFRESH_TOKEN_SECRET=dev-iam-refresh-secret-change-me
JWT_REFRESH_TOKEN_SECRET=<change-me-min-32-chars>
JWT_REFRESH_TOKEN_EXPIRES=7d
# SendGrid
@@ -157,7 +158,7 @@ FAYDA_ACR_VALUES=mosip:idp:acr:generated-code
FAYDA_CLAIMS_LOCALES=en am
FAYDA_SESSION_TTL_MINUTES=10
GITHUB_PACKAGE_TOKEN=
GITHUB_PACKAGE_TOKEN=<your-github-packages-token>
# --- Notification broker (RabbitMQ) -----------------------------------------------------------------
# Set RABBITMQ_ENABLED=false to skip connection entirely (dev without a local broker).

View File

@@ -26,7 +26,7 @@ export class SmsClientService implements OnApplicationBootstrap {
this.logger.log("connected to SMS service");
})
.catch((err) => {
console.error("Error happened at SMS service", err);
this.logger.error('Error happened at SMS service', err);
});
}

View File

@@ -1,4 +1,4 @@
import { Injectable } from '@nestjs/common';
import { Injectable, Logger } from '@nestjs/common';
import { PrismaService } from '../../common/prisma.service';
import { EnhancedSeatsService } from './enhanced-seats.service';
import { EventEmitter2, OnEvent } from '@nestjs/event-emitter';
@@ -6,6 +6,7 @@ import { Cron, CronExpression } from '@nestjs/schedule';
@Injectable()
export class TripProgressService {
private readonly logger = new Logger(TripProgressService.name);
constructor(
private prisma: PrismaService,
private enhancedSeatsService: EnhancedSeatsService,
@@ -154,10 +155,10 @@ export class TripProgressService {
try {
const result = await this.enhancedSeatsService.expireHolds();
if (result.expiredHolds > 0) {
console.log(`Expired ${result.expiredHolds} holds, released ${result.releasedSeats.length} seats`);
this.logger.log(`Expired ${result.expiredHolds} holds, released ${result.releasedSeats.length} seats`);
}
} catch (error) {
console.error('Error expiring holds:', error);
this.logger.error('Error expiring holds:', error);
}
}

View File

@@ -5,5 +5,5 @@ NEXT_PUBLIC_API_URL=https://your-api-domain.com
NEXT_PUBLIC_IAM_ENABLED=false
NEXT_PUBLIC_IAM_API_URL=https://iam.tria-plc.com/api
# GitHub Packages Token
GITHUB_PACKAGE_TOKEN=$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
# GitHub Packages Token (required to install @tria-plc/* private packages)
GITHUB_PACKAGE_TOKEN=<your-github-packages-token>

View File

@@ -53,8 +53,6 @@ export default function SettingsPage() {
const tabs: { id: Tab; label: string }[] = [
{ id: 'general', label: 'General' },
{ id: 'payment', label: 'Payment' },
{ id: 'integrations', label: 'Integrations' },
{ id: 'configurations', label: 'Configurations' },
];
@@ -109,81 +107,7 @@ export default function SettingsPage() {
</div>
</div>
)}
{activeTab === 'payment' && (
<div className="space-y-6">
<div className="card">
<h3 className="mb-4 text-lg font-semibold text-foreground">Payment Providers</h3>
<div className="space-y-4">
<div className="flex items-center justify-between rounded-lg border border-border p-4">
<div>
<p className="font-medium text-foreground">Telebirr</p>
<p className="text-sm text-muted-foreground">Mobile payment provider</p>
</div>
<label className="relative inline-flex cursor-pointer items-center">
<input type="checkbox" className="peer sr-only" defaultChecked />
<div className="peer h-6 w-11 rounded-full bg-gray-200 dark:bg-gray-700 after:absolute after:left-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-primary peer-checked:after:translate-x-full peer-checked:after:border-white"></div>
</label>
</div>
<div className="flex items-center justify-between rounded-lg border border-border p-4">
<div>
<p className="font-medium text-foreground">CBE Birr</p>
<p className="text-sm text-muted-foreground">Bank payment provider</p>
</div>
<label className="relative inline-flex cursor-pointer items-center">
<input type="checkbox" className="peer sr-only" defaultChecked />
<div className="peer h-6 w-11 rounded-full bg-gray-200 dark:bg-gray-700 after:absolute after:left-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-primary peer-checked:after:translate-x-full peer-checked:after:border-white"></div>
</label>
</div>
</div>
</div>
</div>
)}
{activeTab === 'integrations' && (
<div className="space-y-6">
<div className="card">
<h3 className="mb-4 text-lg font-semibold text-foreground">Verifayda 2.0 Integration</h3>
<div className="space-y-4">
<div>
<label className="label">API URL</label>
<input type="text" className="input" defaultValue="https://api.verifayda.gov.et/v2" />
</div>
<div>
<label className="label">API Key</label>
<input type="password" className="input" defaultValue="••••••••••••" />
</div>
<div className="flex items-center gap-2">
<input type="checkbox" id="verifayda-enabled" defaultChecked />
<label htmlFor="verifayda-enabled" className="text-sm text-foreground">
Enable Verifayda verification
</label>
</div>
</div>
</div>
<div className="card">
<h3 className="mb-4 text-lg font-semibold text-foreground">Corporate IAM Integration</h3>
<div className="space-y-4">
<div>
<label className="label">IAM API URL</label>
<input type="text" className="input" defaultValue="https://iam.tria-plc.com/api" />
</div>
<div>
<label className="label">API Key</label>
<input type="password" className="input" defaultValue="••••••••••••" />
</div>
<div className="flex items-center gap-2">
<input type="checkbox" id="iam-enabled" />
<label htmlFor="iam-enabled" className="text-sm text-foreground">
Enable IAM authentication
</label>
</div>
</div>
</div>
</div>
)}
{activeTab === 'configurations' && (
<div className="card space-y-6">
<h3 className="text-lg font-semibold text-foreground">Rate Limiting (requests / minute / IP)</h3>

View File

@@ -1,5 +1,5 @@
# API Configuration
NEXT_PUBLIC_API_URL=https://your-api-domain.com
# GitHub Packages Token
GITHUB_PACKAGE_TOKEN=$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
# GitHub Packages Token (required to install @tria-plc/* private packages)
GITHUB_PACKAGE_TOKEN=<your-github-packages-token>