functional programming template
>>example
//함수 A를 호출
//함수 B를 인자로 받아서 함수 C를 호출
//함수 B를 반환
const A = (B) => (C) => {
return B
}
>>protectedResolver
export const protectedResolver = (ourResolver) => (root, args, context, info) => {
if(!context.loggedInUser){
return {
ok: false,
error: 'Please log in to perform this action',
}
}
return ourResolver(root, args, context, info)
}
>>export const protectedResolver = (ourResolver)
export default {
Mutation: {
editProfile: protectedResolver(resolverFn),
},
}
>>resolverFn
const resolverFn = async (
_,
{firstName, lastName, username, email, password: newPassword, bio, avatar},
{loggedInUser}
) => {
///...
}
>>getUser
토큰 정보를 가지고 와서 jwt가 유효한지 확인하고
유저를 찾아서 있으면: 유저 데이터를 넘겨준다.
없으면: null 데이터를 넘겨준다.
export const getUser = async (token) => {
try{
//토큰 정보가 없다면 null 반환
if(!token){
return null
}
//*jwt.verify(): 토큰 유효성을 검사해준다.
//process.env.SECRET_KEY = bRNw19587FibBD8EZvXsxpd58WxCDN1T
const {id} = await jwt.verify(token, process.env.SECRET_KEY)
//prisma client에서 user table에서 jwt 정보의 id와 비교하여 일치하는 것을 user에 담는다.
const user = await client.user.findUnique({where: {id}})
//user 데이터가 존재하면 user를 반환
if(user){
return user
}else{
return null
}
}catch{
return null
}
}
*jwt.verify(token, secretOrPublicKey, [option, callback])
token 인자에 들어가는 값은 JWT string 값이다.
secretOrPublicKey는 RSA와 ECDSA 알고리즘으로 공개키를 암호화한 string 값이다.
이는 공개키 또는 비밀키를 연동하는 함수가 될 수도 있다.
https://randomkeygen.com/ 에서 codeigniter encryption key를 선택했다.
>>
'Node.js' 카테고리의 다른 글
22.01.18 res.send는 한번만 (0) | 2022.01.18 |
---|---|
21.04.27 project#4 주소에 /api 붙이는 이유 (0) | 2021.04.30 |
21.04.25 project#4 challenge collection 생성 (0) | 2021.04.25 |
21.04.22 mongoDB 연결 및 postman 사용 연습 (0) | 2021.04.25 |
21.02.18 스레드풀, 워커스레드 (0) | 2021.03.06 |