on
21.11.06 functional programming
21.11.06 functional programming
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를 선택했다.
>>
from http://jemerald.tistory.com/103 by ccl(A) rewrite - 2021-11-07 23:27:32