[인스타클론코딩] [Server].7 - 로그인 인증 파트
by 한만섭
- TOC
정리할 내용
로그인을 하는 방법으로 비밀번호 대신 이메일로 key를 보내주면 그것을 치고 들어오는 방식으로 작성을 할 것입니다. 오늘은 랜덤한 단어를 생성해서 User 속성인 loginSecret에 넣어주기 까지 진행해보려고 합니다.
랜덤 단어 만들기
랜덤 단어 사이트에서 형용사와 명사를 만들 수 있습니다.
.js
파일을 만들때 주의할 점은 api
디렉토리 안에 만들면 안된다는 것입니다. 왜냐하면 server.js
에서 resolver를 api에 있는 js를 읽는 방식을
사용했기 때문입니다. 이것을 주의해서 파일을 만들어줍니다.
-
스크롤된 부분 모든줄 커서 :
-
utils.js
형용사와 명사를 import해주고 난수를 발생시켜주는 함수를 export 해줍니다. 이 함수는
requestSecret.js
resolver에서 사용할 예정입니다.import {Adjectives,Nouns} from './words'; export const generateSecret = () =>{ const randomNumber = Math.floor(Math.random()*Adjectives.length); return `${Adjectives[randomNumber]} ${Nouns[randomNumber]}`; }
-
requestSecret.js
generateSecret 함수와 prisma를 호출해줍니다. prisma를 불러오는 이유는 prisma의 model을 사용하기 위해서는 client로 배포가 되어있어야하고 배포한 client를 graphql에서 사용하는 것이기 때문입니다.
export default를 하는 이유 :
server.js
에서 resolvers와 type을 path.join 해서 fileLoader하기 때문에 export 가 필요합니다.
(_,args) 의 이유 : 첫번째 인자는 사용하지 않고 제가 필요한 arguments는 두번째 인자로 들어오기 때문에 args로 받고 email변수로 해 넣어서 사용합니다.prisma 문법은 아직 익숙하지 않아서 자주 사용해보는 방법밖에 없을 것 같습니다.
import {generateSecret} from "../../../utils"; import { prisma } from '../../../../generated/prisma-client'; export default { Mutation : { requestSecret : async(_,args) =>{ const {email} = args; const loginSecret = generateSecret(); console.log(loginSecret); try{ await prisma.updateUser({data : {loginSecret},where : {email}}); return true; }catch{ return false; } } } }
주의할 점
- resolvers를 merge하기로 한 경로에는 다른
.js
파일을 두어서는 안됩니다. - prisma를 수정하였을 경우
npm run-script prisma
(제 명령어 기준)해줘야 합니다. (graphql에서 prisma-client를 사용하기위해 )
Subscribe via RSS