diff --git a/backend/dist/src/main.d.ts b/backend/dist/src/main.d.ts index e300546..4d0a764 100644 --- a/backend/dist/src/main.d.ts +++ b/backend/dist/src/main.d.ts @@ -19,6 +19,7 @@ export declare class EmailService { private transporter; constructor(); sendOTP(email: string, otp: string): Promise; + sendTourInvitation(email: string, tourTitle: string, inviteLink: string): Promise; } export declare class CommentGateway implements OnGatewayConnection { server: Server; diff --git a/backend/dist/src/main.js b/backend/dist/src/main.js index a9a4ca1..fc1980b 100644 --- a/backend/dist/src/main.js +++ b/backend/dist/src/main.js @@ -51,6 +51,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.CommentGateway = exports.EmailService = exports.TourRoleGuard = exports.Roles = exports.ROLES_KEY = void 0; const path = __importStar(require("path")); const fs = __importStar(require("fs")); +const crypto = __importStar(require("crypto")); const config_1 = require("@nestjs/config"); require("reflect-metadata"); const zlib = __importStar(require("zlib")); @@ -258,6 +259,40 @@ let EmailService = class EmailService { throw error; } } + async sendTourInvitation(email, tourTitle, inviteLink) { + if (!process.env.SMTP_USER || !process.env.SMTP_PASS) { + throw new Error('Thiếu cấu hình SMTP_USER hoặc SMTP_PASS trong file .env'); + } + const mailOptions = { + from: `"Travel Planning Support" <${process.env.SMTP_USER}>`, + to: email, + subject: `Lời mời tham gia hành trình: ${tourTitle}`, + html: ` +
+

Lời Mời Tham Gia Hành Trình

+

Xin chào,

+

Bạn đã được mời tham gia hành trình du lịch "${tourTitle}".

+

Vui lòng nhấp vào nút dưới đây để chấp nhận lời mời và gia nhập hành trình của chúng tôi:

+
+ + Tham Gia Hành Trình Ngay + +
+

Hoặc bạn có thể sao chép liên kết dưới đây và dán vào trình duyệt:

+

${inviteLink}

+

Lời mời này có hiệu lực trong vòng 7 ngày. Hãy nhanh tay đăng ký nhé!

+
+

Đây là email tự động từ ứng dụng hệ thống Travel Planning.

+
+ `, + }; + try { + return await this.transporter.sendMail(mailOptions); + } + catch (error) { + throw error; + } + } }; exports.EmailService = EmailService; exports.EmailService = EmailService = __decorate([ @@ -352,7 +387,7 @@ let AuthController = class AuthController { async login(body) { const { email, password } = body; const user = await this.prisma.user.findUnique({ where: { email } }); - if (!user || !(await bcrypt.compare(password, user.passwordHash))) { + if (!user || !user.passwordHash || !(await bcrypt.compare(password, user.passwordHash))) { throw new common_1.UnauthorizedException('Email hoặc mật khẩu không chính xác'); } if (user.isBlocked) { @@ -369,6 +404,67 @@ let AuthController = class AuthController { }, }; } + async googleLogin(body) { + const { credential } = body; + if (!credential) { + throw new common_1.BadRequestException('Vui lòng cung cấp Google credential.'); + } + try { + const response = await fetch(`https://oauth2.googleapis.com/tokeninfo?id_token=${credential}`); + if (!response.ok) { + throw new common_1.UnauthorizedException('Token Google không hợp lệ hoặc đã hết hạn.'); + } + const payload = await response.json(); + const email = payload.email; + const name = payload.name || email.split('@')[0]; + const avatar = payload.picture || null; + if (!email) { + throw new common_1.BadRequestException('Không tìm thấy địa chỉ email từ Google.'); + } + let user = await this.prisma.user.findUnique({ where: { email } }); + if (!user) { + user = await this.prisma.user.create({ + data: { + email, + name, + avatar, + isAnonymous: false, + }, + }); + } + else if (user.isBlocked) { + throw new common_1.UnauthorizedException('Tài khoản của bạn đã bị khóa. Vui lòng liên hệ quản trị viên.'); + } + else if (user.isAnonymous) { + user = await this.prisma.user.update({ + where: { id: user.id }, + data: { + isAnonymous: false, + name: user.name || name, + avatar: user.avatar || avatar, + }, + }); + } + const jwtPayload = { email: user.email, sub: user.id }; + return { + access_token: this.jwtService.sign(jwtPayload), + user: { + id: user.id, + email: user.email, + name: user.name, + avatar: user.avatar, + isAdmin: user.isAdmin, + }, + }; + } + catch (error) { + console.error('[Google Auth Error]:', error); + if (error instanceof common_1.UnauthorizedException || error instanceof common_1.BadRequestException) { + throw error; + } + throw new common_1.BadRequestException('Đã xảy ra lỗi khi đăng nhập bằng Google.'); + } + } async signupRequest(body) { const { email, password, name, phone, address } = body; const existingUser = await this.prisma.user.findUnique({ where: { email } }); @@ -465,6 +561,13 @@ __decorate([ __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise) ], AuthController.prototype, "login", null); +__decorate([ + (0, common_1.Post)('google'), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], AuthController.prototype, "googleLogin", null); __decorate([ (0, common_1.Post)('signup/request'), __param(0, (0, common_1.Body)()), @@ -550,8 +653,9 @@ PublicTourController = __decorate([ __metadata("design:paramtypes", [prisma_service_1.PrismaService]) ], PublicTourController); let TourController = class TourController { - constructor(prisma, cacheManager) { + constructor(prisma, emailService, cacheManager) { this.prisma = prisma; + this.emailService = emailService; this.cacheManager = cacheManager; } async createTour(body, req) { @@ -844,16 +948,14 @@ let TourController = class TourController { } async getPublicTours(req) { return this.prisma.tour.findMany({ - where: { - participants: { - some: { userId: req.user.id } - } - }, - take: 20, + take: 50, include: { participants: { - where: { userId: req.user.id }, - select: { role: true } + select: { userId: true, role: true, displayName: true } + }, + joinRequests: { + where: { userId: req.user.id, status: 'PENDING' }, + select: { id: true } }, photos: { take: 1 }, legs: { @@ -1245,6 +1347,142 @@ let TourController = class TourController { }); })); } + async createInvitation(tourId, body, req) { + const { email, role = client_1.ParticipantRole.MEMBER } = body; + if (!email) { + throw new common_1.BadRequestException('Vui lòng cung cấp email mời.'); + } + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + if (!tour) { + throw new common_1.NotFoundException('Không tìm thấy hành trình.'); + } + const invitedUser = await this.prisma.user.findUnique({ where: { email } }); + if (invitedUser) { + const existingParticipant = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId, userId: invitedUser.id } } + }); + if (existingParticipant) { + throw new common_1.BadRequestException('Người dùng này đã là thành viên của tour.'); + } + } + const token = crypto.randomBytes(32).toString('hex'); + const expiredAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000); + const invitation = await this.prisma.tourInvitation.upsert({ + where: { tourId_email: { tourId, email } }, + update: { token, expiredAt, role }, + create: { tourId, email, token, expiredAt, role } + }); + const appUrl = process.env.FRONTEND_URL || 'http://localhost:3002'; + const inviteLink = `${appUrl}/join-tour?token=${token}`; + try { + await this.emailService.sendTourInvitation(email, tour.title, inviteLink); + } + catch (e) { + console.error('[Invitation Email Error]:', e); + throw new common_1.BadRequestException('Không thể gửi email lời mời. Vui lòng kiểm tra cấu hình SMTP.'); + } + return { success: true, message: 'Lời mời đã được gửi thành công!' }; + } + async joinByToken(body, req) { + const { token } = body; + if (!token) { + throw new common_1.BadRequestException('Vui lòng cung cấp token lời mời.'); + } + const invitation = await this.prisma.tourInvitation.findUnique({ + where: { token }, + include: { tour: { select: { title: true } } } + }); + if (!invitation) { + throw new common_1.NotFoundException('Lời mời không hợp lệ hoặc đã bị hủy.'); + } + if (invitation.expiredAt < new Date()) { + try { + await this.prisma.tourInvitation.delete({ where: { id: invitation.id } }); + } + catch (e) { } + throw new common_1.BadRequestException('Lời mời đã hết hạn.'); + } + const userId = req.user.id; + const existingParticipation = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId: invitation.tourId, userId } } + }); + if (existingParticipation) { + try { + await this.prisma.tourInvitation.delete({ where: { id: invitation.id } }); + } + catch (e) { } + await Promise.all([ + this.cacheManager.del(invitation.tourId), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}`), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}/public`), + this.cacheManager.del(`/api/v1/tours/explore`), + ]); + return { success: true, tourId: invitation.tourId, message: 'Bạn đã là thành viên của tour này.' }; + } + await this.prisma.$transaction([ + this.prisma.tourParticipant.create({ + data: { + tourId: invitation.tourId, + userId, + role: invitation.role + } + }), + this.prisma.tourInvitation.delete({ + where: { id: invitation.id } + }) + ]); + await Promise.all([ + this.cacheManager.del(invitation.tourId), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}`), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}/public`), + this.cacheManager.del(`/api/v1/tours/explore`), + this.cacheManager.del(`user-role:${userId}:${invitation.tourId}`), + ]); + return { success: true, tourId: invitation.tourId, message: `Bạn đã gia nhập hành trình "${invitation.tour.title}"!` }; + } + async mergeMember(tourId, body, req) { + const { manualParticipantId, systemUserId } = body; + if (!manualParticipantId || !systemUserId) { + throw new common_1.BadRequestException('Thiếu thông tin manualParticipantId hoặc systemUserId.'); + } + const manualParticipant = await this.prisma.tourParticipant.findFirst({ + where: { id: manualParticipantId, tourId, userId: null } + }); + if (!manualParticipant) { + throw new common_1.NotFoundException('Không tìm thấy thành viên ngoài hệ thống cần gán.'); + } + const systemParticipant = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId, userId: systemUserId } } + }); + if (!systemParticipant) { + throw new common_1.NotFoundException('Không tìm thấy thành viên hệ thống trong hành trình này.'); + } + const nextAdult = Math.max(systemParticipant.adultCount, manualParticipant.adultCount); + const nextChild = Math.max(systemParticipant.childCount, manualParticipant.childCount); + await this.prisma.$transaction([ + this.prisma.tourParticipant.update({ + where: { id: systemParticipant.id }, + data: { + adultCount: nextAdult, + childCount: nextChild, + role: manualParticipant.role !== client_1.ParticipantRole.MEMBER ? manualParticipant.role : systemParticipant.role + } + }), + this.prisma.tourParticipant.delete({ + where: { id: manualParticipant.id } + }) + ]); + await this.cacheManager.del(`user-role:${systemUserId}:${tourId}`); + await Promise.all([ + this.cacheManager.del(tourId), + this.cacheManager.del(`/api/v1/tours/${tourId}`), + this.cacheManager.del(`/api/v1/tours/explore`) + ]); + return { success: true, message: 'Đã gán và hợp nhất thông tin thành viên thành công.' }; + } }; __decorate([ (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), @@ -1337,7 +1575,6 @@ __decorate([ __metadata("design:returntype", Promise) ], TourController.prototype, "getPublicTours", null); __decorate([ - (0, common_1.UseInterceptors)(compress_cache_interceptor_1.CompressCacheInterceptor), (0, exports.Roles)(client_1.ParticipantRole.OWNER, client_1.ParticipantRole.MANAGER, client_1.ParticipantRole.MEMBER, client_1.ParticipantRole.MEMBER_NO_FINANCE, client_1.ParticipantRole.VIEWER_ONLY), (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, TourRoleGuard), (0, common_1.Get)(':id'), @@ -1380,8 +1617,7 @@ __decorate([ __metadata("design:returntype", Promise) ], TourController.prototype, "getJoinRequests", null); __decorate([ - (0, exports.Roles)(client_1.ParticipantRole.OWNER, client_1.ParticipantRole.MANAGER, client_1.ParticipantRole.MEMBER, client_1.ParticipantRole.MEMBER_NO_FINANCE, client_1.ParticipantRole.VIEWER_ONLY), - (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, TourRoleGuard), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), (0, common_1.Post)(':tourId/join-requests'), __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), __param(1, (0, common_1.Body)()), @@ -1434,10 +1670,42 @@ __decorate([ __metadata("design:paramtypes", [String, Array, Object]), __metadata("design:returntype", Promise) ], TourController.prototype, "uploadPhotos", null); +__decorate([ + (0, exports.Roles)(client_1.ParticipantRole.OWNER, client_1.ParticipantRole.MANAGER), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, TourRoleGuard), + (0, common_1.Post)(':tourId/invitations'), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Body)()), + __param(2, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object, Object]), + __metadata("design:returntype", Promise) +], TourController.prototype, "createInvitation", null); +__decorate([ + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard), + (0, common_1.Post)('join-by-token'), + __param(0, (0, common_1.Body)()), + __param(1, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, Object]), + __metadata("design:returntype", Promise) +], TourController.prototype, "joinByToken", null); +__decorate([ + (0, exports.Roles)(client_1.ParticipantRole.OWNER, client_1.ParticipantRole.MANAGER), + (0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard, TourRoleGuard), + (0, common_1.Post)(':tourId/members/merge'), + __param(0, (0, common_1.Param)('tourId', common_1.ParseUUIDPipe)), + __param(1, (0, common_1.Body)()), + __param(2, (0, common_1.Req)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String, Object, Object]), + __metadata("design:returntype", Promise) +], TourController.prototype, "mergeMember", null); TourController = __decorate([ (0, common_1.Controller)('tours'), - __param(1, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)), - __metadata("design:paramtypes", [prisma_service_1.PrismaService, Object]) + __param(2, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)), + __metadata("design:paramtypes", [prisma_service_1.PrismaService, + EmailService, Object]) ], TourController); let LocationController = class LocationController { constructor(prisma, cacheManager) { diff --git a/backend/dist/src/main.js.map b/backend/dist/src/main.js.map index 78e2d21..69d2e23 100644 --- a/backend/dist/src/main.js.map +++ b/backend/dist/src/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/prisma/migrations/20260620110709_add_tour_invitations/migration.sql b/backend/prisma/migrations/20260620110709_add_tour_invitations/migration.sql new file mode 100644 index 0000000..85f43c6 --- /dev/null +++ b/backend/prisma/migrations/20260620110709_add_tour_invitations/migration.sql @@ -0,0 +1,21 @@ +-- CreateTable +CREATE TABLE "TourInvitation" ( + "id" TEXT NOT NULL, + "tourId" TEXT NOT NULL, + "email" TEXT NOT NULL, + "role" "ParticipantRole" NOT NULL DEFAULT 'MEMBER', + "token" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "expiredAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "TourInvitation_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "TourInvitation_token_key" ON "TourInvitation"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "TourInvitation_tourId_email_key" ON "TourInvitation"("tourId", "email"); + +-- AddForeignKey +ALTER TABLE "TourInvitation" ADD CONSTRAINT "TourInvitation_tourId_fkey" FOREIGN KEY ("tourId") REFERENCES "Tour"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/backend/prisma/schema.prisma b/backend/prisma/schema.prisma index 129bc62..c7dc73a 100644 --- a/backend/prisma/schema.prisma +++ b/backend/prisma/schema.prisma @@ -99,6 +99,7 @@ model Tour { joinRequests JoinRequest[] legs Leg[] photos Photo[] + invitations TourInvitation[] } model JoinRequest { @@ -213,3 +214,16 @@ model Comment { userId String user User @relation(fields: [userId], references: [id], onDelete: Cascade) } + +model TourInvitation { + id String @id @default(uuid()) + tourId String + email String + role ParticipantRole @default(MEMBER) + token String @unique + createdAt DateTime @default(now()) + expiredAt DateTime + tour Tour @relation(fields: [tourId], references: [id], onDelete: Cascade) + + @@unique([tourId, email]) +} diff --git a/backend/src/main.ts b/backend/src/main.ts index 7d56360..7e32815 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import * as fs from 'fs'; +import * as crypto from 'crypto'; import { ConfigModule, ConfigService } from '@nestjs/config'; import 'reflect-metadata'; @@ -244,6 +245,42 @@ export class EmailService { throw error; } } + + async sendTourInvitation(email: string, tourTitle: string, inviteLink: string) { + if (!process.env.SMTP_USER || !process.env.SMTP_PASS) { + throw new Error('Thiếu cấu hình SMTP_USER hoặc SMTP_PASS trong file .env'); + } + + const mailOptions = { + from: `"Travel Planning Support" <${process.env.SMTP_USER}>`, + to: email, + subject: `Lời mời tham gia hành trình: ${tourTitle}`, + html: ` +
+

Lời Mời Tham Gia Hành Trình

+

Xin chào,

+

Bạn đã được mời tham gia hành trình du lịch "${tourTitle}".

+

Vui lòng nhấp vào nút dưới đây để chấp nhận lời mời và gia nhập hành trình của chúng tôi:

+
+ + Tham Gia Hành Trình Ngay + +
+

Hoặc bạn có thể sao chép liên kết dưới đây và dán vào trình duyệt:

+

${inviteLink}

+

Lời mời này có hiệu lực trong vòng 7 ngày. Hãy nhanh tay đăng ký nhé!

+
+

Đây là email tự động từ ứng dụng hệ thống Travel Planning.

+
+ `, + }; + + try { + return await this.transporter.sendMail(mailOptions); + } catch (error) { + throw error; + } + } } @Controller() @@ -355,7 +392,7 @@ class AuthController { const { email, password } = body; const user = await this.prisma.user.findUnique({ where: { email } }); - if (!user || !(await bcrypt.compare(password, user.passwordHash))) { + if (!user || !user.passwordHash || !(await bcrypt.compare(password, user.passwordHash))) { throw new UnauthorizedException('Email hoặc mật khẩu không chính xác'); } @@ -377,6 +414,72 @@ class AuthController { }; } + @Post('google') + async googleLogin(@Body() body: { credential: string }) { + const { credential } = body; + if (!credential) { + throw new BadRequestException('Vui lòng cung cấp Google credential.'); + } + + try { + const response = await fetch(`https://oauth2.googleapis.com/tokeninfo?id_token=${credential}`); + if (!response.ok) { + throw new UnauthorizedException('Token Google không hợp lệ hoặc đã hết hạn.'); + } + + const payload = await response.json(); + const email = payload.email; + const name = payload.name || email.split('@')[0]; + const avatar = payload.picture || null; + + if (!email) { + throw new BadRequestException('Không tìm thấy địa chỉ email từ Google.'); + } + + let user = await this.prisma.user.findUnique({ where: { email } }); + + if (!user) { + user = await this.prisma.user.create({ + data: { + email, + name, + avatar, + isAnonymous: false, + }, + }); + } else if (user.isBlocked) { + throw new UnauthorizedException('Tài khoản của bạn đã bị khóa. Vui lòng liên hệ quản trị viên.'); + } else if (user.isAnonymous) { + user = await this.prisma.user.update({ + where: { id: user.id }, + data: { + isAnonymous: false, + name: user.name || name, + avatar: user.avatar || avatar, + }, + }); + } + + const jwtPayload = { email: user.email, sub: user.id }; + return { + access_token: this.jwtService.sign(jwtPayload), + user: { + id: user.id, + email: user.email, + name: user.name, + avatar: user.avatar, + isAdmin: user.isAdmin, + }, + }; + } catch (error) { + console.error('[Google Auth Error]:', error); + if (error instanceof UnauthorizedException || error instanceof BadRequestException) { + throw error; + } + throw new BadRequestException('Đã xảy ra lỗi khi đăng nhập bằng Google.'); + } + } + @Post('signup/request') async signupRequest(@Body() body: any) { const { email, password, name, phone, address } = body; @@ -525,6 +628,7 @@ class PublicTourController { class TourController { constructor( private prisma: PrismaService, + private emailService: EmailService, @Inject(CACHE_MANAGER) private cacheManager: Cache ) {} @@ -894,23 +998,20 @@ class TourController { return { success: true }; } - // getPublicTours does not need TourRoleGuard as it's for any logged-in user to see their tours @UseInterceptors(CompressCacheInterceptor) // Áp dụng Interceptor nén và cache @UseGuards(JwtAuthGuard) @Get('explore') async getPublicTours(@Req() req: any) { - // Lọc Tour: Chỉ lấy những tour mà người dùng hiện tại là thành viên (Participant) + // Trả về tất cả các tour trong hệ thống để hiển thị trên bản đồ cộng đồng return this.prisma.tour.findMany({ - where: { - participants: { - some: { userId: req.user.id } - } - }, - take: 20, + take: 50, include: { participants: { - where: { userId: req.user.id }, - select: { role: true } + select: { userId: true, role: true, displayName: true } + }, + joinRequests: { + where: { userId: req.user.id, status: 'PENDING' }, + select: { id: true } }, photos: { take: 1 }, legs: { @@ -929,7 +1030,6 @@ class TourController { }); } - @UseInterceptors(CompressCacheInterceptor) // Áp dụng Interceptor nén và cache @Roles(ParticipantRole.OWNER, ParticipantRole.MANAGER, ParticipantRole.MEMBER, ParticipantRole.MEMBER_NO_FINANCE, ParticipantRole.VIEWER_ONLY) // Any participant can view tour details @UseGuards(JwtAuthGuard, TourRoleGuard) @Get(':id') @@ -1133,8 +1233,7 @@ class TourController { return requests; } - @Roles(ParticipantRole.OWNER, ParticipantRole.MANAGER, ParticipantRole.MEMBER, ParticipantRole.MEMBER_NO_FINANCE, ParticipantRole.VIEWER_ONLY) // Any participant can create a join request for themselves or others (if they have permission) - @UseGuards(JwtAuthGuard, TourRoleGuard) + @UseGuards(JwtAuthGuard) @Post(':tourId/join-requests') async createJoinRequest(@Param('tourId', ParseUUIDPipe) tourId: string, @Body() body: { userId?: string }, @Req() req: any) { const requestingUserId = body.userId || req.user.id; @@ -1392,6 +1491,181 @@ class TourController { }); })); } + + @Roles(ParticipantRole.OWNER, ParticipantRole.MANAGER) + @UseGuards(JwtAuthGuard, TourRoleGuard) + @Post(':tourId/invitations') + async createInvitation( + @Param('tourId', ParseUUIDPipe) tourId: string, + @Body() body: { email: string; role?: ParticipantRole }, + @Req() req: any + ) { + const { email, role = ParticipantRole.MEMBER } = body; + if (!email) { + throw new BadRequestException('Vui lòng cung cấp email mời.'); + } + + const tour = await this.prisma.tour.findUnique({ + where: { id: tourId }, + select: { title: true } + }); + if (!tour) { + throw new NotFoundException('Không tìm thấy hành trình.'); + } + + const invitedUser = await this.prisma.user.findUnique({ where: { email } }); + if (invitedUser) { + const existingParticipant = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId, userId: invitedUser.id } } + }); + if (existingParticipant) { + throw new BadRequestException('Người dùng này đã là thành viên của tour.'); + } + } + + const token = crypto.randomBytes(32).toString('hex'); + const expiredAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000); // 7 days + + const invitation = await this.prisma.tourInvitation.upsert({ + where: { tourId_email: { tourId, email } }, + update: { token, expiredAt, role }, + create: { tourId, email, token, expiredAt, role } + }); + + const appUrl = process.env.FRONTEND_URL || 'http://localhost:3002'; + const inviteLink = `${appUrl}/join-tour?token=${token}`; + + try { + await this.emailService.sendTourInvitation(email, tour.title, inviteLink); + } catch (e) { + console.error('[Invitation Email Error]:', e); + throw new BadRequestException('Không thể gửi email lời mời. Vui lòng kiểm tra cấu hình SMTP.'); + } + + return { success: true, message: 'Lời mời đã được gửi thành công!' }; + } + + @UseGuards(JwtAuthGuard) + @Post('join-by-token') + async joinByToken(@Body() body: { token: string }, @Req() req: any) { + const { token } = body; + if (!token) { + throw new BadRequestException('Vui lòng cung cấp token lời mời.'); + } + + const invitation = await this.prisma.tourInvitation.findUnique({ + where: { token }, + include: { tour: { select: { title: true } } } + }); + + if (!invitation) { + throw new NotFoundException('Lời mời không hợp lệ hoặc đã bị hủy.'); + } + + if (invitation.expiredAt < new Date()) { + try { + await this.prisma.tourInvitation.delete({ where: { id: invitation.id } }); + } catch (e) {} + throw new BadRequestException('Lời mời đã hết hạn.'); + } + + const userId = req.user.id; + + const existingParticipation = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId: invitation.tourId, userId } } + }); + + if (existingParticipation) { + try { + await this.prisma.tourInvitation.delete({ where: { id: invitation.id } }); + } catch (e) {} + // Xóa cache để đảm bảo dữ liệu thành viên luôn mới nhất + await Promise.all([ + this.cacheManager.del(invitation.tourId), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}`), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}/public`), + this.cacheManager.del(`/api/v1/tours/explore`), + ]); + return { success: true, tourId: invitation.tourId, message: 'Bạn đã là thành viên của tour này.' }; + } + + await this.prisma.$transaction([ + this.prisma.tourParticipant.create({ + data: { + tourId: invitation.tourId, + userId, + role: invitation.role + } + }), + this.prisma.tourInvitation.delete({ + where: { id: invitation.id } + }) + ]); + + await Promise.all([ + this.cacheManager.del(invitation.tourId), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}`), + this.cacheManager.del(`/api/v1/tours/${invitation.tourId}/public`), + this.cacheManager.del(`/api/v1/tours/explore`), + this.cacheManager.del(`user-role:${userId}:${invitation.tourId}`), + ]); + + return { success: true, tourId: invitation.tourId, message: `Bạn đã gia nhập hành trình "${invitation.tour.title}"!` }; + } + + @Roles(ParticipantRole.OWNER, ParticipantRole.MANAGER) + @UseGuards(JwtAuthGuard, TourRoleGuard) + @Post(':tourId/members/merge') + async mergeMember( + @Param('tourId', ParseUUIDPipe) tourId: string, + @Body() body: { manualParticipantId: string; systemUserId: string }, + @Req() req: any + ) { + const { manualParticipantId, systemUserId } = body; + if (!manualParticipantId || !systemUserId) { + throw new BadRequestException('Thiếu thông tin manualParticipantId hoặc systemUserId.'); + } + + const manualParticipant = await this.prisma.tourParticipant.findFirst({ + where: { id: manualParticipantId, tourId, userId: null } + }); + if (!manualParticipant) { + throw new NotFoundException('Không tìm thấy thành viên ngoài hệ thống cần gán.'); + } + + const systemParticipant = await this.prisma.tourParticipant.findUnique({ + where: { tourId_userId: { tourId, userId: systemUserId } } + }); + if (!systemParticipant) { + throw new NotFoundException('Không tìm thấy thành viên hệ thống trong hành trình này.'); + } + + const nextAdult = Math.max(systemParticipant.adultCount, manualParticipant.adultCount); + const nextChild = Math.max(systemParticipant.childCount, manualParticipant.childCount); + + await this.prisma.$transaction([ + this.prisma.tourParticipant.update({ + where: { id: systemParticipant.id }, + data: { + adultCount: nextAdult, + childCount: nextChild, + role: manualParticipant.role !== ParticipantRole.MEMBER ? manualParticipant.role : systemParticipant.role + } + }), + this.prisma.tourParticipant.delete({ + where: { id: manualParticipant.id } + }) + ]); + + await this.cacheManager.del(`user-role:${systemUserId}:${tourId}`); + await Promise.all([ + this.cacheManager.del(tourId), + this.cacheManager.del(`/api/v1/tours/${tourId}`), + this.cacheManager.del(`/api/v1/tours/explore`) + ]); + + return { success: true, message: 'Đã gán và hợp nhất thông tin thành viên thành công.' }; + } } @Controller('locations') diff --git a/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781913812732-501707010.png b/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781913812732-501707010.png deleted file mode 100644 index 1ffad6e..0000000 Binary files a/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781913812732-501707010.png and /dev/null differ diff --git a/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781915747091-345609115.jpg b/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781915747091-345609115.jpg deleted file mode 100644 index 5ce059b..0000000 Binary files a/backend/uploads/members/554b4913-76dc-4d2d-a350-b5a144c2fd22/originals/1781915747091-345609115.jpg and /dev/null differ diff --git a/backend/uploads/tours/1781913812732-501707010.jpg b/backend/uploads/tours/1781913812732-501707010.jpg deleted file mode 100644 index 84371fa..0000000 Binary files a/backend/uploads/tours/1781913812732-501707010.jpg and /dev/null differ diff --git a/backend/uploads/tours/1781915747091-345609115.jpg b/backend/uploads/tours/1781915747091-345609115.jpg deleted file mode 100644 index a08fb62..0000000 Binary files a/backend/uploads/tours/1781915747091-345609115.jpg and /dev/null differ diff --git a/frontend/index.html b/frontend/index.html index 08a3411..aa37f73 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,6 +4,7 @@ + Travel Planner diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index a7180e7..a13faaf 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -5,6 +5,7 @@ import { TourDetailPage } from './pages/TourDetailPage'; import SignupPage from './pages/SignupPage'; import { MyPhotosPage } from './pages/MyPhotosPage'; import { MyNotePage } from './pages/MyNotePage'; +import { JoinTourPage } from './pages/JoinTourPage'; import { useTourStore } from './store/useTourStore'; import { ConfirmProvider } from './hooks/useConfirm'; import { NotificationProvider } from './hooks/useNotification'; @@ -14,7 +15,9 @@ function App() { const viewTourId = params.get('viewTour'); const [user, setUser] = useState(null); - const [currentPage, setCurrentPage] = useState<'landing' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes'>(viewTourId ? 'tourDetail' : 'landing'); + const [currentPage, setCurrentPage] = useState<'landing' | 'explore' | 'tourDetail' | 'signup' | 'myPhotos' | 'notes' | 'joinTour'>( + viewTourId ? 'tourDetail' : (window.location.pathname === '/join-tour' || params.has('token') ? 'joinTour' : 'landing') + ); const [currentTourId, setCurrentTourId] = useState(viewTourId); const [isPublicTourView, setIsPublicTourView] = useState(!!viewTourId); @@ -25,32 +28,45 @@ function App() { useEffect(() => { const params = new URLSearchParams(window.location.search); const viewTourId = params.get('viewTour'); + const isJoinTour = window.location.pathname === '/join-tour' || params.has('token'); - if (viewTourId) { - // Không gọi replaceState ngay để tránh mất ID khi component re-render hoặc refresh - } else { - // Kiểm tra đăng nhập bình thường nếu không có tham số viewTour - const token = localStorage.getItem('token'); - const storedUser = localStorage.getItem('user'); - if (token && storedUser) { - try { - setUser(JSON.parse(storedUser)); - setCurrentPage('explore'); // Chuyển đến bản đồ khám phá nếu đã đăng nhập - } catch (e) { - console.error("Lỗi khi phân tích dữ liệu người dùng từ localStorage", e); - localStorage.removeItem('token'); - localStorage.removeItem('user'); - setCurrentPage('landing'); // Quay về trang Landing nếu dữ liệu lỗi - } - } else { - setCurrentPage('landing'); // Quay về trang Landing nếu chưa đăng nhập + // Khôi phục thông tin đăng nhập nếu có + const token = localStorage.getItem('token'); + const storedUser = localStorage.getItem('user'); + let loggedInUser = null; + if (token && storedUser) { + try { + loggedInUser = JSON.parse(storedUser); + setUser(loggedInUser); + } catch (e) { + localStorage.removeItem('token'); + localStorage.removeItem('user'); } } - }, []); // Chỉ chạy một lần khi component mount + + if (isJoinTour) { + setCurrentPage('joinTour'); + } else if (viewTourId) { + setCurrentPage('tourDetail'); + } else { + if (loggedInUser) { + setCurrentPage('explore'); + } else { + setCurrentPage('landing'); + } + } + }, []); const handleLoginSuccess = (loggedInUser: any) => { setUser(loggedInUser); - setCurrentPage('explore'); + + // Nếu có pending token, ta vẫn giữ ở trang joinTour để nó tự động thực hiện join + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + setCurrentPage('joinTour'); + } else { + setCurrentPage('explore'); + } }; const handleLogout = () => { @@ -78,11 +94,22 @@ function App() { }; const handleBackFromSignup = () => { - setCurrentPage('landing'); + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + setCurrentPage('joinTour'); + } else { + setCurrentPage('landing'); + } }; const handleSignupSuccess = () => { - setCurrentPage('landing'); // Quay về trang Landing sau khi đăng ký thành công + // Sau khi đăng ký, ta có thể tự động đăng nhập hoặc quay lại landing/joinTour + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + setCurrentPage('joinTour'); + } else { + setCurrentPage('landing'); + } }; return ( @@ -127,6 +154,24 @@ function App() { return ; } + if (currentPage === 'joinTour') { + return ( + setCurrentPage('signup')} + onViewTour={(tourId) => { + setCurrentTourId(tourId); + setIsPublicTourView(false); + setCurrentPage('tourDetail'); + }} + onGoToHome={() => { + const loggedIn = !!localStorage.getItem('token'); + setCurrentPage(loggedIn ? 'explore' : 'landing'); + }} + /> + ); + } + return setCurrentPage('explore')} onGoToSignup={() => setCurrentPage('signup')} onGoToMap={() => setCurrentPage('explore')} onLoginSuccess={handleLoginSuccess} isInitialSetup={false} />; })()} diff --git a/frontend/src/components/AddMemberModal.tsx b/frontend/src/components/AddMemberModal.tsx index 4f8de6c..95165b3 100644 --- a/frontend/src/components/AddMemberModal.tsx +++ b/frontend/src/components/AddMemberModal.tsx @@ -16,6 +16,7 @@ interface AddMemberModalProps { } export const AddMemberModal: React.FC = ({ isOpen, onClose, tourId, participants = [], joinRequests = [], onRemoveMember, onMemberAdded, userRole, isPublicView }) => { + const [activeTab, setActiveTab] = useState<'search' | 'email'>('search'); const [query, setQuery] = useState(''); const [users, setUsers] = useState([]); const [loading, setLoading] = useState(false); @@ -26,6 +27,13 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose, const [submitError, setSubmitError] = useState(''); const [actionLoading, setActionLoading] = useState(null); + // Trạng thái cho tab mời qua email + const [inviteEmail, setInviteEmail] = useState(''); + const [inviteRole, setInviteRole] = useState<'OWNER' | 'MANAGER' | 'MEMBER' | 'MEMBER_NO_FINANCE' | 'VIEWER_ONLY'>('MEMBER'); + const [inviteLoading, setInviteLoading] = useState(false); + const [inviteError, setInviteError] = useState(''); + const [inviteSuccess, setInviteSuccess] = useState(''); + const confirm = useConfirm(); const notify = useNotification(); @@ -34,6 +42,7 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose, const visibleUsers = useMemo(() => users.filter((u) => !participantIds.has(u.id)), [users, participantIds]); const canCreateDirectly = !userRole || userRole === 'OWNER' || userRole === 'MANAGER'; + const canInviteByEmail = userRole === 'OWNER' || userRole === 'MANAGER'; const handleManualAdd = async () => { const name = query.trim(); @@ -79,14 +88,44 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose, } }; + const handleSendInvite = async (e: React.FormEvent) => { + e.preventDefault(); + if (!inviteEmail.trim()) return; + setInviteLoading(true); + setInviteError(''); + setInviteSuccess(''); + try { + const res = await fetch(`/api/v1/tours/${tourId}/invitations`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}`, + }, + body: JSON.stringify({ email: inviteEmail.trim(), role: inviteRole }), + }); + const data = await res.json(); + if (!res.ok) { + throw new Error(data.message || 'Gửi lời mời thất bại'); + } + setInviteSuccess(`Lời mời đã được gửi thành công đến ${inviteEmail}!`); + setInviteEmail(''); + notify({ title: 'Thành công', message: `Lời mời đã gửi tới ${inviteEmail}`, type: 'success' }); + await onMemberAdded?.(); + } catch (err: any) { + setInviteError(err.message || 'Thao tác thất bại'); + } finally { + setInviteLoading(false); + } + }; + useEffect(() => { - if (!isOpen) return; + if (!isOpen || activeTab !== 'search') return; const delayDebounceFn = setTimeout(() => { fetchUsers(); }, 300); return () => clearTimeout(delayDebounceFn); - }, [query, isOpen]); + }, [query, isOpen, activeTab]); useEffect(() => { if (!isOpen) { @@ -95,6 +134,11 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose, setRole('MEMBER'); setFetchError(''); setSubmitError(''); + setInviteEmail(''); + setInviteRole('MEMBER'); + setInviteError(''); + setInviteSuccess(''); + setActiveTab('search'); } }, [isOpen]); @@ -176,10 +220,10 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose,

- {canCreateDirectly ? 'Thêm thành viên' : 'Mời tham gia tour'} + {canCreateDirectly ? 'Thành viên hành trình' : 'Mời tham gia tour'}

- {canCreateDirectly ? 'Chọn người dùng và phân quyền cho tour này.' : 'Mời sẽ được gửi và chờ người quản lý phê duyệt.'} + {canCreateDirectly ? 'Quản lý, thêm thành viên và mời người khác tham gia.' : 'Mời sẽ được gửi và chờ người quản lý phê duyệt.'}

-
+ {canInviteByEmail && ( +
+ + +
+ )} + +
+ {/* Danh sách thành viên hiện tại */}

Thành viên của tour ({participants.filter(p => p.user || p.displayName).length})

@@ -230,6 +300,7 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose,
+ {/* Danh sách chờ duyệt */} {joinRequests.length > 0 && (

@@ -269,128 +340,190 @@ export const AddMemberModal: React.FC = ({ isOpen, onClose,

)} - {canCreateDirectly && ( -
- - -
- )} +
-
-
- setQuery(e.target.value)} - className="w-full pl-10 pr-10 py-3 bg-gray-50 border border-gray-100 rounded-2xl focus:ring-2 focus:ring-blue-500 outline-none transition-all text-sm font-bold text-gray-800" - /> - - {query && ( + {activeTab === 'search' ? ( +
+ {canCreateDirectly && ( +
+ + +
+ )} + +
+
+ setQuery(e.target.value)} + className="w-full pl-10 pr-10 py-3 bg-gray-50 border border-gray-100 rounded-2xl focus:ring-2 focus:ring-blue-500 outline-none transition-all text-sm font-bold text-gray-800" + /> + + {query && ( + + )} +
+ + {fetchError && ( +
+ {fetchError} +
+ )} + {submitError && ( +
+ {submitError} +
+ )} + {loading ? ( +
+ ) : ( +
+ {query.trim() && canCreateDirectly && ( + + )} + {visibleUsers.map((u) => { + const isSelected = selectedUser === u.id; + return ( + + ); + })} + {!loading && visibleUsers.length === 0 && ( +
Không tìm thấy người dùng phù hợp
+ )} +
+ )} +
+
+ + +
+
+ ) : ( +
+
+ + setInviteEmail(e.target.value)} + className="w-full px-4 py-3 bg-gray-50 border border-gray-100 rounded-2xl focus:ring-2 focus:ring-blue-500 outline-none transition-all text-sm font-bold text-gray-800" + /> +
+ +
+ + +
+ + {inviteError && ( +
+ {inviteError} +
+ )} + {inviteSuccess && ( +
+ {inviteSuccess} +
+ )} + +
+ - )} -
- - {fetchError && ( -
- {fetchError}
- )} - {submitError && ( -
- {submitError} -
- )} - {loading ? ( -
- ) : ( -
- {query.trim() && canCreateDirectly && ( - - )} - {visibleUsers.map((u) => { - const isSelected = selectedUser === u.id; - return ( - - ); - })} - {!loading && visibleUsers.length === 0 && ( -
Không tìm thấy người dùng phù hợp
- )} -
- )} -
-
- -
- - + + )}
diff --git a/frontend/src/components/LoginModal.tsx b/frontend/src/components/LoginModal.tsx index edc70d3..33432e2 100644 --- a/frontend/src/components/LoginModal.tsx +++ b/frontend/src/components/LoginModal.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { X, Mail, Lock, ArrowRight, Loader2 } from 'lucide-react'; interface LoginModalProps { @@ -14,6 +14,79 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onSwitc const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); + const handleGoogleLogin = async (googleResponse: any) => { + setError(''); + setIsLoading(true); + try { + const response = await fetch(`/api/v1/auth/google`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ credential: googleResponse.credential }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.message || 'Đăng nhập Google thất bại'); + } + + localStorage.setItem('token', data.access_token); + localStorage.setItem('user', JSON.stringify(data.user)); + + // Tự động gia nhập tour nếu có pendingInviteToken + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + try { + const joinRes = await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: pendingInviteToken }), + }); + if (joinRes.ok) { + localStorage.removeItem('pendingInviteToken'); + } + } catch (e) { + console.error('Lỗi tự động gia nhập:', e); + } + } + + if (onLoginSuccess) { + onLoginSuccess(data.user); + } + onClose(); + } catch (err: any) { + setError(err.message); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + if (!isOpen) return; + + const timer = setTimeout(() => { + if (typeof window !== 'undefined' && (window as any).google) { + try { + (window as any).google.accounts.id.initialize({ + client_id: (import.meta as any).env.VITE_GOOGLE_CLIENT_ID || '864264639911-dummyid.apps.googleusercontent.com', + callback: handleGoogleLogin, + }); + + (window as any).google.accounts.id.renderButton( + document.getElementById('google-signin-btn-login'), + { theme: 'outline', size: 'large', width: '380' } + ); + } catch (e) { + console.error('Lỗi khởi tạo Google Sign-in:', e); + } + } + }, 100); + + return () => clearTimeout(timer); + }, [isOpen]); + if (!isOpen) return null; const handleSubmit = async (e: React.FormEvent) => { @@ -37,6 +110,26 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onSwitc localStorage.setItem('token', data.access_token); localStorage.setItem('user', JSON.stringify(data.user)); + // Tự động gia nhập tour nếu có pendingInviteToken + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + try { + const joinRes = await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: pendingInviteToken }), + }); + if (joinRes.ok) { + localStorage.removeItem('pendingInviteToken'); + } + } catch (e) { + console.error('Lỗi tự động gia nhập:', e); + } + } + if (onLoginSuccess) { onLoginSuccess(data.user); } @@ -122,6 +215,15 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onSwitc +
+
+
+
+ Hoặc +
+ +
+

Chưa có tài khoản?{' '} diff --git a/frontend/src/pages/ExploreMap.tsx b/frontend/src/pages/ExploreMap.tsx index 9c1c872..087fc4a 100644 --- a/frontend/src/pages/ExploreMap.tsx +++ b/frontend/src/pages/ExploreMap.tsx @@ -5,7 +5,7 @@ const MarkerClusterGroup = (_MarkerClusterGroup as any).default || _MarkerCluste import L from 'leaflet'; import 'leaflet/dist/leaflet.css'; import { useTourStore } from '@/store/useTourStore'; -import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2 } from 'lucide-react'; +import { X, Navigation, Image as ImageIcon, LogOut, Settings, Share2, Filter, MapPin, Loader2, UserPlus, Clock } from 'lucide-react'; import { UserManagementModal } from '@/components/UserManagementModal'; import { useNotification } from '@/hooks/useNotification'; import { CreateTourModal } from '../components/CreateTourModal'; @@ -174,7 +174,7 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, }, [publicTours]); // State cho menu chuột phải chia sẻ - const [shareMenu, setShareMenu] = useState<{ x: number, y: number, id: string, title: string, canShare: boolean } | null>(null); + const [shareMenu, setShareMenu] = useState<{ x: number, y: number, id: string, title: string, canShare: boolean, isParticipant: boolean, hasPendingRequest: boolean } | null>(null); const handleShare = (id: string, title: string) => { const shareUrl = `${window.location.origin}?viewTour=${id}`; @@ -211,6 +211,35 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, setShareMenu(null); }; + const handleRequestJoin = async (tourId: string) => { + setShareMenu(null); + try { + const res = await fetch(`/api/v1/tours/${tourId}/join-requests`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('token')}` + } + }); + const data = await res.json(); + if (!res.ok) { + throw new Error(data.message || 'Gửi yêu cầu tham gia thất bại.'); + } + notify({ + title: 'Thành công', + message: 'Đã gửi yêu cầu tham gia tour. Vui lòng chờ chủ tour duyệt.', + type: 'success' + }); + fetchPublicTours(); + } catch (err: any) { + notify({ + title: 'Lỗi', + message: err.message || 'Không thể gửi yêu cầu tham gia.', + type: 'error' + }); + } + }; + const handleSelectSuggestion = (s: any) => { if (s.type === 'tour') { onViewTour(s.id); @@ -471,9 +500,12 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, eventHandlers={{ click: () => onViewTour(tour.id), contextmenu: (e) => { - // Kiểm tra quyền chia sẻ (OWNER, MANAGER, MEMBER) - const role = tour.participants?.[0]?.role; - const canShare = ['OWNER', 'MANAGER', 'MEMBER'].includes(role); + const currentUserId = user?.id; + const myParticipant = tour.participants?.find((p: any) => p.userId === currentUserId); + const isParticipant = !!myParticipant; + const myRole = myParticipant?.role; + const canShare = isParticipant && ['OWNER', 'MANAGER', 'MEMBER'].includes(myRole); + const hasPendingRequest = tour.joinRequests && tour.joinRequests.length > 0; // Hiển thị menu tại vị trí chuột setShareMenu({ @@ -481,7 +513,9 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, y: e.containerPoint.y, id: tour.id, title: tour.title, - canShare + canShare, + isParticipant, + hasPendingRequest }); } }} @@ -575,15 +609,31 @@ export const ExploreMap = ({ onBack, onLogout, user, onViewTour, onOpenMyPhotos, style={{ top: shareMenu.y, left: shareMenu.x }} onClick={(e) => e.stopPropagation()} > - {shareMenu.canShare ? ( - + ) : ( +

Bạn đã gia nhập tour này
+ ) + ) : shareMenu.hasPendingRequest ? ( + ) : ( -
Bạn không có quyền chia sẻ tour này
+ )}
)} diff --git a/frontend/src/pages/JoinTourPage.tsx b/frontend/src/pages/JoinTourPage.tsx new file mode 100644 index 0000000..65cae48 --- /dev/null +++ b/frontend/src/pages/JoinTourPage.tsx @@ -0,0 +1,184 @@ +import React, { useEffect, useState, useRef } from 'react'; +import { Compass, Loader2, LogIn, UserPlus, AlertCircle, CheckCircle } from 'lucide-react'; +import { LoginModal } from '../components/LoginModal'; + +interface JoinTourPageProps { + onLoginSuccess: (user: any) => void; + onGoToSignup: () => void; + onViewTour: (tourId: string) => void; + onGoToHome: () => void; +} + +export const JoinTourPage: React.FC = ({ onLoginSuccess, onGoToSignup, onViewTour, onGoToHome }) => { + const [inviteToken, setInviteToken] = useState(null); + const [isLoginOpen, setIsLoginOpen] = useState(false); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + const [successMsg, setSuccessMsg] = useState(''); + const [tourId, setTourId] = useState(null); + + // Guard chống React StrictMode chạy effect 2 lần trong dev mode + const hasJoinedRef = useRef(false); + + useEffect(() => { + const params = new URLSearchParams(window.location.search); + const token = params.get('token'); + setInviteToken(token); + + if (token) { + localStorage.setItem('pendingInviteToken', token); + + // Nếu đã đăng nhập, tự động thực hiện join + const systemToken = localStorage.getItem('token'); + if (systemToken && !hasJoinedRef.current) { + hasJoinedRef.current = true; + handleJoinTour(token, systemToken); + } + } else { + setError('Mã lời mời không tồn tại hoặc không hợp lệ.'); + } + }, []); + + const handleJoinTour = async (token: string, authToken: string) => { + setLoading(true); + setError(''); + try { + const res = await fetch('/api/v1/tours/join-by-token', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${authToken}` + }, + body: JSON.stringify({ token }) + }); + + const data = await res.json(); + if (!res.ok) { + throw new Error(data.message || 'Không thể gia nhập tour.'); + } + + setSuccessMsg(data.message || 'Bạn đã tham gia tour thành công!'); + setTourId(data.tourId); + localStorage.removeItem('pendingInviteToken'); + } catch (err: any) { + setError(err.message || 'Đã xảy ra lỗi.'); + } finally { + setLoading(false); + } + }; + + const handleSuccessLogin = (user: any) => { + onLoginSuccess(user); + const token = localStorage.getItem('token'); + const pendingToken = localStorage.getItem('pendingInviteToken') || inviteToken; + if (token && pendingToken) { + handleJoinTour(pendingToken, token); + } + }; + + const isLoggedIn = !!localStorage.getItem('token'); + + return ( +
+
+ + {/* Logo/Icon */} +
+
+ +
+
+ + {loading ? ( +
+ +

Đang xử lý tham gia hành trình...

+

Vui lòng đợi trong giây lát.

+
+ ) : error ? ( +
+
+ +
+

Gia nhập thất bại

+

{error}

+
+ {isLoggedIn ? ( + + ) : ( + <> + + + + )} +
+
+ ) : successMsg ? ( +
+
+ +
+

Thành công!

+

{successMsg}

+
+ +
+
+ ) : ( +
+

Chào mừng bạn!

+

+ Bạn nhận được một lời mời tham gia hành trình du lịch. Vui lòng đăng nhập hoặc tạo tài khoản để có thể join và xem các hoạt động, chi phí của tour. +

+ +
+ + +
+
+ )} + +
+ + setIsLoginOpen(false)} + onSwitchToSignup={onGoToSignup} + onLoginSuccess={handleSuccessLogin} + /> +
+ ); +}; diff --git a/frontend/src/pages/SignupPage.tsx b/frontend/src/pages/SignupPage.tsx index d9b7b57..a036870 100644 --- a/frontend/src/pages/SignupPage.tsx +++ b/frontend/src/pages/SignupPage.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { User, Mail, Lock, ArrowRight, ChevronLeft, Phone, MapPin, ShieldCheck } from 'lucide-react'; interface SignupPageProps { @@ -20,6 +20,71 @@ const SignupPage: React.FC = ({ onBack, onSuccess }) => { const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); + const handleGoogleLogin = async (googleResponse: any) => { + setError(''); + setIsLoading(true); + try { + const response = await fetch(`/api/v1/auth/google`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ credential: googleResponse.credential }), + }); + + const data = await response.json(); + if (!response.ok) { + throw new Error(data.message || 'Đăng ký bằng Google thất bại'); + } + + localStorage.removeItem('guest_token'); + localStorage.removeItem('guest_user'); + localStorage.setItem('token', data.access_token); + localStorage.setItem('user', JSON.stringify(data.user)); + + // Tự động gia nhập tour nếu có pendingInviteToken + const pendingInviteToken = localStorage.getItem('pendingInviteToken'); + if (pendingInviteToken) { + await fetch(`/api/v1/tours/join-by-token`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${data.access_token}`, + }, + body: JSON.stringify({ token: pendingInviteToken }), + }).catch((e) => console.error('Lỗi tự động gia nhập:', e)); + } + + onSuccess(); + } catch (err: any) { + setError(err.message); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + if (step !== 'form') return; + + const timer = setTimeout(() => { + if (typeof window !== 'undefined' && (window as any).google) { + try { + (window as any).google.accounts.id.initialize({ + client_id: (import.meta as any).env.VITE_GOOGLE_CLIENT_ID || '864264639911-dummyid.apps.googleusercontent.com', + callback: handleGoogleLogin, + }); + + (window as any).google.accounts.id.renderButton( + document.getElementById('google-signin-btn-signup'), + { theme: 'outline', size: 'large', width: '380' } + ); + } catch (e) { + console.error('Lỗi khởi tạo Google Sign-in:', e); + } + } + }, 100); + + return () => clearTimeout(timer); + }, [step]); + const handleChange = (field: string, value: string) => { setFormData(prev => ({ ...prev, [field]: value })); }; @@ -230,6 +295,19 @@ const SignupPage: React.FC = ({ onBack, onSuccess }) => { {!isLoading && } + + {step === 'form' && ( + <> +
+
+
+
+ Hoặc +
+ +
+ + )} ); diff --git a/frontend/src/pages/TourDetailPage.tsx b/frontend/src/pages/TourDetailPage.tsx index d4df2dd..4a4c686 100644 --- a/frontend/src/pages/TourDetailPage.tsx +++ b/frontend/src/pages/TourDetailPage.tsx @@ -844,6 +844,27 @@ export const TourDetailPage = ({ const canUploadPhoto = isPublicView ? false : ['OWNER', 'MANAGER', 'MEMBER', 'MEMBER_NO_FINANCE'].includes(userRole || ''); const isOwner = isPublicView ? false : userRole === 'OWNER'; const canShare = isPublicView || ['OWNER', 'MANAGER', 'MEMBER'].includes(userRole || ''); + const canManage = isOwner || (!isPublicView && userRole === 'MANAGER'); + + const duplicateMatches = useMemo(() => { + if (!canManage || !currentTour?.participants) return []; + + const manualMembers = currentTour.participants.filter((p: any) => !p.userId && p.displayName); + const systemMembers = currentTour.participants.filter((p: any) => p.userId && p.user?.name); + + const matches: Array<{ manual: any; system: any }> = []; + + manualMembers.forEach((m: any) => { + const match = systemMembers.find((s: any) => { + return s.user.name.trim().toLowerCase() === m.displayName.trim().toLowerCase(); + }); + if (match) { + matches.push({ manual: m, system: match }); + } + }); + + return matches; + }, [canManage, currentTour?.participants]); useEffect(() => { if (isPublicView) { @@ -1609,6 +1630,45 @@ export const TourDetailPage = ({ )} + + {duplicateMatches.map((match) => ( +
+
+ + + Phát hiện thành viên ngoài hệ thống "{match.manual.displayName}" trùng tên với tài khoản "{match.system.user.name}" vừa tham gia. + +
+ +
+ ))}