인스타그램 클론 코딩/#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")
}
- 전체적인 폴더 구조
- 정리: 시크릿 코드를 유저에게 전송