1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
login: async (_, { username, password }) => {
const user = await client.user.findFirst({ where: { username } });
if (!user) {
return {
ok: false,
error: "User not found.",
};
}
const passwordOk = await bcrypt.compare(password, user.password);
if (!passwordOk) {
return {
ok: false,
error: "Incorrect password.",
};
}
const token = await jwt.sign({ id: user.id }, process.env.SECRET_KEY);
return {
ok: true,
token,
};
},
|
cs |
Check 01 - 유저가 있는지 찾기
- line 2 ~ line 8 : username 으로 user를 찾아본 후 user가 없다면 line 5 ~ line 6 을 return 한다.
Check 02 - 비밀번호가 맞는지 체크
- line 9 ~ line 15 : bcrypt.compare 로 비밀번호를 체크한다.
- bcrypt.compare 의 첫번째 인자 password 는 login 할때 입력한 password 를 의미한다.
- bcrypt.compare 의 두번째 인자 user.password 는 login 할때 입력한 username 을 가지고있는 user 의 password를 의미한다.
- bcrypt.compare 는 두 인자를 비교한 후 맞으면 true, 틀리면 false 를 return 한다.
- 입력한 비밀번호와 user 의 비밀번호가 다를 경우 line 12 ~ line 13 을 return 한다.
Check 03 - jsonwebtoken
https://helloinyong.tistory.com/111
- 설치법 : npm install jsonwebtoken
사용법
1
2
3
|
import jwt from "jsonwebtoken";
const token = await jwt.sign({ id: user.id }, process.env.SECRET_KEY);
|
cs |
'Apollo GraphQL Prisma' 카테고리의 다른 글
Apollo (0) | 2021.06.18 |
---|---|
GraphQL (0) | 2021.06.18 |
인스타그램 클론코딩 BACKEND 만들기 #10 - Create Account (0) | 2021.06.17 |
인스타그램 클론코딩 BACKEND 만들기 #9 - Dotenv (0) | 2021.06.16 |
인스타그램 클론코딩 BACKEND 만들기 #8 - graphql-tools (0) | 2021.06.16 |