electron-vue-exam-single/electron/service/auth.service.js

43 lines
1.2 KiB
JavaScript

import argon2 from 'argon2';
import { getConfig } from '../db/config.js';
import { ipcMain } from 'electron';
/**
* 管理员登录验证
* @param {string} password - 用户输入的密码
* @returns {Promise<{success: boolean, message: string}>}
*/
async function verifyAdminPassword(password) {
try {
const config = await getConfig('admin_password');
if (!config || !config.value) {
return { success: false, message: '管理员密码未设置' };
}
const isMatch = await argon2.verify(config.value, password);
if (isMatch) {
return { success: true, message: '登录成功' };
} else {
return { success: false, message: '密码错误' };
}
} catch (error) {
console.error('验证管理员密码失败:', error);
return { success: false, message: '验证过程发生错误' };
}
}
/**
* 初始化认证相关的IPC处理程序
*/
function initAuthIpc() {
// 管理员登录验证 - 使用正确的通道名称
ipcMain.handle('admin-login', async (event, credentials) => {
// 从credentials对象中获取密码
return await verifyAdminPassword(credentials.password);
});
}
export {
verifyAdminPassword,
initAuthIpc
};