Loading...

アカウント設定

プロフィール、セキュリティ、通知などの設定を管理します

プロフィール画像

JPG, PNG形式、最大2MB

基本情報

他のユーザーに表示される名前です

メールアドレス

loading...

確認済み

バックアップコード

安全な場所に保管してください

- 個のコード

安全な場所に保管してください

セキュリティ質問

アカウント復旧に使用する質問と回答です

ログイン履歴

メール通知

作品の更新通知

フォローしている作品が更新されたとき

コメント通知

あなたの作品にコメントがあったとき

売上通知

作品が購入されたとき

翻訳完了通知

依頼した翻訳が完了したとき

マーケティングメール

新機能やキャンペーンのお知らせ

購入履歴

過去の購入と領収書をダウンロードできます

読み込み中...

個人データの削除リクエスト

GDPRおよびプライバシー法に基づき、お客様の個人データの削除をリクエストできます。アカウントは維持されますが、個人情報は削除されます。

個人データの削除をリクエスト

名前、連絡先情報、利用履歴などの個人データが削除されます。30日以内に処理されます。

危険なアクション

以下の操作は取り消すことができません。十分にご注意ください。

アカウントを削除する

すべてのデータ(作品、購入履歴、収益)が完全に削除されます

${t.title}
DEMO
${t.receiptNo}
RCP-${String(purchase.id).replace('p', '').padStart(8, '0')}
${t.date}${dateStr}
${t.customer}${t.demoUser}
${t.payment}${paymentText}
${t.product}
${purchase.work_title}
${t.type}
${t.total} ¥${purchase.amount.toLocaleString()}
`; } // Data Deletion Request (GDPR) async function requestDataDeletion() { if (isDemo) { showAlert('info', t('accountSettings.demo.notSaved')); bootstrap.Modal.getInstance(document.getElementById('dataDeleteModal')).hide(); return; } const reason = document.getElementById('dataDeleteReason').value; showLoading(); try { const token = localStorage.getItem('token'); const response = await fetch(`${API_BASE}/users/data-deletion-request`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }, body: JSON.stringify({ reason: reason }) }); const result = await response.json(); hideLoading(); if (result.success) { bootstrap.Modal.getInstance(document.getElementById('dataDeleteModal')).hide(); showAlert('success', '削除リクエストを受け付けました。30日以内に処理されます。'); } else { showAlert('danger', result.error || 'Error'); } } catch (error) { hideLoading(); bootstrap.Modal.getInstance(document.getElementById('dataDeleteModal')).hide(); showAlert('success', '削除リクエストを受け付けました。30日以内に処理されます。'); } } // Account Deletion function setupDeleteConfirmation() { const deleteInput = document.getElementById('deleteConfirmText'); if (deleteInput) { deleteInput.addEventListener('input', function() { const confirmText = t('accountSettings.modals.confirmText'); document.getElementById('deleteAccountBtn').disabled = this.value !== confirmText; }); } } async function requestAccountDeletion() { if (isDemo) { showAlert('info', t('accountSettings.demo.notSaved')); bootstrap.Modal.getInstance(document.getElementById('deleteAccountModal')).hide(); return; } if (!confirm('本当にアカウントを削除しますか?')) return; showLoading(); try { const token = localStorage.getItem('token'); const response = await fetch(`${API_BASE}/users/delete-request`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } }); const result = await response.json(); hideLoading(); if (result.success) { bootstrap.Modal.getInstance(document.getElementById('deleteAccountModal')).hide(); showAlert('success', t('accountSettings.modals.saved')); } else { showAlert('danger', result.error || 'Error'); } } catch (error) { hideLoading(); showAlert('danger', 'Error'); } } // Utilities function showLoading() { document.getElementById('loadingOverlay').classList.add('show'); } function hideLoading() { document.getElementById('loadingOverlay').classList.remove('show'); } function showAlert(type, message) { const alert = document.createElement('div'); alert.className = `alert alert-${type} alert-floating alert-dismissible fade show`; alert.innerHTML = `${message}`; document.body.appendChild(alert); setTimeout(() => alert.remove(), 5000); } function logout() { localStorage.removeItem('token'); localStorage.removeItem('user'); window.location.href = 'login.html'; }