인스타그램 클론 코딩/#3 GraphQL API

#3.2 requestSecret Resolver

정중식 2019. 12. 20. 00:23

비밀값 요청 기능

 

https://www.randomlists.com/nouns?dup=false&qty=500 라는 사이트에서 형용사 , 명사 500개씩 복사해서 붙여준다.

 

 

1. src 폴더 안에 utils.js , words.js파일 생성

(utils.js은 시크릿 코드 작성파일, words.js은형용사,명사 붙여넣을파일)

 

2. words.js파일안에 다음과 같이 작성

export const adjectives = []; //형용사

export const nouns = []; //명사

// []안에 형용사 , 명사 500개 붙여넣고 alt+ shift + i 를 활용해서 "" , 추가하여 문자열로만들기

3. utils.js파일안에 다음과 같이 작성

import { adjectives, nouns } from "./words";

export const generateSecret = () => {
  const randomNumber = Math.floor(Math.random() * adjectives.length);
  return `${adjectives[randomNumber]} ${nouns[randomNumber]}`;
};

4. requestSecret.graphql

type Mutation {
  requestSecret(email: String!): Boolean!
}

 

5. requestSecret.js

import { generateSecret } from "../../../utils";
import { prisma } from "../../../../generated/prisma-client";

export default {
  Mutation: {
    requestSecret: async (_, args) => {
      const { email } = args;
      const loginSecret = generateSecret();
      try {
        await prisma.updateUser({ data: { loginSecret }, where: { email } });
        return true;
      } catch (error) {
        console.log(error);
        return false;
      }
    }
  }
};

 

- 로컬호스트:4000

// 유저 생성후 ( email를 실제로 존재해야함)
mutation{
  createAccount(username:"정백구" , email:"wndtlr1024@gmail.com"){
    id
  }
}



// email과 일치하는 유저를 찾아 loginSecret를 작성해준다.
mutation{
  requestSecret(email:"wndtlr1024@gmail.com")
}

- 전체적인 폴더 구조

- 정리: 시크릿 코드를 유저에게 전송