From cc2dd099615ce7ffe7c0d1ac6bcc515b19ec88bc Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:53:53 +0900 Subject: [PATCH 01/18] =?UTF-8?q?feat:=20oauthlogin=20=EC=9C=A0=ED=8B=B8?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/api/auth.ts | 9 +++++++-- apps/web/src/hooks/api/auth.ts | 8 +------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/apps/web/src/api/auth.ts b/apps/web/src/api/auth.ts index 7fc75798..482b6352 100644 --- a/apps/web/src/api/auth.ts +++ b/apps/web/src/api/auth.ts @@ -1,4 +1,5 @@ import axiosInstance from '@/api/axios'; +import { ENV } from '@/constants/env'; type SignUpDto = { username: string; @@ -23,8 +24,12 @@ const signOut = async () => { await axiosInstance.post('/auth/logout'); }; -const oauthLogin = async (provider: 'google' | 'github') => { - await axiosInstance.get(`/auth/${provider}/login`); +const oauthLogin = () => { + const handleOauthLogin = (provider: 'google' | 'github') => { + window.location.href = `${ENV.API_URL}/auth/${provider}/login`; + }; + + return { handleOauthLogin }; }; export { logIn, signUp, oauthLogin, signOut }; diff --git a/apps/web/src/hooks/api/auth.ts b/apps/web/src/hooks/api/auth.ts index e4d46346..12fa5ab5 100644 --- a/apps/web/src/hooks/api/auth.ts +++ b/apps/web/src/hooks/api/auth.ts @@ -1,7 +1,7 @@ import { useMutation } from '@tanstack/react-query'; import { useNavigate } from '@tanstack/react-router'; -import { logIn, signUp, oauthLogin, signOut } from '@/api/auth'; +import { logIn, signUp, signOut } from '@/api/auth'; export const useLogIn = () => { const navigate = useNavigate(); @@ -35,9 +35,3 @@ export const useSignOut = () => { }, }); }; - -export const useOauthLogin = () => { - return useMutation({ - mutationFn: (provider: 'google' | 'github') => oauthLogin(provider), - }); -}; From cb6691324e7302eb52128d783b625d6f127a95f0 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:54:19 +0900 Subject: [PATCH 02/18] =?UTF-8?q?feat:=20OAuth=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EB=B2=84=ED=8A=BC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/auth/OAuthLogin.tsx | 45 +++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/web/src/components/auth/OAuthLogin.tsx diff --git a/apps/web/src/components/auth/OAuthLogin.tsx b/apps/web/src/components/auth/OAuthLogin.tsx new file mode 100644 index 00000000..6fdf1b9f --- /dev/null +++ b/apps/web/src/components/auth/OAuthLogin.tsx @@ -0,0 +1,45 @@ +import { cva } from 'class-variance-authority'; + +import { oauthLogin } from '@/api/auth'; +import GithubIc from '@/assets/icons/github.svg?react'; +import GoogleIc from '@/assets/icons/google.svg?react'; + +const oauthButton = cva('flex w-96 justify-center gap-3 rounded-lg py-4 shadow-normal', { + variants: { + type: { + github: 'bg-black text-white', + google: 'border border-main bg-white text-alt', + }, + }, + defaultVariants: { + type: 'github', + }, +}); + +const OAUTH_LABEL = { + github: 'Github', + google: 'Google', +} as const; + +type OAuthType = keyof typeof OAUTH_LABEL; + +interface OAuthLoginProps { + type: OAuthType; +} + +function OAuthLogin({ type }: OAuthLoginProps) { + const { handleOauthLogin } = oauthLogin(); + + const onLoginBtnClick = (type: OAuthType) => { + handleOauthLogin(type); + }; + + return ( + + ); +} + +export default OAuthLogin; From f1e77cb13d7f39fb0606eb18cf3cf8c58efdfff5 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:54:34 +0900 Subject: [PATCH 03/18] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/auth/index.tsx | 22 ++++++++++++++++++++++ apps/web/src/routes/auth/oauth.tsx | 13 ++++--------- 2 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 apps/web/src/components/auth/index.tsx diff --git a/apps/web/src/components/auth/index.tsx b/apps/web/src/components/auth/index.tsx new file mode 100644 index 00000000..bfd2eba0 --- /dev/null +++ b/apps/web/src/components/auth/index.tsx @@ -0,0 +1,22 @@ +import TicleCharacterBadge from '@/assets/images/ticle-character-badge.png'; +import TicleLogo from '@/assets/ticle.svg?react'; + +import OAuthLogin from './OAuthLogin'; + +function Auth() { + return ( +
+
+ 티클 캐릭터 + + 작은 지식이 모여 큰 성장이 되는 곳 +
+
+ + +
+
+ ); +} + +export default Auth; diff --git a/apps/web/src/routes/auth/oauth.tsx b/apps/web/src/routes/auth/oauth.tsx index a07012af..ad0679ee 100644 --- a/apps/web/src/routes/auth/oauth.tsx +++ b/apps/web/src/routes/auth/oauth.tsx @@ -1,16 +1,11 @@ -import { createFileRoute, Link } from '@tanstack/react-router'; +import { createFileRoute } from '@tanstack/react-router'; + +import Auth from '@/components/auth'; export const Route = createFileRoute('/auth/oauth')({ component: RouteComponent, }); function RouteComponent() { - return ( -
- OAuth 로그인 - - 로컬 로그인 - -
- ); + return ; } From 5f77458e611dfb29a6fb41085a296efe9f5ade45 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:54:49 +0900 Subject: [PATCH 04/18] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20asset=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/assets/icons/github.svg | 17 +++++++++++++++++ apps/web/src/assets/icons/google.svg | 6 ++++++ .../assets/images/ticle-character-badge.png | Bin 0 -> 75171 bytes apps/web/src/assets/ticle.svg | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 apps/web/src/assets/icons/github.svg create mode 100644 apps/web/src/assets/icons/google.svg create mode 100644 apps/web/src/assets/images/ticle-character-badge.png diff --git a/apps/web/src/assets/icons/github.svg b/apps/web/src/assets/icons/github.svg new file mode 100644 index 00000000..b3813426 --- /dev/null +++ b/apps/web/src/assets/icons/github.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/apps/web/src/assets/icons/google.svg b/apps/web/src/assets/icons/google.svg new file mode 100644 index 00000000..d6ae6a45 --- /dev/null +++ b/apps/web/src/assets/icons/google.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/web/src/assets/images/ticle-character-badge.png b/apps/web/src/assets/images/ticle-character-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..cc8c63875efadea660ac583f5f4026b7d20784fb GIT binary patch literal 75171 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%0Axr=$#+_y<}Yf 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 {snEeIQ2sN4YeFm(4*~kn<3f_&Knc$WW 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 JPDHLkV1mIV4`~1Z literal 0 HcmV?d00001 diff --git a/apps/web/src/assets/ticle.svg b/apps/web/src/assets/ticle.svg index e2a09801..ece6c2ee 100644 --- a/apps/web/src/assets/ticle.svg +++ b/apps/web/src/assets/ticle.svg @@ -1,3 +1,3 @@ - + From bb847cf20a7f228166c542e48436a22dfaf67391 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 14:34:41 +0900 Subject: [PATCH 05/18] =?UTF-8?q?feat:=20guest=20login=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/auth/auth.controller.ts | 2 +- apps/web/src/api/auth.ts | 12 ++++++------ apps/web/src/assets/icons/chevron-right.svg | 4 ++-- apps/web/src/components/auth/GuestLogin.tsx | 20 ++++++++++++++++++++ apps/web/src/components/auth/OAuthLogin.tsx | 4 +--- apps/web/src/components/auth/index.tsx | 4 +++- 6 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 apps/web/src/components/auth/GuestLogin.tsx diff --git a/apps/api/src/auth/auth.controller.ts b/apps/api/src/auth/auth.controller.ts index 4b571613..ea51a446 100644 --- a/apps/api/src/auth/auth.controller.ts +++ b/apps/api/src/auth/auth.controller.ts @@ -41,7 +41,7 @@ export class AuthController { this.cookieInsertJWT(response, userId); } - @Post('guest/login') + @Get('guest/login') @ApiOperation({ summary: '게스트 로그인' }) @ApiResponse({ status: 302, description: '홈으로 리다이렉션' }) @UseGuards(ThrottlerGuard) diff --git a/apps/web/src/api/auth.ts b/apps/web/src/api/auth.ts index 482b6352..92ac87cd 100644 --- a/apps/web/src/api/auth.ts +++ b/apps/web/src/api/auth.ts @@ -24,12 +24,12 @@ const signOut = async () => { await axiosInstance.post('/auth/logout'); }; -const oauthLogin = () => { - const handleOauthLogin = (provider: 'google' | 'github') => { - window.location.href = `${ENV.API_URL}/auth/${provider}/login`; - }; +const guestLogin = () => { + window.location.href = `${ENV.API_URL}/auth/guest/login`; +}; - return { handleOauthLogin }; +const oauthLogin = (provider: 'google' | 'github') => { + window.location.href = `${ENV.API_URL}/auth/${provider}/login`; }; -export { logIn, signUp, oauthLogin, signOut }; +export { logIn, signUp, oauthLogin, guestLogin, signOut }; diff --git a/apps/web/src/assets/icons/chevron-right.svg b/apps/web/src/assets/icons/chevron-right.svg index d5745ea0..119e2f41 100644 --- a/apps/web/src/assets/icons/chevron-right.svg +++ b/apps/web/src/assets/icons/chevron-right.svg @@ -1,3 +1,3 @@ - - + + diff --git a/apps/web/src/components/auth/GuestLogin.tsx b/apps/web/src/components/auth/GuestLogin.tsx new file mode 100644 index 00000000..30dc7eaf --- /dev/null +++ b/apps/web/src/components/auth/GuestLogin.tsx @@ -0,0 +1,20 @@ +import { guestLogin } from '@/api/auth'; +import ChevronRight from '@/assets/icons/chevron-right.svg?react'; + +function GuestLogin() { + const handleGuestLogin = () => { + guestLogin(); + }; + + return ( + + 게스트 로그인 + + + ); +} + +export default GuestLogin; diff --git a/apps/web/src/components/auth/OAuthLogin.tsx b/apps/web/src/components/auth/OAuthLogin.tsx index 6fdf1b9f..6e0b4db4 100644 --- a/apps/web/src/components/auth/OAuthLogin.tsx +++ b/apps/web/src/components/auth/OAuthLogin.tsx @@ -28,10 +28,8 @@ interface OAuthLoginProps { } function OAuthLogin({ type }: OAuthLoginProps) { - const { handleOauthLogin } = oauthLogin(); - const onLoginBtnClick = (type: OAuthType) => { - handleOauthLogin(type); + oauthLogin(type); }; return ( diff --git a/apps/web/src/components/auth/index.tsx b/apps/web/src/components/auth/index.tsx index bfd2eba0..501b2def 100644 --- a/apps/web/src/components/auth/index.tsx +++ b/apps/web/src/components/auth/index.tsx @@ -1,6 +1,7 @@ import TicleCharacterBadge from '@/assets/images/ticle-character-badge.png'; import TicleLogo from '@/assets/ticle.svg?react'; +import GuestLogin from './GuestLogin'; import OAuthLogin from './OAuthLogin'; function Auth() { @@ -11,9 +12,10 @@ function Auth() { 작은 지식이 모여 큰 성장이 되는 곳 -
+
+
); From 48de519c36dc64b3782d38aa50d66e7610f47ef7 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 14:56:48 +0900 Subject: [PATCH 06/18] =?UTF-8?q?feat:=20=EA=B3=A0=EC=96=91=EC=9D=B4=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20api=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/auth/auth.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/api/src/auth/auth.service.ts b/apps/api/src/auth/auth.service.ts index 315a586e..30baed98 100644 --- a/apps/api/src/auth/auth.service.ts +++ b/apps/api/src/auth/auth.service.ts @@ -32,13 +32,16 @@ export class AuthService { async createGuestUser() { const randomNum = Math.floor(Math.random() * 10000); + const response = await fetch('https://api.thecatapi.com/v1/images/search'); + const catImageUrl = (await response.json())[0].url; + const guestUser = { username: `guest_${randomNum}`, password: `guest_password_${randomNum}`, email: `guet_email@guest.com`, nickname: `guest_${randomNum}`, introduce: `게스트 사용자입니다. `, - profileImageUrl: `https://cataas.com/cat?${Date.now()}`, + profileImageUrl: catImageUrl, }; const user = await this.userService.findUserByUsername(guestUser.username); if (!user) { From 966b9aee6996a31ea9fec9920ae424ea3e671842 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:01:06 +0900 Subject: [PATCH 07/18] =?UTF-8?q?feat:=20Dialog=20=EB=82=B4=EB=B6=80=20?= =?UTF-8?q?=ED=81=B4=EB=A6=AD=EC=8B=9C=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=84=ED=8C=8C=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/common/Dialog/index.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/common/Dialog/index.tsx b/apps/web/src/components/common/Dialog/index.tsx index f515dab9..c800e8c7 100644 --- a/apps/web/src/components/common/Dialog/index.tsx +++ b/apps/web/src/components/common/Dialog/index.tsx @@ -2,7 +2,7 @@ import { ReactNode } from '@tanstack/react-router'; import { cva } from 'class-variance-authority'; import { AnimatePresence, motion } from 'framer-motion'; -import { useRef } from 'react'; +import { MouseEvent, useRef } from 'react'; import CloseIc from '@/assets/icons/close.svg?react'; import useOutsideClick from '@/hooks/useOutsideClick'; @@ -25,6 +25,10 @@ function DialogRoot({ isOpen, onClose, children, className }: DialogRootProps) { if (!isOpen) return null; + const handleInnerClick = (e: MouseEvent) => { + e.stopPropagation(); + }; + return ( @@ -41,6 +45,7 @@ function DialogRoot({ isOpen, onClose, children, className }: DialogRootProps) { className={cn('relative w-80 rounded-lg bg-white px-6 py-7 shadow-normal', className)} initial={{ opacity: 0, y: 50 }} animate={{ opacity: 1, y: 0 }} + onClick={handleInnerClick} > {children} From 4dcbe1d7fa0467b71192bdd460b9275ec341b9f8 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:03:06 +0900 Subject: [PATCH 08/18] =?UTF-8?q?feat:=20=ED=8B=B0=ED=81=B4=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20Empty=20=EB=B7=B0=20=EB=A0=8C=EB=8D=94?= =?UTF-8?q?=EB=A7=81=20=EC=A1=B0=EA=B1=B4=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/ticle/list/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/src/components/ticle/list/index.tsx b/apps/web/src/components/ticle/list/index.tsx index 52d602bc..4890f7ca 100644 --- a/apps/web/src/components/ticle/list/index.tsx +++ b/apps/web/src/components/ticle/list/index.tsx @@ -80,7 +80,7 @@ function TicleList() {
- ) : data?.pages.length === 0 ? ( + ) : data?.pages[0].ticles.length === 0 ? ( ) : ( data?.pages.map((page) => ( From 4a385147105ef0a2402e3bd49f5f51a360c5e7cd Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:11:07 +0900 Subject: [PATCH 09/18] =?UTF-8?q?feat:=20oauth=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=EC=8B=9C=20=EB=A1=9C=EB=94=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/auth/GuestLogin.tsx | 4 ++- apps/web/src/components/auth/OAuthLogin.tsx | 27 ++++++++++++++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/apps/web/src/components/auth/GuestLogin.tsx b/apps/web/src/components/auth/GuestLogin.tsx index 30dc7eaf..9bf17326 100644 --- a/apps/web/src/components/auth/GuestLogin.tsx +++ b/apps/web/src/components/auth/GuestLogin.tsx @@ -1,3 +1,5 @@ +/* eslint-disable jsx-a11y/click-events-have-key-events */ +/* eslint-disable jsx-a11y/no-static-element-interactions */ import { guestLogin } from '@/api/auth'; import ChevronRight from '@/assets/icons/chevron-right.svg?react'; @@ -8,7 +10,7 @@ function GuestLogin() { return ( 게스트 로그인 diff --git a/apps/web/src/components/auth/OAuthLogin.tsx b/apps/web/src/components/auth/OAuthLogin.tsx index 6e0b4db4..a91c8351 100644 --- a/apps/web/src/components/auth/OAuthLogin.tsx +++ b/apps/web/src/components/auth/OAuthLogin.tsx @@ -1,9 +1,12 @@ import { cva } from 'class-variance-authority'; +import { useState } from 'react'; import { oauthLogin } from '@/api/auth'; import GithubIc from '@/assets/icons/github.svg?react'; import GoogleIc from '@/assets/icons/google.svg?react'; +import Loading from '../common/Loading'; + const oauthButton = cva('flex w-96 justify-center gap-3 rounded-lg py-4 shadow-normal', { variants: { type: { @@ -28,14 +31,32 @@ interface OAuthLoginProps { } function OAuthLogin({ type }: OAuthLoginProps) { + const [loadingOAuthType, setLoadingOAuthType] = useState(null); + const onLoginBtnClick = (type: OAuthType) => { + setLoadingOAuthType(type); oauthLogin(type); }; + const isCurrentLoading = loadingOAuthType === type; + return ( - ); } From c6823904aa7fa3d543d4340b64e7d63a517c6757 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 15:33:49 +0900 Subject: [PATCH 10/18] =?UTF-8?q?feat:=20userInfoDto=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/dto/userInfoDto.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 apps/api/src/user/dto/userInfoDto.ts diff --git a/apps/api/src/user/dto/userInfoDto.ts b/apps/api/src/user/dto/userInfoDto.ts new file mode 100644 index 00000000..0afbe0f2 --- /dev/null +++ b/apps/api/src/user/dto/userInfoDto.ts @@ -0,0 +1,27 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class UserInfoDto { + @ApiProperty({ + example: '1', + description: '유저 아이디', + }) + id: number; + + @ApiProperty({ + example: 'simeunseo', + description: '유저 닉네임', + }) + nickname: string; + + @ApiProperty({ + example: 'https://avatars.githubusercontent.com/u/55528304?v=4', + description: '유저 프로필 사진', + }) + profileImageUrl: string; + + @ApiProperty({ + example: 'github', + description: '유저 소셜 로그인 출처', + }) + provider: string; +} From f28dbc83d1ffcf71d6c1e55d911a312f529eaff0 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:05:01 +0900 Subject: [PATCH 11/18] =?UTF-8?q?feat:=20user=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=A1=B0=ED=9A=8C=20api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/dto/userProfileDto.ts | 27 +++++++++++++++++++++++++ apps/api/src/user/user.controller.ts | 18 ++++++++++++----- apps/api/src/user/user.service.ts | 16 ++++++++++++++- 3 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 apps/api/src/user/dto/userProfileDto.ts diff --git a/apps/api/src/user/dto/userProfileDto.ts b/apps/api/src/user/dto/userProfileDto.ts new file mode 100644 index 00000000..57eb03d4 --- /dev/null +++ b/apps/api/src/user/dto/userProfileDto.ts @@ -0,0 +1,27 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class UserProfileDto { + @ApiProperty({ + example: '1', + description: '유저 아이디', + }) + id: number; + + @ApiProperty({ + example: 'simeunseo', + description: '유저 닉네임', + }) + nickname: string; + + @ApiProperty({ + example: 'https://avatars.githubusercontent.com/u/55528304?v=4', + description: '유저 프로필 사진', + }) + profileImageUrl: string; + + @ApiProperty({ + example: 'github', + description: '유저 소셜 로그인 프로바이더', + }) + provider: string; +} diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/user.controller.ts index 8687a877..3934eedf 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/user.controller.ts @@ -1,12 +1,20 @@ -import { Controller, Get, Patch } from '@nestjs/common'; +import { Controller, Get, Patch, UseGuards } from '@nestjs/common'; + +import { JwtAuthGuard } from '@/auth/jwt/jwt-auth.guard'; +import { GetUserId } from '@/common/decorator/get-userId.decorator'; + +import { UserService } from './user.service'; @Controller('user') export class UserController { - constructor() {} + constructor(private readonly userService: UserService) {} - @Get('profile') - getUserProfile() {} + @Get() + @UseGuards(JwtAuthGuard) + async getUserProfile(@GetUserId() userId: number) { + return await this.userService.findUserProfileByUserId(userId); + } - @Patch('profile') + @Patch('edit/:userId') patchUserProfile() {} } diff --git a/apps/api/src/user/user.service.ts b/apps/api/src/user/user.service.ts index 36e17fc9..fd323b37 100644 --- a/apps/api/src/user/user.service.ts +++ b/apps/api/src/user/user.service.ts @@ -1,4 +1,4 @@ -import { ConflictException, Injectable } from '@nestjs/common'; +import { ConflictException, Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import * as bcrypt from 'bcrypt'; import { Repository } from 'typeorm'; @@ -8,6 +8,7 @@ import { User } from '@/entity/user.entity'; import { CreateLocalUserDto } from './dto/createLocalUser.dto'; import { CreateSocialUserDto } from './dto/createSocialUser.dto'; +import { UserProfileDto } from './dto/userProfileDto'; @Injectable() export class UserService { @@ -64,4 +65,17 @@ export class UserService { } return user; } + + async findUserProfileByUserId(userId: number): Promise { + const user = await this.userRepository.findOne({ + where: { id: userId }, + select: ['id', 'nickname', 'profileImageUrl', 'provider'], + }); + + if (!user) { + throw new NotFoundException(ErrorMessage.USER_NOT_FOUND); + } + + return user; + } } From 5e35234d9898a23b0cc08d7157c3c0cd48fbac69 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:06:16 +0900 Subject: [PATCH 12/18] =?UTF-8?q?feat:=20userInfoDto=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/dto/userInfoDto.ts | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 apps/api/src/user/dto/userInfoDto.ts diff --git a/apps/api/src/user/dto/userInfoDto.ts b/apps/api/src/user/dto/userInfoDto.ts deleted file mode 100644 index 0afbe0f2..00000000 --- a/apps/api/src/user/dto/userInfoDto.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { ApiProperty } from '@nestjs/swagger'; - -export class UserInfoDto { - @ApiProperty({ - example: '1', - description: '유저 아이디', - }) - id: number; - - @ApiProperty({ - example: 'simeunseo', - description: '유저 닉네임', - }) - nickname: string; - - @ApiProperty({ - example: 'https://avatars.githubusercontent.com/u/55528304?v=4', - description: '유저 프로필 사진', - }) - profileImageUrl: string; - - @ApiProperty({ - example: 'github', - description: '유저 소셜 로그인 출처', - }) - provider: string; -} From b368592d0b5169908402c647c6747d7ff61ebfae Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:11:35 +0900 Subject: [PATCH 13/18] =?UTF-8?q?feat:=20=EB=84=A4=EC=9D=B4=EB=B0=8D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/user/dto/{userProfileDto.ts => userProfileOfMeDto.ts} | 2 +- apps/api/src/user/user.controller.ts | 2 +- apps/api/src/user/user.service.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename apps/api/src/user/dto/{userProfileDto.ts => userProfileOfMeDto.ts} (94%) diff --git a/apps/api/src/user/dto/userProfileDto.ts b/apps/api/src/user/dto/userProfileOfMeDto.ts similarity index 94% rename from apps/api/src/user/dto/userProfileDto.ts rename to apps/api/src/user/dto/userProfileOfMeDto.ts index 57eb03d4..320e23f4 100644 --- a/apps/api/src/user/dto/userProfileDto.ts +++ b/apps/api/src/user/dto/userProfileOfMeDto.ts @@ -1,6 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; -export class UserProfileDto { +export class UserProfileOfMeDto { @ApiProperty({ example: '1', description: '유저 아이디', diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/user.controller.ts index 3934eedf..00a6cfa0 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/user.controller.ts @@ -12,7 +12,7 @@ export class UserController { @Get() @UseGuards(JwtAuthGuard) async getUserProfile(@GetUserId() userId: number) { - return await this.userService.findUserProfileByUserId(userId); + return await this.userService.findUserProfileOfMeByUserId(userId); } @Patch('edit/:userId') diff --git a/apps/api/src/user/user.service.ts b/apps/api/src/user/user.service.ts index fd323b37..59763252 100644 --- a/apps/api/src/user/user.service.ts +++ b/apps/api/src/user/user.service.ts @@ -8,7 +8,7 @@ import { User } from '@/entity/user.entity'; import { CreateLocalUserDto } from './dto/createLocalUser.dto'; import { CreateSocialUserDto } from './dto/createSocialUser.dto'; -import { UserProfileDto } from './dto/userProfileDto'; +import { UserProfileOfMeDto } from './dto/userProfileOfMeDto'; @Injectable() export class UserService { @@ -66,7 +66,7 @@ export class UserService { return user; } - async findUserProfileByUserId(userId: number): Promise { + async findUserProfileOfMeByUserId(userId: number): Promise { const user = await this.userRepository.findOne({ where: { id: userId }, select: ['id', 'nickname', 'profileImageUrl', 'provider'], From cfc00a941d9dab1753e6e895456bc941eaedf0d3 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 16:41:48 +0900 Subject: [PATCH 14/18] =?UTF-8?q?feat:=20=EA=B2=BD=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/user.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/user.controller.ts index 00a6cfa0..05a75dd9 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/user.controller.ts @@ -9,7 +9,7 @@ import { UserService } from './user.service'; export class UserController { constructor(private readonly userService: UserService) {} - @Get() + @Get('me') @UseGuards(JwtAuthGuard) async getUserProfile(@GetUserId() userId: number) { return await this.userService.findUserProfileOfMeByUserId(userId); From ed0b9eb8278b0ffc04151f5263ab085f472238ee Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:29:04 +0900 Subject: [PATCH 15/18] =?UTF-8?q?feat:=20user=20id=EB=A1=9C=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EC=A0=95=EB=B3=B4=20=EC=A1=B0=ED=9A=8C=20API=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/dto/userProfileDto.ts | 33 +++++++++++++++++++++++++ apps/api/src/user/user.controller.ts | 8 +++--- apps/api/src/user/user.service.ts | 23 +++++++++++++++++ 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 apps/api/src/user/dto/userProfileDto.ts diff --git a/apps/api/src/user/dto/userProfileDto.ts b/apps/api/src/user/dto/userProfileDto.ts new file mode 100644 index 00000000..75eaaf64 --- /dev/null +++ b/apps/api/src/user/dto/userProfileDto.ts @@ -0,0 +1,33 @@ +import { ApiProperty } from '@nestjs/swagger'; + +export class UserProfileDto { + @ApiProperty({ + example: '1', + description: '유저 아이디', + }) + id: number; + + @ApiProperty({ + example: 'simeunseo', + description: '유저 닉네임', + }) + nickname: string; + + @ApiProperty({ + example: 'https://avatars.githubusercontent.com/u/55528304?v=4', + description: '유저 프로필 사진', + }) + profileImageUrl: string; + + @ApiProperty({ + example: 'github', + description: '유저 소셜 로그인 프로바이더', + }) + provider: string; + + @ApiProperty({ + example: ['개발자를 위한 피그마', '야, 너도 부캠할 수 있어'], + description: '유저가 개설한 티클 목록', + }) + ticles: string[]; +} diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/user.controller.ts index 05a75dd9..da8b3dbe 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/user.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Patch, UseGuards } from '@nestjs/common'; +import { Controller, Get, Param, Patch, UseGuards } from '@nestjs/common'; import { JwtAuthGuard } from '@/auth/jwt/jwt-auth.guard'; import { GetUserId } from '@/common/decorator/get-userId.decorator'; @@ -15,6 +15,8 @@ export class UserController { return await this.userService.findUserProfileOfMeByUserId(userId); } - @Patch('edit/:userId') - patchUserProfile() {} + @Get(':userId') + async patchUserProfile(@Param('userId') userId: number) { + return await this.userService.findUserProfileByUserId(userId); + } } diff --git a/apps/api/src/user/user.service.ts b/apps/api/src/user/user.service.ts index 59763252..5fea9db3 100644 --- a/apps/api/src/user/user.service.ts +++ b/apps/api/src/user/user.service.ts @@ -8,6 +8,7 @@ import { User } from '@/entity/user.entity'; import { CreateLocalUserDto } from './dto/createLocalUser.dto'; import { CreateSocialUserDto } from './dto/createSocialUser.dto'; +import { UserProfileDto } from './dto/userProfileDto'; import { UserProfileOfMeDto } from './dto/userProfileOfMeDto'; @Injectable() @@ -78,4 +79,26 @@ export class UserService { return user; } + + async findUserProfileByUserId(userId: number): Promise { + const user = await this.userRepository + .createQueryBuilder('user') + .leftJoin('user.ticles', 'ticles') + .addSelect('ticles.title') + .where('user.id = :userId', { userId: userId }) + .getOne(); + + if (!user) { + throw new NotFoundException(ErrorMessage.USER_NOT_FOUND); + } + + const ticles = user.ticles || []; + return { + id: user.id, + nickname: user.nickname, + profileImageUrl: user.profileImageUrl, + provider: user.provider, + ticles: ticles.map((ticle) => ticle.title), + }; + } } From 35557528a1a8c99145fd2de308f3ad67790f1bc8 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 17:40:42 +0900 Subject: [PATCH 16/18] =?UTF-8?q?feat:=20=ED=8B=B0=ED=81=B4=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20API=20=EC=9D=91=EB=8B=B5?= =?UTF-8?q?=EC=97=90=20speakerId=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/ticle/dto/ticleDetailDto.ts | 6 ++++++ apps/api/src/ticle/ticle.service.ts | 1 + 2 files changed, 7 insertions(+) diff --git a/apps/api/src/ticle/dto/ticleDetailDto.ts b/apps/api/src/ticle/dto/ticleDetailDto.ts index b81c8ab6..89b51cad 100644 --- a/apps/api/src/ticle/dto/ticleDetailDto.ts +++ b/apps/api/src/ticle/dto/ticleDetailDto.ts @@ -7,6 +7,12 @@ export class TickleDetailResponseDto { }) speakerName: string; + @ApiProperty({ + example: 1, + description: '발표자 유저 아이디', + }) + speakerId: number; + @ApiProperty({ example: 'kim@example.com', description: '발표자 이메일', diff --git a/apps/api/src/ticle/ticle.service.ts b/apps/api/src/ticle/ticle.service.ts index 9d794bd9..82707c68 100644 --- a/apps/api/src/ticle/ticle.service.ts +++ b/apps/api/src/ticle/ticle.service.ts @@ -144,6 +144,7 @@ export class TicleService { return { ...ticleData, + speakerId: ticle.speaker.id, tags: tags.map((tag) => tag.name), speakerImgUrl: speaker.profileImageUrl, }; From d8fb59da2189d72c2325cc10eed501ad9735c0b2 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Tue, 26 Nov 2024 18:11:25 +0900 Subject: [PATCH 17/18] =?UTF-8?q?feat:=20favicon=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/index.html | 8 ++++++-- apps/web/public/favicon.png | Bin 0 -> 75171 bytes 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 apps/web/public/favicon.png diff --git a/apps/web/index.html b/apps/web/index.html index 631fc2e5..1b550546 100644 --- a/apps/web/index.html +++ b/apps/web/index.html @@ -2,7 +2,7 @@ - + - Ticle + + TICLE
diff --git a/apps/web/public/favicon.png b/apps/web/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..cc8c63875efadea660ac583f5f4026b7d20784fb GIT binary patch literal 75171 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%0Axr=$#+_y<}Yf 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 {snEeIQ2sN4YeFm(4*~kn<3f_&Knc$WW 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
I_%$py}wE#dxkn5j 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 JPDHLkV1mIV4`~1Z literal 0 HcmV?d00001 From 7bd2bd6e6edfe0f6c714a0cb5fefd511fe59c641 Mon Sep 17 00:00:00 2001 From: Eunseo Sim <55528304+simeunseo@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:53:56 +0900 Subject: [PATCH 18/18] =?UTF-8?q?feat:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/api/src/user/user.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/user/user.controller.ts b/apps/api/src/user/user.controller.ts index da8b3dbe..299e6f5b 100644 --- a/apps/api/src/user/user.controller.ts +++ b/apps/api/src/user/user.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Param, Patch, UseGuards } from '@nestjs/common'; +import { Controller, Get, Param, UseGuards } from '@nestjs/common'; import { JwtAuthGuard } from '@/auth/jwt/jwt-auth.guard'; import { GetUserId } from '@/common/decorator/get-userId.decorator';