From 832cb88c300c2f186edd09ab677b3b6cf244cfe1 Mon Sep 17 00:00:00 2001 From: Sn-Kinos Date: Thu, 13 Aug 2026 23:07:54 +0900 Subject: [PATCH] =?UTF-8?q?Firestore=20=EB=B3=B4=EC=95=88=20=EA=B7=9C?= =?UTF-8?q?=EC=B9=99=20=C2=B7=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EB=93=9C=20=ED=91=9C=EA=B8=B0=20FANUZU=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/firebase/firestore.rules | 4 ++-- app/firebase/test/tests/firestore.rules.test.mjs | 6 +++--- app/test/app_smoke_test.dart | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/firebase/firestore.rules b/app/firebase/firestore.rules index 0b2a46c..226c62d 100644 --- a/app/firebase/firestore.rules +++ b/app/firebase/firestore.rules @@ -1,6 +1,6 @@ rules_version = '2'; -// Fancake — Firestore 보안 규칙 (2주차 설계본 v0.1) +// FANUZU — Firestore 보안 규칙 (2주차 설계본 v0.1) // // 근거 // - wireframe/handoff/rbac-summary.md 역할 3종 · 운영자 등급 3단계(D-18) @@ -381,7 +381,7 @@ service cloud.firestore { match /posts/{postId} { allow read: if signedIn(); // 교차검증 F-05 — 예전에는 authorUid·likeCount·visibility 3개만 봐서 - // ① authorName 을 "Fancake 운영팀"으로 적어 사칭 ② commentCount 위조 + // ① authorName 을 "FANUZU 운영팀"으로 적어 사칭 ② commentCount 위조 // ③ 소속하지 않은 팬덤 피드에 글 삽입이 가능했다. 화이트리스트 + 원본 대조로 닫는다. allow create: if authorIsSelf() && request.resource.data.keys().hasOnly([ diff --git a/app/firebase/test/tests/firestore.rules.test.mjs b/app/firebase/test/tests/firestore.rules.test.mjs index a5b52c4..5f13d6b 100644 --- a/app/firebase/test/tests/firestore.rules.test.mjs +++ b/app/firebase/test/tests/firestore.rules.test.mjs @@ -326,7 +326,7 @@ describe('F-05 — 작성자 표시명 사칭 회귀', () => { setDoc(doc(dbFor('alice'), 'posts/forged'), { fandomId: 'fandom-a', authorUid: 'alice', - authorName: 'Fancake 운영팀', + authorName: 'FANUZU 운영팀', body: 'forged', imageUrls: [], likeCount: 0, @@ -342,7 +342,7 @@ describe('F-05 — 작성자 표시명 사칭 회귀', () => { await assertFails( setDoc(doc(dbFor('alice'), 'posts/post-1/comments/forged'), { authorUid: 'alice', - authorName: 'Fancake 운영팀', + authorName: 'FANUZU 운영팀', body: 'forged', visibility: 'visible', createdAt: '2026-08-08T00:00:00Z', @@ -355,7 +355,7 @@ describe('F-05 — 작성자 표시명 사칭 회귀', () => { await assertFails( setDoc(doc(dbFor('alice'), 'questions/question-1/answers/forged'), { authorUid: 'alice', - authorName: 'Fancake 운영팀', + authorName: 'FANUZU 운영팀', body: 'forged', sourceUrls: [], accepted: false, diff --git a/app/test/app_smoke_test.dart b/app/test/app_smoke_test.dart index 14bfe53..ca49b1f 100644 --- a/app/test/app_smoke_test.dart +++ b/app/test/app_smoke_test.dart @@ -19,7 +19,7 @@ void main() { await tester.pumpAndSettle(); expect(tester.takeException(), isNull); - expect(find.text('Fancake'), findsOneWidget); + expect(find.text('FANUZU'), findsOneWidget); // 시안 S-A-LOGIN 의 소셜 버튼 4종이 라벨 그대로 있다. for (final provider in SocialProvider.values) { expect(find.text(provider.label), findsOneWidget, reason: provider.name);