AzureAD登录流程到SPA应用程序需要仅在第一次登录时获得管理员批准
创始人
2024-09-29 12:30:37
0

在应用程序中,可以使用 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) {

相关内容

热门资讯

七分钟辅助!丽水茶苑苹果手机辅... 七分钟辅助!丽水茶苑苹果手机辅助,本来是真的有辅助教程(有挂方式)1、实时丽水茶苑苹果手机辅助透视辅...
第一分钟辅助!闲来辅助神器下载... 第一分钟辅助!闲来辅助神器下载2022,好像真的有辅助方法(有挂教程)1、不需要AI权限,帮助你快速...
九分钟辅助!丽水都莱辅助工具试... 九分钟辅助!丽水都莱辅助工具试用,确实存在有辅助神器(有挂方法)九分钟辅助!丽水都莱辅助工具试用,确...
第一分钟辅助!蛮王辅助器,好像... 第一分钟辅助!蛮王辅助器,好像是有辅助方法(有挂教学)1、首先打开蛮王辅助器辅助器下载最新版本,在蛮...
第六分钟辅助!潮汕汇挂,一贯真... 第六分钟辅助!潮汕汇挂,一贯真的是有辅助插件(有挂辅助)1、这是跨平台的潮汕汇挂轻量版有透视,在线的...
六分钟辅助!微信开心泉州辅助器... 六分钟辅助!微信开心泉州辅助器,一直有辅助器(有挂教学)1、下载好微信开心泉州辅助器透视辅助下载之后...
第3分钟辅助!佛手十三道破解版... 第3分钟辅助!佛手十三道破解版安卓,竟然真的有辅助攻略(有挂存在)1、让任何用户在无需佛手十三道破解...
2分钟辅助!sohoo竞技联盟... 2分钟辅助!sohoo竞技联盟辅助,切实真的有辅助脚本(有挂技术)1.sohoo竞技联盟辅助 选牌创...
第8分钟辅助!心悦手游辅助器,... 第8分钟辅助!心悦手游辅助器,原来真的是有辅助技巧(确实有挂);1、每一步都需要思考,不同水平的挑战...
第十分钟辅助!广东雀神祈福真的... 第十分钟辅助!广东雀神祈福真的有用吗,都是是有辅助技巧(有挂方略)1、下载好广东雀神祈福真的有用吗透...