2021년 목표설정

이미지
기본적으로 작년에 달성하지 못한 것들을 하려고 생각중인데..코로나가 언제까지 이어질지, 한국이나 북해도는 갈 수 있을지..자격증은 응시 가능할지..여러가지가 불확실하다. 2021년은 무엇보다 정신적인 부분과 경제적인 부분에 중점을 두고 조금 더 치열하게 지내보고 싶다. 일본나이로도 30대 마지막 해, 이제 불혹에 접어드는 나이..복잡하지만 심플하게. 육체적목표 : 트라이에슬론 스탠다드 도전하기 정신적 : 자격증2개 도전 + 자체개발 서비스 론칭 가족적 : 가정의 평화를 유지하기 경제적 : 외식과 유흥비를 줄이고 부수입을 늘려서 결과적으로 저축하기 사회적 : 목표세미나를 포함해서 민단과 개인인맥의 활성화와 교류를 촉진하기

cakePHP 3.x 에서 패스워드를 랜덤으로 생성해서 메일로 전송하기

솔직히 보안관련 이슈를 전혀...고려하지 않고 막코딩을 해 놔서 두렵긴 하지만 일단 문제없이 돌아는 간다...ㅋㅋ
> /src/Mailer/UserMailer.php
<?php

  namespace App\Mailer;

  use Cake\Mailer\Mailer;
  use Cake\Mailer\Email;


  class UserMailer extends Mailer
  {
      public function __construct(\Cake\Mailer\Email $email = null)
       {
           parent::__construct($email);

           /**
            * loadModel을 가능하게 하는 생성자
            * modelFactory 에TableRegistory::get 을 지정해서 다른 테이블을 참조가능하게 함。
            */
           $this->modelFactory('Table', ['Cake\ORM\TableRegistry', 'get']);

           $this->loadModel('Contract'); // 참조 할 테이블명 지정
       }

      protected function resetPassword($id)
      {

        $contract = $this->Contract->get($id); // 데이터 불러오기

        $loginid = $contract->loginid;
        // password를 랜덤으로 생성함
        $password = sha1(uniqid(rand(), true));
        // DB에 새로운 패스워드를 업데이트 치기 위한 처리
        $contract->password = $password;
        if($this->Contract->save($contract)) // 자동으로 암호화 되어서 비밀번호가 저장된다..편리!!
        {
          // 업데이트 성공하면 아래 정보를 활영해서 메일을 보낸다.
          $this
              ->profile('default')
              ->from(['메일주소' => '발신자이름'])
              ->to('메일주소') // 수신자 메일주소
              ->subject('제목')
              ->viewVars(['loginid' => $loginid,'password' => $password]) // 메일 본문에 표시할 값을 인자로 전달. 여기서는 임시 패스워드 발급 메일을 전송하기에 아이디와 생성된 임시 패스워드를 넣어줌.
              ->template('welcome_mail')
              ->emailFormat('html')
              ->layout('default');
          }
          else {
            return false;
          }

      }

  }


?>


좀 더 예외처리나 에러처리가 고려되어야 할 듯 싶다.
특히 메일이 전송되지 않은 경우에 대한 체크가 필수적으로 필요할 듯 싶은데 아직 방법을 찾지 못했다.
실무에서 쓰려면 여러가지 고려가 되어야 할 듯 싶음...

댓글

이 블로그의 인기 게시물

[메모] PostgreSQL에서 Insert 하는 경우 자동채번 PK가 중복에러 나는 경우

[C# & LINQ] 랜덤으로 데이터를 한 개 추출하는 방법

[react-native] uuid 생성이 에러가 날 때 대처법