diff --git a/src/modules/auth/dto/request-otp.dto.ts b/src/modules/auth/dto/request-otp.dto.ts index 8cacc6a..e55e07f 100644 --- a/src/modules/auth/dto/request-otp.dto.ts +++ b/src/modules/auth/dto/request-otp.dto.ts @@ -1,13 +1,18 @@ -import { IsNotEmpty, IsString, Matches } from 'class-validator'; +import { IsNotEmpty, IsString, IsMobilePhone } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; export class RequestOtpDto { @IsNotEmpty() @IsString() @ApiProperty({ example: '09362532122', description: 'Mobile number' }) - @Matches(/^09\d{9}$/, { - message: 'Mobile number must be a valid Iranian phone number (e.g., 09123456789)', - }) - // @IsMobilePhone('fa-IR') + // @Matches(/^09\d{9}$/, { + // message: 'Mobile number must be a valid Iranian phone number (e.g., 09123456789)', + // }) + @IsMobilePhone('fa-IR') phone: string; + + @IsNotEmpty() + @IsString() + @ApiProperty({ example: '', description: 'Restuarant slug' }) + slug: string; } diff --git a/src/modules/auth/interfaces/IToken-payload.ts b/src/modules/auth/interfaces/IToken-payload.ts index 02cd599..223bd5e 100755 --- a/src/modules/auth/interfaces/IToken-payload.ts +++ b/src/modules/auth/interfaces/IToken-payload.ts @@ -4,8 +4,7 @@ export interface ILocalTokenPayload { export interface IConsoleTokenPayload { id: string; - permissions?: string[]; - isAdmin?: boolean; + slug: string; } export interface ITokenPayload extends ILocalTokenPayload, IConsoleTokenPayload {} diff --git a/src/modules/auth/services/auth.service.ts b/src/modules/auth/services/auth.service.ts index 1087057..39cc11f 100644 --- a/src/modules/auth/services/auth.service.ts +++ b/src/modules/auth/services/auth.service.ts @@ -21,10 +21,10 @@ export class AuthService { ) {} async requestOtp(dto: RequestOtpDto) { - const { phone } = dto; + const { phone, slug } = dto; const code = this.generateOtpCode(); - await this.cacheService.set(`otp:${phone}`, code, 160); + await this.cacheService.set(`otp:${phone}:${slug}`, code, 160); await this.smsService.sendOtp(phone, code); diff --git a/src/modules/auth/services/tokens.service.ts b/src/modules/auth/services/tokens.service.ts index 10913d1..5c980d6 100755 --- a/src/modules/auth/services/tokens.service.ts +++ b/src/modules/auth/services/tokens.service.ts @@ -34,7 +34,7 @@ export class TokensService { const refreshExpire = this.configService.getOrThrow('REFRESH_TOKEN_EXPIRE'); const accessToken = await this.jwtService.signAsync(payload, { expiresIn: `${accessExpire}m` }); - const refreshToken = await this.generateRefreshToken(); + const refreshToken = this.generateRefreshToken(); await this.storeRefreshToken(payload.id, refreshToken, em); diff --git a/src/modules/users/entities/refresh-token.entity.ts b/src/modules/users/entities/refresh-token.entity.ts index 3b9b489..7105742 100644 --- a/src/modules/users/entities/refresh-token.entity.ts +++ b/src/modules/users/entities/refresh-token.entity.ts @@ -2,6 +2,7 @@ import { Entity, ManyToOne, Opt, Property } from '@mikro-orm/core'; import { User } from './user.entity'; import { BaseEntity } from '../../../common/entities/base.entity'; + @Entity({ tableName: 'refreshtokens' }) export class RefreshToken extends BaseEntity { @Property({ type: 'varchar', length: 255 })