oak-general-business/lib/utils/passport.js

52 lines
1.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAndCheckPassportByEmail = getAndCheckPassportByEmail;
const assert_1 = require("oak-domain/lib/utils/assert");
const types_1 = require("oak-domain/lib/types");
async function getAndCheckPassportByEmail(context, email) {
const application = context.getApplication();
const { system } = application;
const [applicationPassport] = await context.select('applicationPassport', {
data: {
id: 1,
passportId: 1,
passport: {
id: 1,
config: 1,
type: 1,
},
applicationId: 1,
},
filter: {
applicationId: application?.id,
passport: {
type: 'email',
},
},
}, {
dontCollect: true,
});
(0, assert_1.assert)(applicationPassport?.passport);
const config = applicationPassport.passport.config;
const emailConfig = system?.config.Emails?.find((ele) => ele.account === config.account);
(0, assert_1.assert)(emailConfig);
const emailSuffixes = config.emailSuffixes;
// 检查邮箱后缀是否满足配置
if (emailSuffixes?.length > 0) {
let isValid = false;
for (const suffix of emailSuffixes) {
if (email.endsWith(suffix)) {
isValid = true;
break;
}
}
if (!isValid) {
throw new types_1.OakUserException('error::user.emailSuffixIsInvalid');
}
}
return {
emailConfig,
config
};
}