개요 — 무엇을 하나
내 프로필(/me)은 지금 로그인한 계정의 정보를 한눈에 보여주고, 본인이 직접 비밀번호를 바꾸는 셀프 서비스 화면입니다. 상단바 오른쪽의 사용자 드롭다운에서 언제든 열 수 있으며, 모든 인증 사용자가 사용할 수 있습니다(별도 등급 제한 없음).
이 화면에서 사용자가 스스로 바꿀 수 있는 것은 비밀번호 하나뿐입니다. 등급(user_level)·역할(role)·팀(team) 은 관리자만 사용자 · 팀 관리에서 지정하며, 여기서는 읽기 전용 배지로 표시됩니다.
비밀번호 검증 및 변경 시 안전하게 표준 해시로 저장됩니다(로그인 · 인증 참고).
언제 쓰나
- 비밀번호를 정기적으로 교체하거나, 유출 우려가 있어 즉시 바꿀 때.
- 내 등급 · 역할 · 팀과 마지막 접속 시각을 확인할 때.
- 관리자에게 문의하기 전에 내 로그인 ID · 이메일 · 연락처가 올바른지 점검할 때.
화면 구성
두 장의 카드로 구성됩니다.
1) 계정 정보 카드(읽기 전용)
상단에 아바타(이름 이니셜 + 이름에서 파생된 고정 색)와 이름 · 로그인 ID, 그 아래 배지가 놓입니다.
| 항목 | 뜻 | 출처 |
|---|---|---|
| 이름 / 로그인 ID | 표시 이름과 @login_id |
users.name · users.login_id |
| 등급 배지 | 데모 / 스탭 / 관리자 (숫자 등급 병기) | users.user_level |
| 역할 배지 | 정보성 역할 라벨(있을 때만) | users.role_id → infr_role |
| 팀 배지 | 소속 팀(있을 때만) | users.team_id → infr_team |
| 이메일 | 계정 이메일 | users.email |
| 연락처 | 전화/휴대폰 | users.hp |
| 마지막 접속 | YYYY-MM-DD HH:MM |
users.last_log |
등급 배지의 색 톤은 등급에 따라 자동으로 정해집니다.
| 등급(값) | 라벨 | 배지 톤 |
|---|---|---|
| 1 | 데모(demo) | muted(회색) |
| 5 | 스탭(staff) | accent(강조) |
| 10 | 관리자(admin) | crit(적색) |
아바타 이니셜과 색은 이름에서 자동 계산됩니다. 한글·CJK 이름은 첫 글자 1자, 그 외는 앞 글자를 조합하며, 색상 hue 는 이름의
crc32 % 360으로 고정됩니다 — 같은 이름은 어디서나 같은 색으로 보입니다.
2) 비밀번호 변경 카드
세 개의 입력란과 [비밀번호 변경] 버튼:
- 현재 비밀번호 — 본인 확인용.
- 새 비밀번호 — 최소 4자.
- 새 비밀번호 확인 — 위와 동일해야 함.
안내 문구대로, 비밀번호를 바꿔도 로그인 세션은 그대로 유지됩니다(다시 로그인할 필요 없음).
사용법
비밀번호 바꾸기
- 상단바 오른쪽 사용자 드롭다운 → 내 프로필을 엽니다(내비게이션).
- 현재 비밀번호를 입력합니다.
- 새 비밀번호(4자 이상)와 확인을 동일하게 입력합니다.
- [비밀번호 변경] 을 누릅니다. 성공하면 입력란이 비워지고 "비밀번호를 변경했습니다." 토스트가 뜹니다.
내부적으로 브라우저는 다음 요청을 보냅니다.
POST /me/password
Content-Type: application/json
X-CSRF-TOKEN: <세션 토큰>
{ "current": "OLD_PASSWORD", "password": "NEW_PASSWORD", "password_confirmation": "NEW_PASSWORD" }
성공 응답은 { "ok": true } 이고, 실패 시 { "ok": false, "errors": { ... } } 로 필드별 오류가 내려옵니다.
서버 검증 규칙
| 규칙 | 조건 | 위반 시 |
|---|---|---|
current |
필수 | 422 |
password |
필수 · 최소 4자 · 최대 120자 · confirmed(확인란 일치) |
422 |
| 현재 비밀번호 대조 | 저장된 해시와 대조(구형·현행 두 형식 모두 지원) | 422 "현재 비밀번호가 일치하지 않습니다." |
새 비밀번호와 확인란 불일치는 브라우저에서 먼저 잡아 "새 비밀번호가 일치하지 않습니다." 를 즉시 표시합니다(서버로 보내기 전).
데이터 소스
- 계정 정보는 레거시
users테이블에서 읽습니다(login_id · name · email · hp · lang · user_level · role_id · team_id · last_log). 세션의infr_user_id로 본인 레코드만 조회합니다. - 표시용 라벨 · 이니셜 · 색은
App\Support\RolePolicy(등급→라벨/톤, 역할 라벨, 아바타 이니셜/hue)가 담당합니다. - 역할 라벨은
infr_role, 팀 이름은infr_team에서 옵니다. - 비밀번호 변경은
users.password를 현행 표준 해시로 갱신하고, 감사 로그infr_audit_log에action = profile.password,target_type = user로 한 건 기록합니다(감사 로그).
권한
/me조회 ·/me/password변경: 로그인만 되어 있으면 누구나(데모 1 · 스탭 5 · 관리자 10 모두). 이 화면은 오직 본인 계정만 대상으로 하므로 별도 등급 게이트가 없습니다.- 세션이 없거나 만료되면 조회는
/login으로 리다이렉트되고, 변경 요청은 401 을 반환합니다. - 등급 · 역할 · 팀은 여기서 바꿀 수 없습니다. 다른 사람의 계정을 만들거나 등급을 조정하려면 관리자(등급 10)가 사용자 · 팀 화면을 사용해야 합니다.
문제해결 · FAQ
Q. "현재 비밀번호가 일치하지 않습니다." 가 나옵니다. 현재 비밀번호를 정확히 입력했는지 확인하고, 로그인에 쓰는 그 비밀번호를 그대로 넣으세요.
Q. 최소 몇 자여야 하나요? 서버는 4자 이상 · 120자 이하만 받습니다. 운영 정책상 더 강한 비밀번호를 권장합니다.
Q. 비밀번호를 바꾸면 다시 로그인해야 하나요? 아니요. 세션은 유지되므로 로그아웃되지 않습니다.
Q. 이메일 · 연락처 · 이름을 바꾸고 싶어요. 이 화면에서는 바꿀 수 없습니다. 관리자에게 요청하면 사용자 · 팀 에서 수정합니다.
Q. 표시 언어를 바꾸려면? 언어는 상단바 언어 스위처에서 전환합니다(언어 · 지역화).
관련 항목
- 로그인 · 인증 — 콘솔 인증 방식과 세션 관리 정책을 참고합니다.
- 등급 · 권한 레벨 — 데모 1 · 스탭 5 · 관리자 10 의 의미.
- 사용자 · 팀 관리 — 관리자가 등급 · 역할 · 팀을 지정하는 곳.
- 내비게이션 — 상단바 사용자 드롭다운에서 이 화면으로 이동.
- 감사 로그 — 비밀번호 변경이
profile.password로 기록됩니다.
