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