내배캠 86일차

·2023년 2월 7일
0

내일배움캠프

목록 보기
94/142
post-thumbnail

소셜 로그인은 하지 않을 것...
왜냐 내가 비밀번호를 임의로 넣는다고 생각했을 때
비밀번호 변경을 회원이 못함..
비밀번호 변경할 때 원래 비밀번호를 넣어야 변경이 되도록 만들어 놓아서 로그인 페이지에 비밀번호 찾기를 만들어서 이메일을 비롯한 정보를 넣으면 바꾸도록 만들 수는 있지만 굉장히 복잡해지기 때문에 그냥 빼기로 했다. 그냥 기능 구현만 하면 하겠는데 전체적인 로직이 망가지기 때문에 다음번에 따로 소셜 로그인은 해보는 게 좋을 것 같다!

passport/index.js

const passport = require('passport');
const KakaoStrategy = require('passport-kakao').Strategy;
const bcrypt = require('bcrypt');

const { User } = require('../models');

// const dotenv = require('dotenv');
// dotenv.config();
require('dotenv').config();

module.exports = (app) => {
  app.use(passport.initialize()); // passport를 초기화 하기 위해서 passport.initialize 미들웨어 사용
  passport.use(
    new KakaoStrategy(
      {
        clientID: process.env.KAKAO_ID, // 카카오 로그인에서 발급받은 REST API 키
        callbackURL: process.env.KAKAO_URL, // 카카오 로그인 Redirect URI 경로
      },
      // clientID에 카카오 앱 아이디 추가
      // callbackURL: 카카오 로그인 후 카카오가 결과를 전송해줄 URL
      // accessToken, refreshToken : 로그인 성공 후 카카오가 보내준 토큰
      // profile: 카카오가 보내준 유저 정보. profile의 정보를 바탕으로 회원가입
      async (accessToken, refreshToken, profile, done) => {
        try {
          const exUser = await User.findOne({
            where: { email: profile._json.kakao_account.email },
          });

          // 이미 가입된 카카오 프로필이면 성공
          if (exUser) {
            done(null, exUser); // 로그인 인증 완료
          } else {
            // 가입되지 않는 유저면 회원가입 시키고 로그인을 시킨다
            const newUser = await User.create({
              email: profile._json.kakao_account.email,
              nickname: `KAKAO_${profile.id}`,
              id: `KAKAO_${profile.id}`,
              password: await bcrypt.hash('aaaa0000', 12),
              address: '기본 비밀번호는 aaaa0000입니다 변경해주세요',
            });

            done(null, newUser); // 회원가입하고 로그인 인증 완료
          }
        } catch (error) {
          console.error(error);
          done(error);
        }
      }
    )
  );
  passport.serializeUser((user, done) => {
    done(null, user);
  });
  passport.deserializeUser((user, done) => {
    done(null, user);
  });
};

결국했다 소셜로그인 ㅋㅋㅋㅋㅋ

// 가입되지 않는 유저면 회원가입 시키고 로그인을 시킨다
const newUser = await User.create({
  email: profile._json.kakao_account.email,
  nickname: `KAKAO_${profile.id}`,
  id: `KAKAO_${profile.id}`,
  password: await bcrypt.hash('aaaa0000', 12),
  address: '기본 비밀번호는 aaaa0000입니다 변경해주세요',
});

이런식으로 없는 데이터는 어쩔 수 없이 임의로 지정해서 만들어주었다!

profile
개발자 꿈나무

0개의 댓글