Skip to content

Commit 70f8ee0

Browse files
committed
添加设置主邮箱的代码
1 parent d393430 commit 70f8ee0

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/components/EmailManager.vue

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@
4242
>
4343
验证
4444
</v-btn>
45+
<v-btn
46+
v-if="!email.is_primary&& email.verified"
47+
color="secondary"
48+
size="small"
49+
variant="text"
50+
@click="startSetPrimaryEmail(email)">
51+
设为主邮箱
52+
</v-btn>
4553
<v-btn
4654
v-if="!email.is_primary"
4755
color="error"
@@ -135,7 +143,7 @@
135143
<script setup>
136144
import {ref, onMounted} from 'vue'
137145
import VerifyEmail from '@/components/verifyEmail.vue'
138-
import {getEmails, sendVerificationCode, addEmail, removeEmail, verifyEmail} from '@/services/emailService'
146+
import {getEmails, sendVerificationCode,setPrimaryEmail, addEmail, removeEmail, verifyEmail} from '@/services/emailService'
139147
import { useSudoManager } from '@/composables/useSudoManager';
140148
141149
const sudoManager = useSudoManager();
@@ -222,7 +230,29 @@ const confirmDelete = (email) => {
222230
emailToDelete.value = email
223231
showDeleteDialog.value = true
224232
}
233+
const startSetPrimaryEmail = async (email) => {
234+
if (!email) return;
235+
236+
isLoading.value = true;
237+
try {
238+
const sudoToken = await sudoManager.requireSudo({
239+
title: '设置主邮箱',
240+
subtitle: `您正在尝试将邮箱 ${email.contact_value} 设置为主邮箱。此操作需要验证您的身份。`,
241+
persistent: true
242+
});
225243
244+
const response = await setPrimaryEmail(email.contact_value, sudoToken);
245+
if (response.status === 'success') {
246+
await fetchEmails();
247+
}
248+
} catch (error) {
249+
if (error.type !== 'cancel') {
250+
console.error('设置主邮箱失败:', error);
251+
}
252+
} finally {
253+
isLoading.value = false;
254+
}
255+
}
226256
const startDeleteEmail = async () => {
227257
if (!emailToDelete.value) return;
228258

src/services/emailService.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,13 @@ export const verifyEmail = async (email, token) => {
4040
})
4141
return response.data
4242
}
43+
export const setPrimaryEmail = async (email, sudoToken) => {
44+
const headers = {};
45+
if (sudoToken) {
46+
headers['X-Sudo-Token'] = sudoToken;
47+
}
48+
const response = await axios.post('/account/set-primary-email', {
49+
email
50+
}, { headers });
51+
return response.data
52+
}

0 commit comments

Comments
 (0)