firebase.cloudfunctions) 회원가입시 핸드폰으로 인증번호 주고 받기(1)

김명성·2023년 1월 13일
0

userflow

  1. 프론트에서 핸드폰 번호 입력
  2. https://cloudfunctions.net/createUser로 라우팅되어 cloud functions 실행
  3. 폰 번호 세니타이징
  4. 유저 생성 후 생성된 유저 정보 가져오기
  5. 4자리 코드 생성
  6. twilio를 사용하여 코드 전송
  7. 성공적으로 전송되었을 때 fireStore로 생성된 code와 codeValid 저장
  8. 모두 성공했을 때 success: true return

const twilio = require('./twilio');
const admin = require('firebase-admin');

module.exports = function (req,res) {
  if(!req.body.phone) {
    return res.status(422).send({ error: '핸드폰 번호를 입력해주세요.' });
  }
	// 3. phone number sanitizing
  const phone = String(req.body.phone).replace(/[^\d]/g,'');

	// 4. create user info and get immediately
  admin.auth().createUser({ uid: phone })
  .then(() => admin.auth().getUser(phone))
  .then(() => {
    // 5. create code
    const code = Math.floor(Math.random() * 8999 + 1000);
	
    // 6. send message using twilio
    twilio.messages.create({
      body: '코드는 ' + code + '입니다.',
      to: '+82' + phone.substr(1),
      from: '+19382008436'
    })
    .then(() => {
      // 7.store data
      const ref = admin.firestore().collection('users');
      ref.doc(phone).set({ code: code, codeValid: true },{ merge:true });
      // ref.create({ code : code, codeValid: true})
    })
    .then(() => {
      // 8. return success
      res.send({ success: true })
    })
  })
  .catch((err) => {
    res.status(500).send({ error: err});
  })
}

0개의 댓글