docs: 이메일 설정 가이드 및 작업 이력 업데이트
- SETUP_GUIDE.md: Gmail SMTP 설정 방법, Google Groups 발신자 설정 추가 - CURRENT_WORKS.md: 2025-12-01 비밀번호 자동 생성/이메일 발송 작업 이력 - INDEX.md: 작업 이력 및 최종 업데이트일 갱신
This commit is contained in:
@@ -1508,3 +1508,82 @@ ### Git 커밋:
|
||||
- 17 files changed, 1476 insertions(+), 4 deletions(-)
|
||||
|
||||
---
|
||||
|
||||
## 2025-12-01 (일) - 사용자 비밀번호 자동 생성 및 이메일 발송 기능
|
||||
|
||||
### 주요 작업
|
||||
- 사용자 등록 시 비밀번호 입력 필드 제거 → 임의 비밀번호 자동 생성 후 이메일 발송
|
||||
- 사용자 수정 페이지에 비밀번호 초기화 버튼 추가
|
||||
- 사용자 모달에 비밀번호 초기화 버튼 추가
|
||||
- 사용자 모달 프로필 이미지 없을 때 이름 첫글자 표시 (한글 지원: `mb_strtoupper`)
|
||||
|
||||
### 추가된 파일:
|
||||
|
||||
#### Mail
|
||||
- `app/Mail/UserPasswordMail.php` - 비밀번호 알림 Mailable 클래스
|
||||
- 신규 사용자 / 비밀번호 초기화 구분 (`$isNewUser`)
|
||||
- 제목: `[SAM] 계정이 생성되었습니다` / `[SAM] 비밀번호가 초기화되었습니다`
|
||||
|
||||
- `resources/views/emails/user-password.blade.php` - 이메일 템플릿
|
||||
- 스타일링된 HTML 이메일
|
||||
- 사용자 이름, 이메일, 임시 비밀번호 표시
|
||||
- 첫 로그인 후 비밀번호 변경 안내
|
||||
|
||||
### 수정된 파일:
|
||||
|
||||
#### Service
|
||||
- `app/Services/UserService.php`
|
||||
- `createUser()`: 비밀번호 자동 생성 + 이메일 발송
|
||||
- `resetPassword()`: 비밀번호 초기화 + 이메일 발송 (신규 메서드)
|
||||
- `generateRandomPassword()`: 8자리 임의 비밀번호 생성 (혼동 문자 제외: 0, O, l, 1, I)
|
||||
- `sendPasswordMail()`: 이메일 발송 헬퍼 메서드
|
||||
|
||||
#### Controller
|
||||
- `app/Http/Controllers/Api/Admin/UserController.php`
|
||||
- `resetPassword()`: 비밀번호 초기화 엔드포인트 추가
|
||||
- 슈퍼관리자 보호: 일반 관리자가 슈퍼관리자 비밀번호 초기화 불가
|
||||
|
||||
#### Request
|
||||
- `app/Http/Requests/StoreUserRequest.php`
|
||||
- password 필드 검증 주석 처리 (자동 생성으로 변경)
|
||||
|
||||
#### Routes
|
||||
- `routes/api.php`
|
||||
- `POST /api/admin/users/{id}/reset-password` 라우트 추가
|
||||
|
||||
#### Views
|
||||
- `resources/views/users/create.blade.php`
|
||||
- 비밀번호 입력 필드 제거 → 안내 메시지 표시
|
||||
- "임시 비밀번호가 생성되어 사용자 이메일로 발송됩니다"
|
||||
|
||||
- `resources/views/users/edit.blade.php`
|
||||
- 비밀번호 입력 필드 제거 → 초기화 버튼으로 변경
|
||||
- HTMX 대신 Fetch API 사용 (버튼 상태 관리)
|
||||
|
||||
- `resources/views/users/partials/modal-info.blade.php`
|
||||
- 프로필 이미지 없을 때: `strtoupper(substr())` → `mb_strtoupper(mb_substr())` (한글 지원)
|
||||
- 비밀번호 초기화 버튼 추가 (삭제된 사용자 제외)
|
||||
|
||||
#### JavaScript
|
||||
- `public/js/user-modal.js`
|
||||
- `resetPassword()`: 비밀번호 초기화 메서드 추가
|
||||
- confirm 다이얼로그 후 API 호출
|
||||
|
||||
### API 엔드포인트:
|
||||
- `POST /api/admin/users/{id}/reset-password`
|
||||
- 성공: `{ success: true, message: "비밀번호가 초기화되어 이메일로 발송되었습니다." }`
|
||||
- 실패 (슈퍼관리자 보호): `{ success: false, message: "슈퍼관리자의 비밀번호는 초기화할 수 없습니다." }`
|
||||
|
||||
### 이메일 설정:
|
||||
- Gmail SMTP 사용 (`smtp.gmail.com:587`)
|
||||
- Google Groups 이메일 발신자 지원 (Gmail "다른 주소에서 메일 보내기" 설정 필요)
|
||||
- 설정 가이드: `docs/SETUP_GUIDE.md` 참조
|
||||
|
||||
### 코드 품질:
|
||||
- ✅ Laravel Pint 통과
|
||||
- ✅ PHP 문법 검사 통과
|
||||
|
||||
### Git 커밋:
|
||||
- ✅ `85cbe23` "feat: [users] 사용자 등록 시 비밀번호 자동 생성 및 이메일 발송"
|
||||
|
||||
---
|
||||
|
||||
@@ -275,8 +275,17 @@ ## 📝 작업 이력
|
||||
- 문서: MNG_CRITICAL_RULES.md, TROUBLESHOOTING.md 추가
|
||||
- **Phase 4 완료**: 시스템 관리 메뉴 5개 완성 (60+ 파일, 5,000+ 줄)
|
||||
|
||||
**2025-12-01 (일)**
|
||||
- 사용자 관리 비밀번호 기능 개선
|
||||
- 사용자 생성: 비밀번호 입력 제거 → 자동 생성 후 이메일 발송
|
||||
- 사용자 수정: 비밀번호 변경 → 비밀번호 초기화 버튼으로 대체
|
||||
- 사용자 모달: 비밀번호 초기화 버튼 추가
|
||||
- Gmail SMTP 이메일 설정 (Google Groups 발신자)
|
||||
- 프로필 이미지 없을 때 이름 첫 글자 표시 (한글 지원: mb_* 함수)
|
||||
- 문서: SETUP_GUIDE.md 이메일 설정 섹션 추가
|
||||
|
||||
---
|
||||
|
||||
**최종 업데이트**: 2025-11-24
|
||||
**최종 업데이트**: 2025-12-01
|
||||
**버전**: 2.0
|
||||
**상태**: Phase 4 완료, Phase 5 준비 중
|
||||
@@ -80,8 +80,38 @@ ### Step 2: 환경 변수 설정
|
||||
SESSION_DRIVER=file
|
||||
|
||||
SANCTUM_STATEFUL_DOMAINS=mng.sam.kr
|
||||
|
||||
# 이메일 설정 (Gmail SMTP)
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=smtp.gmail.com
|
||||
MAIL_PORT=587
|
||||
MAIL_USERNAME=your-email@gmail.com
|
||||
MAIL_PASSWORD=your-app-password
|
||||
MAIL_ENCRYPTION=tls
|
||||
MAIL_FROM_ADDRESS=your-email@gmail.com
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
```
|
||||
|
||||
### 이메일 설정 (Gmail SMTP)
|
||||
|
||||
사용자 등록 시 임시 비밀번호 발송, 비밀번호 초기화 등 이메일 기능을 사용하려면 SMTP 설정이 필요합니다.
|
||||
|
||||
**Gmail 앱 비밀번호 발급:**
|
||||
1. Google 계정 → 보안 → 2단계 인증 활성화
|
||||
2. 앱 비밀번호 생성 (https://myaccount.google.com/apppasswords)
|
||||
3. 생성된 16자리 비밀번호를 `MAIL_PASSWORD`에 입력
|
||||
|
||||
**Google Groups 이메일 사용 (발신자 변경):**
|
||||
- Google Groups 이메일(예: `develop@company.com`)을 발신자로 사용하려면:
|
||||
1. Gmail 설정 → 계정 및 가져오기 → 다른 주소에서 메일 보내기
|
||||
2. 그룹 이메일 주소 추가 및 인증
|
||||
3. `.env`의 `MAIL_FROM_ADDRESS`를 그룹 이메일로 설정
|
||||
|
||||
**주의사항:**
|
||||
- `MAIL_USERNAME`은 실제 Gmail 계정 (SMTP 인증용)
|
||||
- `MAIL_FROM_ADDRESS`는 발신자 표시 주소 (Gmail에서 "다른 주소에서 메일 보내기" 설정 필요)
|
||||
- 앱 비밀번호는 일반 비밀번호가 아닌 Google에서 생성한 16자리 코드
|
||||
|
||||
### Step 3: Tailwind + DaisyUI 설정
|
||||
|
||||
**mng/tailwind.config.js**
|
||||
|
||||
Reference in New Issue
Block a user