This commit is contained in:
pradeepkumar
2026-03-26 15:18:59 +05:30
parent 924b03f459
commit e9f135e9b7
3 changed files with 21 additions and 6 deletions

View File

@@ -32,6 +32,7 @@ enum AuthProvider {
GOOGLE
FACEBOOK
TWITTER
APPLE
}
enum FieldType {
@@ -110,6 +111,7 @@ model User {
googleId String? @unique
facebookId String? @unique
twitterId String? @unique
appleId String? @unique
// Two-Factor Authentication
twoFactorEnabled Boolean @default(false)

View File

@@ -227,7 +227,9 @@ export class AuthService {
? 'googleId'
: dto.provider === 'facebook'
? 'facebookId'
: 'twitterId';
: dto.provider === 'apple'
? 'appleId'
: 'twitterId';
// Check if user exists with this provider ID
let user = await this.prisma.user.findFirst({
@@ -262,7 +264,9 @@ export class AuthService {
? AuthProvider.GOOGLE
: dto.provider === 'facebook'
? AuthProvider.FACEBOOK
: AuthProvider.TWITTER;
: dto.provider === 'apple'
? AuthProvider.APPLE
: AuthProvider.TWITTER;
// Parse name
const nameParts = dto.name?.split(' ') || [];
@@ -304,6 +308,7 @@ export class AuthService {
firstName,
lastName,
avatar: dto.avatar,
agentTypeId: dto.agentTypeId || undefined,
},
});
}

View File

@@ -11,12 +11,12 @@ export class SocialAuthDto {
@ApiProperty({
example: 'google',
description: 'OAuth provider',
enum: ['google', 'facebook'],
enum: ['google', 'facebook', 'twitter', 'apple'],
})
@IsEnum(['google', 'facebook'], {
message: 'Provider must be either google or facebook',
@IsEnum(['google', 'facebook', 'twitter', 'apple'], {
message: 'Provider must be google, facebook, twitter, or apple',
})
provider: 'google' | 'facebook';
provider: 'google' | 'facebook' | 'twitter' | 'apple';
@ApiProperty({
example: '123456789',
@@ -57,4 +57,12 @@ export class SocialAuthDto {
@IsOptional()
@IsEnum(['USER', 'AGENT'], { message: 'Role must be either USER or AGENT' })
role?: 'USER' | 'AGENT';
@ApiPropertyOptional({
example: 'uuid-of-agent-type',
description: 'Agent type ID (required when role is AGENT)',
})
@IsOptional()
@IsString()
agentTypeId?: string;
}