Chat settings in Super Admin and changing the chat title and position.

This commit is contained in:
2026-09-29 14:45:19 +03:30
parent 125976f3eb
commit 66af7e577c
14 changed files with 332 additions and 269 deletions
@@ -1,4 +1,4 @@
import { Body, Controller, Get, Patch, Post, UseGuards } from '@nestjs/common';
import { Body, Controller, Get, Post, UseGuards } from '@nestjs/common';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { CurrentUser } from '../auth/current-user.decorator';
import { RequireOrgModule } from '../billing/org-module.decorator';
@@ -6,7 +6,6 @@ import { OrgModuleGuard } from '../billing/org-module.guard';
import {
CreateConversationDmDto,
CreateConversationGroupDto,
UpdateConversationSettingsDto,
} from './dto';
import { ConversationsService } from './conversations.service';
@@ -21,19 +20,6 @@ export class ConversationsController {
return this.conversations.getAccess(user.userId, user.organizationId, user.role);
}
@Get('settings')
settings(@CurrentUser() user: { organizationId: string; role: string }) {
return this.conversations.getSettings(user.organizationId);
}
@Patch('settings')
updateSettings(
@CurrentUser() user: { organizationId: string; role: string },
@Body() dto: UpdateConversationSettingsDto,
) {
return this.conversations.updateSettings(user.organizationId, user.role, dto);
}
@Get('session')
session(@CurrentUser() user: { userId: string; organizationId: string; role: string }) {
return this.conversations.getSession(user.userId, user.organizationId, user.role);
@@ -12,9 +12,7 @@ import type {
ConversationSettingsDto,
PlatformConversationStatsDto,
UpdateConversationSettingsRequest,
UserRole,
} from '@mento/shared';
import { canManageSettings } from '@mento/shared';
import { PrismaService } from '../prisma/prisma.service';
import { TahesabCryptoService } from '../integrations/tahesab/tahesab-crypto.service';
import { ChatExternalClient, type ExternalRoomRow } from './chat-external.client';
@@ -59,14 +57,17 @@ export class ConversationsService {
};
}
async updateSettings(
/** ذخیره تنظیمات اتصال چت — فقط از مسیر سوپرادمین */
async upsertSettingsForOrganization(
organizationId: string,
role: UserRole | string,
dto: UpdateConversationSettingsRequest,
): Promise<ConversationSettingsDto> {
if (!canManageSettings(role)) {
throw new ForbiddenException('فقط مدیر می‌تواند تنظیمات گفتگو را تغییر دهد');
}
const org = await this.prisma.organization.findUnique({
where: { id: organizationId },
select: { id: true },
});
if (!org) throw new NotFoundException('محیط پیدا نشد');
const host = this.chat.normalizeHost(dto.chatHost);
if (!host) throw new BadRequestException('آدرس سرویس گفتگو نامعتبر است');