캐셔 역할 및 권한
HandyCafe는 역할 기반 접근 제어(RBAC)를 사용하여 각 직원이 시스템 내에서 볼 수 있고 수행할 수 있는 작업을 관리합니다. 모든 캐셔는 역할이 할당되며, 그 역할은 애플리케이션 전반에 걸쳐 그들의 정확한 권한을 결정합니다.
역할 유형
HandyCafe는 세 가지 유형의 역할을 제공합니다:
관리자
관리자 역할은 시스템의 모든 기능에 대한 무제한 접근을 허용합니다. 관리자는 캐셔를 관리하고, 모든 보고서를 보고, 설정을 수정하며, 모든 작업을 수행할 수 있습니다. 이 역할은 카페 소유자와 전체 제어가 필요한 고위 관리자를 위해 설계되었습니다.
시스템에는 항상 최소한 하나의 관리자 계정이 존재합니다. 관리자 역할은 삭제되거나 권한이 축소될 수 없습니다.
기본
기본 역할은 특별한 권한이 할당되지 않습니다. 기본 역할을 가진 캐셔는 로그인하고 기본 작업을 수행할 수 있지만, 회원 관리, 보고서, 콘솔 구성과 같은 제한된 영역에는 접근할 수 없습니다. 기본적인 작업만 처리해야 하는 신입 직원에게 적합한 시작점입니다.
사용자 정의
사용자 정의 역할을 통해 캐셔가 가지는 정확한 권한을 정의할 수 있습니다. 이름을 지정하고, 레벨을 설정한 다음, 여섯 가지 카테고리에서 개별 권한 플래그를 선택하거나 선택 해제합니다. 이를 통해 각 직원이 접근할 수 있는 내용을 세부적으로 제어할 수 있습니다.
권한 카테고리
HandyCafe는 6개의 카테고리로 구성된 22개의 개별 권한 플래그를 제공합니다. 각 플래그는 시스템 내의 특정 작업이나 보기를 제어합니다.
1. 인증 (1 플래그)
| 플래그 | 설명 |
|---|---|
| CLIENT_LOGIN | 캐셔가 클라이언트 PC에 로그인할 수 있도록 허용 (고객을 대신하여 세션 시작) |
이 권한이 없으면 캐셔는 클라이언트 세션을 시작하거나 관리할 수 없습니다.
2. 회원 (6 플래그)
| 플래그 | 설명 |
|---|---|
| VIEW | 회원 목록 및 회원 세부 정보 보기 |
| ADD | 새로운 회원 계정 생성 |
| DELETE | 시스템에서 회원 계정 삭제 |
| UPDATE | 기존 회원 정보 수정 (이름, 잔액 등) |
| DISPLAY_EMAIL | 회원 목록에서 회원 이메일 주소 보기 |
| DISPLAY_GSM | 회원 목록에서 회원 전화번호 보기 |
VIEW만 가진 캐셔는 회원 목록을 볼 수 있지만, 회원을 생성, 수정, 삭제할 수 없습니다. DISPLAY_EMAIL 및 DISPLAY_GSM 플래그는 민감한 연락처 정보가 보이는지를 제어합니다. 이는 모든 직원이 개인 데이터를 볼 수 없도록 하는 개인정보 보호 준수에 유용합니다.
3. 콘솔 (4 플래그)
| 플래그 | 설명 |
|---|---|
| VIEW | 콘솔 페이지 및 콘솔 상태 카드 보기 |
| ADD | 시스템에 새로운 게임 콘솔 등록 |
| DELETE | 시스템에서 콘솔 삭제 |
| UPDATE | 콘솔 세부 정보 수정 (이름, MAC 주소, 가격) |
4. 로그 (4 플래그)
| 플래그 | 설명 |
|---|---|
| VIEW | 로그 페이지 접근 |
| DISPLAY_FULL | 전체 로그 기록 보기 (모든 날짜) |
| DISPLAY_TODAY | 오늘의 로그 항목만 보기 |
| DELETE | 로그 항목 삭제 |
캐셔가 VIEW와 DISPLAY_TODAY만 가지고 DISPLAY_FULL이 없으면, 현재 날짜의 로그 항목만 볼 수 있습니다. 이는 현재 활동을 모니터링해야 하는 교대 감독자에게 유용합니다.
5. 보고서 (3 플래그)
| 플래그 | 설명 |
|---|---|
| PAGE_VIEW | 보고서/현금 보고서 페이지 접근 |
| DISPLAY_FULL | 전체 보고서 기록 보기 (모든 날짜) |
| DISPLAY_TODAY | 오늘의 보고서 데이터만 보기 |
로그와 유사하게, 보고서 권한은 직원이 전체 재무 기록을 볼 수 있는지 아니면 현재 날짜의 수치만 볼 수 있는지를 제어합니다. PAGE_VIEW와 DISPLAY_TODAY를 가진 캐셔는 자신의 교대 거래를 검토할 수 있지만, 과거의 수익 데이터를 볼 수 없습니다.
6. 결제 방법 (4 플래그)
| 플래그 | 설명 |
|---|---|
| MANAGE | 결제 방법 관리 영역 접근 |
| ADD | 새로운 결제 방법 생성 (현금, 카드, 모바일 결제 등) |
| DELETE | 시스템에서 결제 방법 삭제 |
| UPDATE | 기존 결제 방법 세부 정보 수정 |
요약
| 카테고리 | 플래그 | 총계 |
|---|---|---|
| 인증 | CLIENT_LOGIN | 1 |
| 회원 | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| 콘솔 | VIEW, ADD, DELETE, UPDATE | 4 |
| 로그 | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | 4 |
| 보고서 | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| 결제 방법 | MANAGE, ADD, DELETE, UPDATE | 4 |
| 총계 | 22 |
권한 작동 방식
각 권한 카테고리는 개별 권한 플래그 세트를 가지고 있습니다. 각 플래그는 역할 편집기에서 체크박스를 사용하여 독립적으로 활성화하거나 비활성화할 수 있습니다.
UI는 각 권한에 대한 체크박스를 제공합니다. 부여하거나 취소하려는 권한을 간단히 체크하거나 체크 해제하세요. 시스템은 기본 저장을 자동으로 처리하므로 값을 수동으로 계산할 필요가 없습니다.
예를 들어, 회원 카테고리에서는 VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM을 독립적으로 활성화하거나 비활성화할 수 있습니다. VIEW와 UPDATE만 체크된 캐셔는 회원을 보고 수정할 수 있지만, 추가하거나 삭제할 수는 없습니다.
캐셔 계정 생성
- 서버 애플리케이션에서 관리 > 캐셔로 이동합니다.
- 캐셔 추가 버튼을 클릭합니다.
- 캐셔의 사용자 이름을 입력합니다. 이는 로그인 시 사용할 이름입니다.
- 비밀번호를 설정합니다. 강력한 비밀번호를 선택하세요. 이 계정은 재무 데이터와 고객 정보에 접근할 수 있습니다.
- 드롭다운에서 역할을 선택합니다. 관리자, 기본 또는 생성한 사용자 정의 역할 중 하나를 선택할 수 있습니다.
- 저장을 클릭하여 계정을 생성합니다.
새로운 캐셔는 이제 자신의 자격 증명을 사용하여 HandyCafe 서버에 로그인할 수 있습니다.
사용자 정의 역할 생성
- 서버 애플리케이션에서 관리 > 캐셔 역할로 이동합니다.
- 역할 추가 버튼을 클릭합니다.
- 역할 이름을 입력합니다 (예: "교대 감독자", "주니어 캐셔", "야간 직원").
- 역할 레벨을 설정합니다. 높은 레벨은 더 많은 권한을 나타냅니다. 이는 표시 순서 및 조직 계층 구조에 사용됩니다.
- 여섯 가지 카테고리 전체에서 개별 권한을 체크하거나 체크 해제합니다. 각 체크박스는 22개의 권한 설정 중 하나에 해당합니다.
- 저장을 클릭하여 역할을 생성합니다.
생성된 역할은 캐셔 계정에 할당할 수 있습니다.
백엔드 강제 적용
권한은 UI에서 숨겨지는 것만이 아니라 서버 측에서 강제 적용됩니다. 누군가 클라이언트 인터페이스를 우회하거나 프론트엔드 코드를 조작하더라도, 서버는 캐셔의 역할 권한에 대해 모든 요청을 검증한 후 실행합니다.
이는 다음을 의미합니다:
- MEMBER_DELETE 권한이 없는 캐셔는 직접 API 요청을 보내더라도 회원을 삭제할 수 없습니다.
- REPORT_DISPLAY_FULL 권한이 없는 캐셔는 시스템에 접근하는 방법에 관계없이 과거 보고서 데이터를 검색할 수 없습니다.
- 모든 권한 검사는 데이터베이스 작업이 수행되기 전에 Rust 백엔드에서 이루어집니다.
보안: 속도 제한
무차별 대입 공격을 방지하기 위해 HandyCafe는 로그인 속도 제한을 적용합니다:
- 10분 내에 5번의 로그인 실패가 발생하면 자동으로 계정이 잠깁니다.
- 잠금은 15분 동안 지속되며, 이 기간 동안 해당 계정에 대한 로그인 시도가 허용되지 않습니다.
- 잠금 기간이 만료되면 캐셔는 다시 시도할 수 있습니다.
이는 서버 로그인 화면과 클라이언트 PC의 캐셔 로그인 모두에 적용됩니다.
교대 관리
각 캐셔의 활동은 교대 시간 동안 개별적으로 추적됩니다:
- 모든 거래 (세션 결제, 주문 결제 등)는 캐셔의 신원과 함께 기록됩니다.
- 현금 등록기는 각 캐셔의 교대 시작 및 종료 잔액을 별도로 추적합니다.
- 교대 보고서는 캐셔별로 생성할 수 있으며, 교대 동안 처리한 수익을 정확히 보여줍니다.
- 캐셔가 로그아웃하면 교대가 종료되고 요약이 검토를 위해 제공됩니다.
이러한 캐셔별 추적은 책임성을 보장하고 각 교대 종료 시 불일치를 쉽게 식별할 수 있게 합니다.
권한 예시
시나리오 1: 기본 캐셔 세션 시작/종료 및 결제만 필요한 신입 직원. CLIENT_LOGIN만 활성화된 사용자 정의 역할을 할당합니다. 회원, 보고서, 로그, 콘솔을 볼 수 없습니다.
시나리오 2: 교대 감독자 현장을 감독하는 신뢰할 수 있는 직원. CLIENT_LOGIN, MEMBER_VIEW, MEMBER_UPDATE, CONSOLE_VIEW, REPORT_PAGE_VIEW, REPORT_DISPLAY_TODAY 권한이 있는 역할을 할당합니다. 세션을 관리하고, 회원을 보고(삭제는 불가), 콘솔을 보고, 오늘의 수익을 확인할 수 있지만, 전체 과거 보고서나 결제 방법을 수정할 수는 없습니다.
시나리오 3: 야간 관리자 야간 교대를 독립적으로 처리하는 관리자. MEMBER_DELETE, LOG_DELETE, PAYMENT_METHOD_DELETE를 제외한 대부분의 권한을 부여합니다. 교대 중 모든 것을 관리할 수 있지만, 중요한 데이터를 영구적으로 삭제할 수는 없습니다.
시나리오 4: 개인정보 제한 직원 고객 연락처 정보를 볼 수 없어야 하는 캐셔. MEMBER_VIEW는 활성화하지만 DISPLAY_EMAIL과 DISPLAY_GSM은 비활성화된 역할을 생성합니다. 이름으로 회원을 조회할 수 있지만, 개인 연락처 정보는 숨겨집니다.