상세 컨텐츠

본문 제목

nestJS)회원가입 이메일 인증 구현

Aws

by 인생도NIO 2022. 8. 3. 17:35

본문

\

user쪽 controller구현

 

// service쪽 코드

async CreateUsers(
    email: string,
    password: string,
    admin_name: string,
    grade: number,
    phone: number,
  ) {
    try {
      if (!email) {
        throw new BadRequestException(‘이메일값이 없습니다‘);
      }
    
      if (!admin_name) {
        throw new BadRequestException(‘이름이 없습니다‘);
      }
      if (!password) {
        throw new BadRequestException(‘비밀번호가 없습니다‘);
      }
      const user = await this.usersRepository.findOne({ where: { email } });
      console.log(‘유저데이터‘, user);
      if (user) {
        //유저가 존재하면 이미 존재하는 유저라고 에러
        throw new HttpException(‘해당 유저가 이미 존재합니다’, 400);
      }
      //uudi 생성
      const signupVerifyToken = uuid.v4();
      //패스워드 암호화해서 저장
      const hashedPassword = await bcrypt.hash(password, 10);
//랜덤함수를 통해 6자리 수를 문자형태로 생성     

 const authnum = String(Math.floor(Math.random() * 1000000)).padStart(
        6,
        ‘0’,
      );
      await this.usersRepository.save({
        email,
        password: hashedPassword,
        admin_name,
        grade,
        phone,
        uuid: signupVerifyToken,
      });
      console.log(‘11’, email);

      //회원가입시 데이터 저장후 해당 메일로 이메일 발송하게끔 구현
      await this.mailservice.sendMail({
        to: email, // list of receivers
        from: ‘jjyk0676@naver.com’, // sender address
        subject: ‘생각이깊은밤 회원가입 인증번호 코드’, // Subject line
        text: ‘welcome’, // plaintext body
        html: `<b>인증번호를 입력해주세요 ${authnum} </b>`, // HTML body content
      });

      await this.emailsrepository.save({
        auth_email: email,
        auth_num: authnum,
      });
      return { success: true, statuscode: 200, message: ‘회원가입 성공’ };
    } catch (e) {
      console.log(e);
      throw new InternalServerErrorException();
    }
  }

 

송신한 이메일값 확인

 

관련글 더보기