- Database: Add login_history, ai_recommendation_log tables; is_platform_owner column on users; subscription fields on organizations (payment_date, confirmation_number, renewal_date) - Backend: New AdminAnalyticsService with platform metrics, tenant detail, and health score calculations (0-100 based on activity, budget, transactions, members, AI usage) - Backend: Login/org-switch now records to login_history; AI recommendations logged to ai_recommendation_log; platform owner protected from superadmin toggle - Frontend: 4-tab admin panel (Dashboard, Organizations, Users, Tenant Health) with tenant detail drawer, subscription management, health scoring visualization - Platform owner account (admin@hoaledgeriq.com) auto-redirects to admin panel - Seed data includes platform owner account and sample login history Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { AuthController } from './auth.controller';
|
|
import { AdminController } from './admin.controller';
|
|
import { AuthService } from './auth.service';
|
|
import { AdminAnalyticsService } from './admin-analytics.service';
|
|
import { JwtStrategy } from './strategies/jwt.strategy';
|
|
import { LocalStrategy } from './strategies/local.strategy';
|
|
import { UsersModule } from '../users/users.module';
|
|
import { OrganizationsModule } from '../organizations/organizations.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
UsersModule,
|
|
OrganizationsModule,
|
|
PassportModule,
|
|
JwtModule.registerAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
useFactory: (configService: ConfigService) => ({
|
|
secret: configService.get<string>('JWT_SECRET'),
|
|
signOptions: { expiresIn: '24h' },
|
|
}),
|
|
}),
|
|
],
|
|
controllers: [AuthController, AdminController],
|
|
providers: [AuthService, AdminAnalyticsService, JwtStrategy, LocalStrategy],
|
|
exports: [AuthService],
|
|
})
|
|
export class AuthModule {}
|