2026-06-28 03:37:07 +08:00
|
|
|
import electron from 'electron';
|
|
|
|
|
const { ipcMain } = electron;
|
|
|
|
|
import { readAuth, writeAuth, deleteAuth } from '../auth';
|
2026-08-28 02:08:12 +08:00
|
|
|
import { offlineLogin } from '../core/auth';
|
2026-06-28 03:37:07 +08:00
|
|
|
|
|
|
|
|
export function registerAuthHandlers() {
|
|
|
|
|
ipcMain.handle('auth:get', () => {
|
|
|
|
|
try {
|
|
|
|
|
const auth = readAuth();
|
|
|
|
|
return { success: true, data: auth, error: null };
|
|
|
|
|
} catch (e: unknown) {
|
|
|
|
|
return { success: false, data: null, error: String(e) };
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ipcMain.handle('auth:save', (_event, auth) => {
|
|
|
|
|
try {
|
|
|
|
|
writeAuth(auth);
|
|
|
|
|
return { success: true, data: null, error: null };
|
|
|
|
|
} catch (e: unknown) {
|
|
|
|
|
return { success: false, data: null, error: String(e) };
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ipcMain.handle('auth:delete', () => {
|
|
|
|
|
try {
|
|
|
|
|
deleteAuth();
|
|
|
|
|
return { success: true, data: null, error: null };
|
|
|
|
|
} catch (e: unknown) {
|
|
|
|
|
return { success: false, data: null, error: String(e) };
|
|
|
|
|
}
|
|
|
|
|
});
|
2026-08-28 02:08:12 +08:00
|
|
|
|
|
|
|
|
// 离线账号登录(离线模式不需要微软 OAuth,用户名即可生成 UUID)
|
|
|
|
|
ipcMain.handle('auth:offline-login', async (_event, payload: { username: string }) => {
|
|
|
|
|
try {
|
|
|
|
|
const username = (payload?.username || '').trim();
|
|
|
|
|
if (!username) {
|
|
|
|
|
return { success: false, data: null, error: '用户名不能为空' };
|
|
|
|
|
}
|
|
|
|
|
if (username.length > 16) {
|
|
|
|
|
return { success: false, data: null, error: '用户名长度不能超过 16 个字符' };
|
|
|
|
|
}
|
|
|
|
|
const data = await offlineLogin(username);
|
|
|
|
|
return { success: true, data, error: null };
|
|
|
|
|
} catch (e: unknown) {
|
|
|
|
|
return { success: false, data: null, error: String(e) };
|
|
|
|
|
}
|
|
|
|
|
});
|
2026-06-28 03:37:07 +08:00
|
|
|
}
|