在应用程序中,可以使用 Microsoft Graph API 来检查用户是否是首次登录。然后,如果是首次登录,则向管理员发送批准请求,以便让用户完成登录。
以下是一个示例代码,该代码使用 Microsoft Graph API 来检查用户是否是首次登录。如果是,它会发送一个邮件给管理员,以便让他们批准该用户的登录请求:
//检查用户是否首次登录
function checkFirstTimeLogin(user) {
return new Promise(async (resolve, reject) => {
try {
const endpoint = `https://graph.microsoft.com/v1.0/users/${user.email}/activity/feed?filter=activityType eq 'signin'`;
const res = await fetch(endpoint, {
headers: {
Authorization: "Bearer " + authProvider.getAccessToken(),
"Content-Type": "application/json"
}
});
const data = await res.json();
if (data && data.value && data.value.length && data.value[0].status === "success" && data.value[0].approximateSignInDateTime) {
const lastSigninTime = new Date(data.value[0].approximateSignInDateTime);
const currentTime = new Date();
const timeDiff = Math.abs(currentTime.getTime() - lastSigninTime.getTime());
const diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
if (diffDays <= 1) {
resolve(true);
}
}
resolve(false);
} catch (e) {
reject(e);
}
})
}
// 发送邮件给管理员以便批准
function sendApprovalEmail(user) {
const email = {
message: {
subject: `Require admin approval for ${user.email} to login`,
toRecipients: [
{
emailAddress: {
address: ""
}
}
],
body: {
content: `
Hi,
Please approve ${user.email} to login to the SPA application.
Thanks,
`,
contentType: "text"
}
},
saveToSentItems: true
};
return new Promise(async (resolve, reject) => {
try {
await graphClient.api("/users//sendMail").post(email);
resolve(true)
} catch (e) {
reject(e);
}
})
}
//登录检查,如果是首次登录则发送批准邮件给管理员
async function loginCheck(user) {