Files
fiberops-api/src/portal/portal.controller.ts
2026-04-13 09:36:55 +08:00

60 lines
1.9 KiB
TypeScript

import { Controller, Get, Post, Body, UseGuards, Req, HttpCode, HttpStatus } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { SkipThrottle } from '@nestjs/throttler';
import { PortalService } from './portal.service';
import { PortalLoginDto } from './dto/portal-login.dto';
import { CreatePortalTicketDto } from './dto/create-portal-ticket.dto';
@Controller('portal')
export class PortalController {
constructor(private readonly portalService: PortalService) {}
@Post('auth/login')
@HttpCode(HttpStatus.OK)
async login(@Body() dto: PortalLoginDto) {
return this.portalService.login(dto);
}
@Get('profile')
@UseGuards(AuthGuard('portal-jwt'))
async getProfile(@Req() req: any) {
return this.portalService.getProfile(req.user.sub);
}
@Get('dashboard')
@UseGuards(AuthGuard('portal-jwt'))
async getDashboard(@Req() req: any) {
return this.portalService.getDashboard(req.user.sub, req.user.tenantId);
}
@Get('subscription')
@UseGuards(AuthGuard('portal-jwt'))
async getSubscription(@Req() req: any) {
return this.portalService.getSubscription(req.user.sub, req.user.tenantId);
}
@Get('invoices')
@UseGuards(AuthGuard('portal-jwt'))
async getInvoices(@Req() req: any) {
return this.portalService.getInvoices(req.user.sub, req.user.tenantId);
}
@Get('payments')
@UseGuards(AuthGuard('portal-jwt'))
async getPayments(@Req() req: any) {
return this.portalService.getPayments(req.user.sub, req.user.tenantId);
}
@Get('tickets')
@UseGuards(AuthGuard('portal-jwt'))
async getTickets(@Req() req: any) {
return this.portalService.getTickets(req.user.sub, req.user.tenantId);
}
@Post('tickets')
@UseGuards(AuthGuard('portal-jwt'))
async createTicket(@Req() req: any, @Body() dto: CreatePortalTicketDto) {
return this.portalService.createTicket(req.user.sub, req.user.tenantId, dto);
}
}