diff --git a/packages/velog-server/src/graphql/resolvers/userResolvers.ts b/packages/velog-server/src/graphql/resolvers/userResolvers.ts index df8a5575..3fc6458e 100644 --- a/packages/velog-server/src/graphql/resolvers/userResolvers.ts +++ b/packages/velog-server/src/graphql/resolvers/userResolvers.ts @@ -79,7 +79,6 @@ const userResolvers: Resolvers = { checkEmailExists: async (_, { input }) => { const userService = container.resolve(UserService) const user = await userService.findByEmail(input.email) - console.log('user', user) return !!user }, }, diff --git a/packages/velog-server/src/services/UserService/index.ts b/packages/velog-server/src/services/UserService/index.ts index 97bff4eb..80773c69 100644 --- a/packages/velog-server/src/services/UserService/index.ts +++ b/packages/velog-server/src/services/UserService/index.ts @@ -242,13 +242,13 @@ export class UserService implements Service { try { if (ENV.dockerEnv === 'development') { console.log(`Login URL: ${ENV.clientV3Host}/email-change?code=${code}`) + } else { + await this.mail.sendMail({ + to: email, + from: 'verify@velog.io', + ...template, + }) } - - await this.mail.sendMail({ - to: email, - from: 'verify@velog.io', - ...template, - }) } catch (error) { console.error('change email error', error) throw error diff --git a/packages/velog-server/src/template/changeEmailTemplate.ts b/packages/velog-server/src/template/changeEmailTemplate.ts index 42272d1b..3a9fe938 100644 --- a/packages/velog-server/src/template/changeEmailTemplate.ts +++ b/packages/velog-server/src/template/changeEmailTemplate.ts @@ -9,9 +9,9 @@ export const changeEmailTemplate: ChangeEmailTemplateArgs = (username, email, co -
- 안녕하세요! - ${username}의 이메일을 ${email}로 ${text}하는 것을 승인하겠습니까? +
+
안녕하세요!
+

${username}의 이메일을 ${email}로 ${text}하는 것을 승인하겠습니까?

${text}하기 @@ -25,6 +25,7 @@ export const changeEmailTemplate: ChangeEmailTemplateArgs = (username, email, co
` + return { subject, body, diff --git a/packages/velog-web/src/app/notifications/page.tsx b/packages/velog-web/src/app/notifications/page.tsx index 2f3efe44..0f537aff 100644 --- a/packages/velog-web/src/app/notifications/page.tsx +++ b/packages/velog-web/src/app/notifications/page.tsx @@ -1,14 +1,14 @@ +import RequireLogin from '@/components/RequireLogin' import NotificationList from '@/features/notification/components/NotificationList' import NotificationSelector from '@/features/notification/components/NotificationSelector' import NotificationTitle from '@/features/notification/components/NotificationTitle' import getCurrentUser from '@/prefetch/getCurrentUser' -import { notFound } from 'next/navigation' export default async function NotificationPage() { const user = await getCurrentUser() if (!user) { - notFound() + return } return ( diff --git a/packages/velog-web/src/app/setting/page.tsx b/packages/velog-web/src/app/setting/page.tsx index 68e006e3..5a8dd953 100644 --- a/packages/velog-web/src/app/setting/page.tsx +++ b/packages/velog-web/src/app/setting/page.tsx @@ -1,3 +1,4 @@ +import RequireLogin from '@/components/RequireLogin' import SettingEmailRow from '@/features/setting/components/SettingEmailRow' import SettingEmailRulesRow from '@/features/setting/components/SettingEmailRulesRow' import SettingSocialInfoRow from '@/features/setting/components/SettingSocialInfoRow' @@ -13,7 +14,7 @@ export default async function SettingPage() { const user = await getCurrentUser() if (!user) { - notFound() + return } const velogConfig = await getVelogConfig({ username: user.username }) diff --git a/packages/velog-web/src/components/Error/ErrorScreenTemplate/ErrorScreenTemplate.module.css b/packages/velog-web/src/components/Error/ErrorScreenTemplate/ErrorScreenTemplate.module.css index 6a791b5e..95178782 100644 --- a/packages/velog-web/src/components/Error/ErrorScreenTemplate/ErrorScreenTemplate.module.css +++ b/packages/velog-web/src/components/Error/ErrorScreenTemplate/ErrorScreenTemplate.module.css @@ -2,7 +2,6 @@ display: flex; width: 100%; height: 100%; - min-height: 100svh; align-items: center; justify-content: center; flex-direction: column; diff --git a/packages/velog-web/src/components/RequireLogin/RequireLogin.module.css b/packages/velog-web/src/components/RequireLogin/RequireLogin.module.css new file mode 100644 index 00000000..70c0aeff --- /dev/null +++ b/packages/velog-web/src/components/RequireLogin/RequireLogin.module.css @@ -0,0 +1,3 @@ +.block { + height: 70svh; +} diff --git a/packages/velog-web/src/components/RequireLogin/RequireLogin.test.tsx b/packages/velog-web/src/components/RequireLogin/RequireLogin.test.tsx new file mode 100644 index 00000000..ec60200d --- /dev/null +++ b/packages/velog-web/src/components/RequireLogin/RequireLogin.test.tsx @@ -0,0 +1,8 @@ +import RequireLogin from './RequireLogin' +import { render } from '@testing-library/react' + +describe('RequireLogin', () => { + it('renders successfully', () => { + render() + }) +}) diff --git a/packages/velog-web/src/components/RequireLogin/RequireLogin.tsx b/packages/velog-web/src/components/RequireLogin/RequireLogin.tsx new file mode 100644 index 00000000..01e3a5fe --- /dev/null +++ b/packages/velog-web/src/components/RequireLogin/RequireLogin.tsx @@ -0,0 +1,50 @@ +'use client' + +import styles from './RequireLogin.module.css' +import { bindClassNames } from '@/lib/styles/bindClassNames' +import ErrorScreenTemplate from '@/components/Error/ErrorScreenTemplate' +import { UndrawLogin } from '@/assets/vectors/components' +import { useModal } from '@/state/modal' +import { useEffect } from 'react' +import { useAuth } from '@/state/auth' +import { usePathname, useRouter } from 'next/navigation' + +const cx = bindClassNames(styles) + +type Props = { + redirectTo?: string +} + +function RequireLogin({ redirectTo }: Props) { + const pathname = usePathname() + const router = useRouter() + const { actions } = useModal() + + const redirectToPath = redirectTo || pathname + + const { + value: { currentUser }, + } = useAuth() + + const onButtonClick = () => { + actions.showModal('login', redirectToPath) + } + + useEffect(() => { + if (!currentUser) return + router.push(redirectToPath) + }, [router, currentUser, redirectToPath]) + + return ( +
+ +
+ ) +} + +export default RequireLogin diff --git a/packages/velog-web/src/components/RequireLogin/index.tsx b/packages/velog-web/src/components/RequireLogin/index.tsx new file mode 100644 index 00000000..0dcf0412 --- /dev/null +++ b/packages/velog-web/src/components/RequireLogin/index.tsx @@ -0,0 +1 @@ +export { default } from './RequireLogin'