<?php
// strongswan_register.php - 앱 전용 회원가입 API
header('Content-Type: application/json; charset=utf-8');
include_once('./_common.php');
include_once(G5_LIB_PATH.'/register.lib.php');

function reg_out($arr) { echo json_encode($arr, JSON_UNESCAPED_UNICODE); exit; }

$action = isset($_POST['action']) ? trim($_POST['action']) : 'register';

// ── 아이디 중복 확인 ────────────────────────────────────────────────
if ($action === 'check_id') {
    $mb_id = isset($_POST['mb_id']) ? trim($_POST['mb_id']) : '';
    if (!$mb_id) reg_out(['result' => 'error', 'message' => '아이디를 입력해 주세요.']);
    $row = sql_fetch("SELECT mb_id FROM {$g5['member_table']} WHERE mb_id = '" . sql_escape_string($mb_id) . "'");
    if ($row['mb_id']) reg_out(['result' => 'duplicate', 'message' => '이미 사용 중인 아이디입니다.']);
    reg_out(['result' => 'success', 'message' => '사용 가능한 아이디입니다.']);
}

// ── 이메일 중복 확인 ────────────────────────────────────────────────
if ($action === 'check_email') {
    $mb_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
    if (!$mb_email) reg_out(['result' => 'error', 'message' => '이메일을 입력해 주세요.']);
    $mb_email = get_email_address($mb_email);
    if (!$mb_email) reg_out(['result' => 'error', 'message' => '올바른 이메일 형식이 아닙니다.']);
    $row = sql_fetch("SELECT mb_id FROM {$g5['member_table']} WHERE mb_email = '" . sql_escape_string($mb_email) . "'");
    if ($row['mb_id']) reg_out(['result' => 'duplicate', 'message' => '이미 사용 중인 이메일입니다.']);
    reg_out(['result' => 'success', 'message' => '사용 가능한 이메일입니다.']);
}

// ── 회원가입 처리 ───────────────────────────────────────────────────
$mb_id       = isset($_POST['mb_id'])          ? trim($_POST['mb_id'])          : '';
$mb_password = isset($_POST['mb_password'])    ? trim($_POST['mb_password'])    : '';
$mb_pw_re    = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
$mb_name     = isset($_POST['mb_name'])        ? trim($_POST['mb_name'])        : '';
$mb_email    = isset($_POST['mb_email'])       ? trim($_POST['mb_email'])       : '';
$mb_hp       = isset($_POST['mb_hp'])          ? trim($_POST['mb_hp'])          : '';

if (!$mb_id)  reg_out(['result' => 'error', 'message' => '아이디를 입력해 주세요.']);
if (!preg_match('/^[a-zA-Z0-9_]{3,20}$/', $mb_id))
    reg_out(['result' => 'error', 'message' => '아이디는 영문, 숫자, _만 사용하여 3~20자로 입력해 주세요.']);
if (!$mb_password) reg_out(['result' => 'error', 'message' => '비밀번호를 입력해 주세요.']);
if (strlen($mb_password) < 8) reg_out(['result' => 'error', 'message' => '비밀번호는 8자 이상이어야 합니다.']);
if ($mb_password !== $mb_pw_re) reg_out(['result' => 'error', 'message' => '비밀번호가 일치하지 않습니다.']);
if (!$mb_name)  reg_out(['result' => 'error', 'message' => '이름을 입력해 주세요.']);
if (!$mb_email) reg_out(['result' => 'error', 'message' => '이메일을 입력해 주세요.']);
$mb_email = get_email_address($mb_email);
if (!$mb_email) reg_out(['result' => 'error', 'message' => '올바른 이메일 형식이 아닙니다.']);

$row = sql_fetch("SELECT mb_id FROM {$g5['member_table']} WHERE mb_id = '" . sql_escape_string($mb_id) . "'");
if ($row['mb_id']) reg_out(['result' => 'error', 'message' => '이미 사용 중인 아이디입니다.']);

$row = sql_fetch("SELECT mb_id FROM {$g5['member_table']} WHERE mb_email = '" . sql_escape_string($mb_email) . "'");
if ($row['mb_id']) reg_out(['result' => 'error', 'message' => '이미 사용 중인 이메일입니다.']);

$hashed = create_hash($mb_password);

// 닉네임 중복 방지
$mb_nick = $mb_name;
$nrow = sql_fetch("SELECT mb_id FROM {$g5['member_table']} WHERE mb_nick = '" . sql_escape_string($mb_nick) . "'");
if ($nrow['mb_id']) $mb_nick = $mb_name . rand(10, 999);

if ($mb_hp) $mb_hp = preg_replace('/[^0-9\-]/', '', $mb_hp);

$now   = date('Y-m-d H:i:s');
$mb_ip = sql_escape_string($_SERVER['REMOTE_ADDR']);
$s_id  = sql_escape_string($mb_id);
$s_nm  = sql_escape_string($mb_name);
$s_nk  = sql_escape_string($mb_nick);
$s_em  = sql_escape_string($mb_email);
$s_hp  = sql_escape_string($mb_hp);
$s_pw  = sql_escape_string($hashed);

$sql = "INSERT INTO {$g5['member_table']}
    (mb_id, mb_password, mb_name, mb_nick, mb_email, mb_hp,
     mb_level, mb_login_ip, mb_datetime, mb_ip)
VALUES
    ('$s_id', '$s_pw', '$s_nm', '$s_nk', '$s_em', '$s_hp',
     2, '$mb_ip', '$now', '$mb_ip')";

$ok = sql_query($sql, false);
if (!$ok) reg_out(['result' => 'error', 'message' => '회원가입 처리 중 오류가 발생했습니다.']);

reg_out(['result' => 'success', 'message' => '회원가입이 완료되었습니다.']);
