반응형

전체 글 35

[Next.js / Supabase] 이메일 로그인/회원가입 기능 구현

Supabase AuthSupabase Auth를 사용하면 인증 및 권한 관리를 간편하게 구현이 가능하다. 지원하는 인증 방식에는 이메일 인증, Magic Link를 통한 비밀번호 없는 로그인, 전화번호를 통한 로그인, SNS로그인, 기업용 SSO등 다양한 방법으로 사용자 인증을 지원한다. 1. Confirmation URL 방식- Web Client 에서 Supabase로 회원가입 요청- Supabase에서 회원가입 처리 및 인증 링크가 담긴 이메일 전송Authentication -> Email Templates 에서 정의된 템플릿을 사용하여 이메일을 보낼 수 있다. 1. 유저는 이메일로 전송된 인증 링크를 클릭하여 로그인 할 수 있다. - 인증링크 = https://***.supabase.co/aut..

Today I Learn 2024.10.21

window 환경에서 프로젝트마다 node 버전 다르게 설정하기

진행중인 프로젝트의 node 버전을 맞춰놨었는데 새 프로젝트에서는 다른 버전의 node가 필요한 상황이었다.구글링을 해봤는데 대부분 mac환경에서 node버전 자동화 하는 법을 올려두고있어 기록용으로 남겨둔다.나는 bash를 사용하고 있다.1. 사용하고자 하는 각 프로젝트의 node version을 설치한다.https://nodejs.org/en나는 필요한 버전이 18.14.2 와 20.17.0 버전이 필요해서 node 설치 후 npm i 해줬다. 2. 각 프로젝트의 루트 디렉토리에 .nvmrc 파일을 만든다// 1번 프로젝트의 .nvmrc18.14.2// 2번 프로젝트의 .nvmrc20.17.0nvmrc파일 안에 사용하려는 버전을 입력해야 한다. 3. bashrc 설정나는 bash를 사용하고 있기 때..

카테고리 없음 2024.09.04

[Next.js] next js에서 google analytics 사용하기 (React-gtm-module)

next js 에서 google analytics tagmanager를 사용하려면 두가지 단계를 거쳐야 한다. 1. 에 GTM 스크립트를 배치한다 여기서 여러가지 방법이 있지만 가장 간단한 react-gtm-module 라이브러리를 이용하려고 한다. 2. google tag manager에서 history 변경 트리거를 생성한다. 사용방법 1. React-gtm-module 설치 yarn add react-gtm-module 타입스크립트 사용중이라면 yarn add @types/react-gtm-module 2. gtm추적 코드 삽입 gtmId를 env파일에 보관한다(경로는 임의등록) // .env.production PUBLIC_ENV=production GA_TRACKING_ID=GTM-xxx 이후 ..

Today I Learn/React 2023.10.05

[Next.js] 뒤로가기 시 스크롤 위치 유지하기(scrollRestoration)

next.js에서 스크롤 위치 복원 구현하는 방법 페이지 이동 후 뒤로가기 버튼을 선택하면 페이지 상단으로 스크롤이 이동되지 않고 스크롤이 유지되기를 원했다. 1. next.js는 scrollRestoration을 기본적으로 지원한다. next.config.js 파일에서 scrollRestoration을 true로 설정해주기만 하면 된다. 하지만 이 방법은 실험적인 방법이라고 하며 내 프로젝트에서는 동작하지 않았다. const nextConfig = { experimental: { scrollRestoration: true, }, }; module.exports = nextConfig; 2. 브라우저의 세션스토리지를 사용하는 방법 import { useEffect } from 'react'; import..

Today I Learn/React 2023.03.31

[React/TypeScript]특정 영역 프린트 기능 구현

react에서 인쇄기능을 사용할 때 reat-to-print라는 라이브러리를 사용 할 수도 있지만 생각보다 간단한 기능이라 window.print() 함수를 사용하여 만들었다. import useRef from 'react'; import ReactDOM from 'react-dom'; const printRef = useRef(null); const onClickPrint = () => { if (ReactDOM && ReactDOM.findDOMNode(printRef.current)) { const printContent = ReactDOM.findDOMNode(printRef.current) as HTMLElement; const printContents = printContent.innerHTM..

Today I Learn/React 2023.03.10

[Angular] Material Ui Dialog 사용 시 cdk-global-scrollblock 제거하기

문제 Material Ui의 Dialog 모달창 클릭 시 뒤의 내용이 사라지는 현상이 있었다. 원인 cdk-global-scrollblock 클래스가 html엘리먼트에 삽입되어 position: fixed 가 되기 때문임을 알게되었다. 해결방법 Dialog에 사용할 scrollStrategy 추가 const dialogRef = this.dialog.open(DialogComponent, { width: '250px', data: data, scrollStrategy: new NoopScrollStrategy() }); scrollStrategy를 NoopScrollstrategy로 설정해주기 import { NoopScrollStrategy } from '@angular/cdk/overlay'; 참고 ..

Today I Learn/Error 2022.11.22

[JavaScript] 조건에 따라 날짜 형식 다르게 주기

게시글 작성 24시간마다 날짜 형식 다르게 주기 게시판을 만들던 중 작성일을 넣어주어야 하는데 오늘 올린 게시글은 HH:mm 형식으로, 하루가 지난 게시글은 YYYY-MM-DD 형식으로 만들어져야 했다. 그런데 받은 코드를 살펴보니 24시간 기준으로 하루가 지난 게시글로 판단되어 전날 17:34에 올린 게시글이 오늘 오전에 봤을 때, 오늘 올린 게시글처럼 보이는 현상이 있었다 수정 전 코드 get createdAtFmt() { const timeValue = new Date(this.createdTs); const betweenTime = Math.floor( (new Date().getTime() - timeValue.getTime()) / 1000 / 60 ); const betweenTimeHour..

반응형