제출 링크

https://github.com/handy-o/next-begin/commit/f222a9e6f5b6d582622adca61e516648ea6edae1

vercel preview

https://carrot-challange-git-submitchallenge-dys-projects-6e08e76b.vercel.app/

# 12/24~25(화~수) 과제

### npm 설치

1. npm install bcrypt - bcrypt 설치
2. npm install @types/bcrypt - bcrypt types
3. npm install iron-session - iron-session 설치

### 목표

지난 섹션에서 생성한 같은 프로젝트를 활용하여 진행합니다:

- Zod, 서버 액션, 미들웨어, 테일윈드, 프리즈마, iron-session 및 bcrypt를 사용하여 유저 인증을 구현합니다.
- 3가지 페이지를 구현합니다: /create-account, /log-in, /profile.
- /create-account 및 /log-in양식은 Zod를 사용하여 유효성을 검사하고 오류를 표시해야 합니다.
- 유저는 로그인한 후에만 /profile을 볼 수 있어야 합니다.
- /profile 페이지에는 유저 프로필이 표시되어야 합니다.

### 관련 링크

1. https://www.youtube.com/watch?v=67UwxR3ts2E - 해시함수
2. https://www.youtube.com/watch?v=tosLBcAX1vk - 세션vs토큰vs쿠키
3. https://1password.com/password-generator - 비번생성

---

### 강의

- #8.0 ~ #8.13

### 특이사항 기록

#### 1. await cookies()

##### 원인! 비동기 실행에서 Next의 cookies()는 읽을 수 있는 요소로 리턴되어야하는데, await 없이는 Promise가 반환되어서 타입에 맞지 않음

1-1. 에러남 cookies()

const cookie = await getIronSession(cookies(), { ~~ } )


1-2. 에러 안남 await cookies()

const cookie = await getIronSession(await cookies(), { ~~ } )