간단 소스 편집기
허용:
css/
,
page/
· 확장자:
html/css/js
페이지 추가
새로고침
파일 목록
css
css/app.js
css/app.js
css/style.css
css/style.css
page
page/account
계정 수동 생성 ❓
page/account/account_create.html
무료 계정 ❓
page/account/free_account_list.html
무료 계정 > 상세 정보 (탭형) ❓
page/account/free_account_view_tab.html
유료 계정 ❓
page/account/paid_account_list.html
유료 계정 상세 정보 ❓
page/account/paid_account_view.html
유료 계정 > 상세 정보 (탭형) ❓
page/account/paid_account_view_tab.html
page/main
대시보드 ❓
page/main/main.html
page/ops
관리자 추가 ❓
page/ops/admin_form.html
관리자 리스트 ❓
page/ops/admin_list.html
관리자 수정 ❓
page/ops/admin_modify.html
API 로그 ❓
page/ops/api_log.html
메일발송 로그 ❓
page/ops/mail_log.html
SMS 발송 로그 ❓
page/ops/sms_log.html
page/payment
page/payment/customer_pay_log.html
page/payment/customer_pay_log.html
page/payment/customer_refund_list.html
page/payment/customer_refund_list.html
도메인 SSL 연장 로그 ❓
page/payment/domain_log.html
결제 리스트 ❓
page/payment/pay_log.html
포인트 사용 로그 ❓
page/payment/point_log.html
환불 등록 ❓
page/payment/refund_form.html
환불 리스트 ❓
page/payment/refund_list.html
세금/현금영수증 ❓
page/payment/tax_doc.html
page/payment/user_pay_log.html
page/payment/user_pay_log.html
page/payment/user_refund_log.html
page/payment/user_refund_log.html
page/product
상품 등록 ❓
page/product/product_form.html
상품 리스트 ❓
page/product/product_list.html
상품 상세 ❓
page/product/product_view.html
page/settle
계정 정산 리스트 ❓
page/settle/month_list.html
page/settle/settle_log.html
page/settle/settle_log.html
page/sidebar_menu.html
page/sidebar_menu.html
page/sidebar_menu.html
page/site
FAQ 등록 ❓
page/site/faq_form.html
FAQ ❓
page/site/faq_list.html
공지사항 등록 ❓
page/site/notice_form.html
공지사항 ❓
page/site/notice_list.html
공지사항 상세 ❓
page/site/notice_view.html
페이지 추가 ❓
page/site/page_form.html
페이지 관리 ❓
page/site/page_list.html
페이지 수정 ❓
page/site/page_modify.html
팝업창 수정 ❓
page/site/popup_form.html
팝업창 ❓
page/site/popup_list.html
page/site/popup_modify.html
page/site/popup_modify.html
1:1 문의 상세 ❓
page/site/qna_form.html
1:1 문의 ❓
page/site/qna_list.html
SEO 관리 ❓
page/site/seo.html
page/stats
page/stats/account.html
page/stats/account.html
page/stats/sales.html
page/stats/sales.html
page/stats/visit.html
page/stats/visit.html
편집
page/ops/admin_form.html
<!-- /page/ops/admin_form.html --> <style> .kv-list{ display:flex; flex-direction:column; gap:.65rem; } .kv-row{ display:flex; align-items:flex-start; gap:12px; } .kv-label{ width:160px; font-weight:600; color:#374151; white-space:nowrap; padding-top:6px; } .kv-sep{ width:1px; background:rgba(0,0,0,.08); margin-top:4px; margin-bottom:4px; } .kv-value{ flex:1; min-width:0; padding-top:0; } .kv-value, .kv-value *{ text-align:left; } .inline-actions{ display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; } .radio-row{ display:flex; flex-wrap:wrap; gap:.75rem 1.2rem; padding-top:4px; } .radio-row .form-check{ margin:0; } .panel{ border:1px solid rgba(0,0,0,.08); border-radius:.75rem; background:#fff; padding:12px; margin-top:10px; } .help-muted{ color:#6b7280; font-size:.85rem; } .perm-grid{ display:flex; flex-wrap:wrap; gap:.55rem .9rem; padding-top:4px; } .perm-grid .form-check{ margin:0; } @media (max-width: 576px){ .kv-label{ width:120px; } } </style> <script> function pa(e, msg){ if(e) e.preventDefault(); alert(msg); return false; } function v(id){ return (document.getElementById(id)?.value || '').trim(); } function submitAdmin(){ var name = v('adm_name'); var email = v('adm_email'); var pw = v('adm_pw'); var pw2 = v('adm_pw2'); if(!name){ return alert('이름을 입력해 주세요.'); } if(!email){ return alert('이메일(ID)을 입력해 주세요.'); } if(!pw){ return alert('비밀번호를 입력해 주세요.'); } if(pw !== pw2){ return alert('비밀번호 확인이 일치하지 않습니다.'); } alert('프로토타입: 관리자 추가 완료(가정)\\n→ 관리자 리스트로 이동합니다.'); location.href = 'app.php?p=ops/admin_list.html'; } function open2faGuide(){ alert('프로토타입: 2FA 등록 안내(QR/앱 연동) 팝업을 띄우는 버튼입니다.'); } </script> <div class="d-flex align-items-center justify-content-between mb-2"> <div> <h1 class="h4 mb-1">관리자 추가 <button type="button" class="btn btn-link btn-sm p-0 ms-2 align-baseline" onclick="openPageHelp(this)" data-title="관리자 추가"> ❓ </button> </h1> <div class="text-muted">백오피스 운영 관리자 계정을 추가합니다.</div> </div> </div> <div class="row g-3"> <div class="col-12"> <div class="card"> <div class="card-header"> <div class="fw-semibold">필수 정보 입력</div> </div> <div class="card-body"> <div class="kv-list"> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 이름</div><div class="kv-sep"></div> <div class="kv-value"> <input id="adm_name" type="text" class="form-control" placeholder="예) 홍길동" maxlength="40" style="max-width:360px;"> </div> </div> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 이메일 (로그인 ID)</div><div class="kv-sep"></div> <div class="kv-value"> <div class="inline-actions"> <input id="adm_email" type="email" class="form-control" placeholder="예) admin@example.com" style="max-width:380px;"> <button type="button" class="btn btn-outline-secondary" onclick="alert('이 버튼은 중복 검사 팝업을 띄웁니다.');">중복검사</button> </div> </div> </div> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 비밀번호</div><div class="kv-sep"></div> <div class="kv-value"> <input id="adm_pw" type="password" class="form-control" placeholder="비밀번호 입력" maxlength="60" style="max-width:260px;"> <div class="help-muted mt-2">* 영문/숫자/특수문자 조합 권장(프로토타입).</div> </div> </div> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 비밀번호 확인</div><div class="kv-sep"></div> <div class="kv-value"> <input id="adm_pw2" type="password" class="form-control" placeholder="비밀번호 확인" maxlength="60" style="max-width:260px;"> </div> </div> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 권한(역할)</div><div class="kv-sep"></div> <div class="kv-value"> <div class="radio-row"> <div class="form-check"> <input class="form-check-input" type="radio" name="adm_role" id="role_super"> <label class="form-check-label" for="role_super">슈퍼관리자</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="adm_role" id="role_normal" checked> <label class="form-check-label" for="role_normal">일반관리자</label> </div> </div> <div class="help-muted mt-2">* 슈퍼관리자는 전체 설정/권한 관리에 접근 가능합니다.</div> <!-- 모듈 접근권한 --> <div class="panel"> <div class="fw-semibold mb-2">권한 범위(모듈 접근)</div> <div class="perm-grid"> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 계정</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 상품</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 결제</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 정산</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 운영</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 통계</label> <label class="form-check"><input class="form-check-input" type="checkbox" checked> 마케팅</label> </div> <div class="help-muted mt-2">* 프로토타입: 실제 권한 제어는 미구현.</div> </div> </div> </div> <div class="kv-row"> <div class="kv-label"><span class="text-danger me-1">*</span> 상태</div><div class="kv-sep"></div> <div class="kv-value"> <div class="radio-row"> <div class="form-check"> <input class="form-check-input" type="radio" name="adm_status" id="st_active" checked> <label class="form-check-label" for="st_active">활성</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="adm_status" id="st_locked"> <label class="form-check-label" for="st_locked">잠금</label> </div> </div> <div class="help-muted mt-2">* 잠금 시 로그인이 제한됩니다.</div> </div> </div> <!-- ===== 보안 설정 ===== --> <div class="kv-row"> <div class="kv-label">보안 설정</div><div class="kv-sep"></div> <div class="kv-value"> <!-- 2FA --> <div class="panel"> <div class="fw-semibold mb-2">2단계 인증(2FA)</div> <div class="radio-row"> <div class="form-check"> <input class="form-check-input" type="radio" name="twofa" id="twofa_on" checked> <label class="form-check-label" for="twofa_on">사용</label> </div> <div class="form-check"> <input class="form-check-input" type="radio" name="twofa" id="twofa_off"> <label class="form-check-label" for="twofa_off">미사용</label> </div> <button type="button" class="btn btn-outline-secondary btn-sm" onclick="open2faGuide()">등록 안내</button> </div> <div class="help-muted mt-2">* 권장: 슈퍼관리자는 2FA 필수.</div> </div> <!-- IP 허용목록 --> <div class="panel"> <div class="fw-semibold mb-2">IP 허용목록(화이트리스트)</div> <textarea class="form-control" rows="3" style="max-width:720px;" placeholder="예) 203.0.113.10 203.0.113.0/24"></textarea> <div class="help-muted mt-2">* 비워두면 제한 없음(프로토타입). 한 줄에 1개 IP/CIDR.</div> </div> <!-- 로그인 실패 잠금 / 세션 만료 / 비밀번호 만료 --> <div class="panel"> <div class="fw-semibold mb-2">정책</div> <div class="row g-2"> <div class="col-12 col-md-4"> <div class="help-muted mb-1">로그인 실패 잠금</div> <select class="form-select" style="max-width:220px;"> <option selected>5회 실패 시 잠금</option> <option>3회 실패 시 잠금</option> <option>10회 실패 시 잠금</option> <option>사용 안함</option> </select> </div> <div class="col-12 col-md-4"> <div class="help-muted mb-1">세션 만료시간</div> <select class="form-select" style="max-width:220px;"> <option>30분</option> <option selected>60분</option> <option>120분</option> <option>240분</option> </select> </div> <div class="col-12 col-md-4"> <div class="help-muted mb-1">비밀번호 만료(주기)</div> <select class="form-select" style="max-width:220px;"> <option selected>90일</option> <option>180일</option> <option>365일</option> <option>미사용</option> </select> </div> </div> <div class="help-muted mt-2">* 프로토타입: 정책 적용 로직은 미구현.</div> </div> </div> </div> <div class="kv-row"> <div class="kv-label">관리자 메모</div><div class="kv-sep"></div> <div class="kv-value"> <textarea class="form-control" rows="3" style="max-width:720px;" placeholder="내부 메모(예: 담당자/변경이력 등)"></textarea> </div> </div> </div> <!-- 하단 버튼: 중앙 정렬 --> <div class="border-top pt-3 mt-3 d-flex justify-content-center gap-2"> <a class="btn btn-outline-secondary" href="app.php?p=page/ops/admin_list.html">리스트</a> <button class="btn btn-primary" type="button" onclick="submitAdmin()">저장</button> </div> </div> </div> </div> </div>
저장
페이지 추가
디렉토리
page (root)
page/account
page/main
page/marketing
page/ops
page/payment
page/product
page/settle
page/site
page/stats
* page/ 하위 1레벨 폴더만 선택
파일명
.html
* 영문 소문자/숫자/_/- 만, 최대 32자
비밀번호