This commit is contained in:
2026-02-15 09:33:38 +03:30
parent 0b426155ac
commit be33d9a96f
6 changed files with 14 additions and 2 deletions
+2
View File
@@ -1,5 +1,6 @@
import { IsNotEmpty, IsString, IsMobilePhone } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { Transform } from 'class-transformer/types/decorators/transform.decorator';
export class DirectLoginDto {
@IsNotEmpty()
@@ -10,6 +11,7 @@ export class DirectLoginDto {
@IsNotEmpty()
@IsString()
@Transform(({ value }: { value: string }) => value.toLowerCase())
@ApiProperty({ example: 'zhivan', description: 'Shop slug' })
slug: string;
}
+2
View File
@@ -1,5 +1,6 @@
import { IsNotEmpty, IsString, IsMobilePhone } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
export class RequestOtpDto {
@IsNotEmpty()
@@ -10,6 +11,7 @@ export class RequestOtpDto {
@IsNotEmpty()
@IsString()
@Transform(({ value }: { value: string }) => value.toLowerCase())
@ApiProperty({ example: 'boote', description: 'shop slug' })
slug: string;
}
+2
View File
@@ -1,5 +1,6 @@
import { IsNotEmpty, IsString, Length, IsMobilePhone } from 'class-validator';
import { ApiProperty } from '@nestjs/swagger';
import { Transform } from 'class-transformer';
export class VerifyOtpDto {
@IsNotEmpty()
@@ -16,6 +17,7 @@ export class VerifyOtpDto {
@IsNotEmpty()
@IsString()
@Transform(({ value }: { value: string }) => value.toLowerCase())
@ApiProperty({ example: 'boote', description: 'shop slug' })
slug: string;
}
@@ -42,6 +42,12 @@ export class AuthService {
async requestOtp(dto: RequestOtpDto, isAdmin: boolean) {
const { phone, slug } = dto;
const normalizedPhone = normalizePhone(phone);
if (isAdmin) {
const admin = await this.adminRepository.findOne({ phone: normalizedPhone, roles: { shop: { slug } } });
if (!admin) {
throw new BadRequestException(AuthMessage.ADMIN_NOT_FOUND);
}
}
const code = this.generateOtpCode();
const key = isAdmin ? this.adminOtpKey(slug, normalizedPhone) : this.userOtpKey(slug, normalizedPhone);
await this.cacheService.set(key, code, this.OTP_EXPIRATION_TIME);
@@ -44,7 +44,7 @@ export class CategoryController {
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
findAll(@ShopId() shopId: string) {
return this.categoryService.findAllByShopId(shopId);
return this.categoryService.findAlTreelByShopId(shopId);
}
@Get('admin/categories/:id')
@@ -50,7 +50,7 @@ export class CategoryService {
{ orderBy: { order: 'ASC' }, populate: ['children', 'parent'] });
}
async findAllByShopId(shopId: string): Promise<Category[]> {
async findAlTreelByShopId(shopId: string): Promise<Category[]> {
return this.categoryRepository.find(
{ shop: { id: shopId }, parent: null },
{ orderBy: { createdAt: 'DESC' }, populate: ['children', 'parent'] });