<!DOCTYPE html>
<html lang="zh">
<head>
    <title>统一身份认证</title>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="renderer" content="webkit">
    <!--<link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"> -->
    <link rel="stylesheet" href="/css/index.css">
    <!--[if lt IE 9]>
    <script src="/js/respond.min.js"></script>
    <![endif]-->
    <script src="/js/jquery-3.7.1.min.js"></script>
    <!--<script th:src="@{/js/bootstrap.min.js}"></script>-->
    <script src="/js/sm2.min.js"></script>
</head>
<body>
<iframe id="loginIframe" style="display: none;"></iframe>
<div id="default" class="container">
    <div style="font-size: large;display: flex;justify-content: center;">页面加载中...</div>
    <div  style="visibility: hidden" class="border col-lg-4 col-lg-offset-4 col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3">
        <div class="system">统一身份认证</div>
        
        <form method="post" id="loginForm">
            <div class="form-group">
                <label>
                    <span>用户名</span>
                    <input type="text" class="form-control" name="username">
                </label>
            </div>
            <div class="form-group">
                <label>
                    <span>密码</span>
                    <input type="password" class="form-control" name="password" autocomplete="off">
                </label>
            </div>
            <div class="form-group" style="display: none;" id="captchaParent">
                <label>
                    <span style="display: none;"
                          id="captchaLabel">验证码</span>
                    <div id="captchaDiv"></div>
                </label>
            </div>
            <div class="form-group">
                <input class="btn btn-login" type="submit" name="submit" value="登录">
            </div>

            <div style="display: none;">
                
                <input name="loginType"
                       value="username_password"/>
                <input name="flowId" value=""/>
                <input name="captcha" value=""/>
                <input name="delegator" value=""/>
                <input name="tokenCode" value=""/>
                <input name="continue" value=""/>
                <input name="asserts" value=""/>
                <input name="pageFrom" value=""/>
            </div>
        </form>
        <button onclick="doSendSms()">测试短信</button>
        <div class="hint">此页面为兼容性视图<br/>请使用Chrome等现代浏览器以获取最佳体验</div>
    </div>
</div>
<div id="language" style="display: none">zh_cn</div>
<script type="text/javascript">
    var lastSmsCode=''; // 最近接收的短信验证码
    function getParameterByName(name, url) {
        if (!url) url = window.location.href;
        name = name.replace(/[\[\]]/g, '\\$&');
        let regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
            results = regex.exec(url);
        if (!results) return null;
        if (!results[2]) return '';
        return decodeURIComponent(results[2].replace(/\+/g, ' '));
    }

    function getPageConfig() {
        return config;
    }

    function doLogin(params) {
        if (firstLogin) firstLogin = false;
        else return;
        if (config.sm2.enabled) {
            if (params.password) {
                params.password = sm2.encrypt(params.password, config.sm2.publicKey);
            }
        }
        $("#loginForm input[name='username']").val(params.username);
        $("#loginForm input[name='password']").val(params.password);
        $("#loginForm input[name='loginType']").val(params.type);
        if (params.captcha) {
            $("#loginForm input[name='captcha']").val(params.captcha);
        }
        if (params.delegator) {
            $("#loginForm input[name='delegator']").val(params.delegator);
        }
        if (params.tokenCode) {
            $("#loginForm input[name='tokenCode']").val(params.tokenCode);
        }
        if (params.rememberMe) {
            $("#loginForm input[name='rememberMe']").attr('checked', params.rememberMe);
        }
        if (params.continue) {
            $("#loginForm input[name='continue']").val(params.continue);
        }
        if (params.asserts) {
            $("#loginForm input[name='asserts']").val(params.asserts);
        }
        if (params.pageName) {
            $("#loginForm input[name='pageFrom']").val(params.pageName);
        }
        $("#loginForm input[name='submit']").click();
    }

    function doSendSms(params) {
        lastSmsCode='';
        let flowId = $("#loginForm input[name='flowId']").val();
        let data = {
            flowId: flowId,
            username: params.username
        }
        if (params.captcha){
            data.captcha = params.captcha;
        }
        $.ajax({
            url: config.contextPath + "/api/sms/send",
            type: "POST",
            data: data,
            success: function (res) {
                lastSmsCode=res.data;
                console.log(JSON.stringify(res))
                if (params.successCallBack) {
                    params.successCallBack(res)
                }
            },
            error: function (error) {
                console.log(error)
                if (params.errorCallBack) {
                    params.errorCallBack(error)
                }
            }
        })
    }

    function doSelectIdentity() {

    }

    function setLanguage(locale) {
        let fullURL = window.location.href;
        if (fullURL.indexOf('locale=zh_cn') !== -1) {
            window.open(fullURL.replace('locale=zh_cn', 'locale=' + locale), '_self');
            return;
        }
        if (fullURL.indexOf('locale=en') !== -1) {
            window.open(fullURL.replace('locale=en', 'locale=' + locale), '_self');
            return;
        }
        let baseURL = fullURL.split('?')[0];
        let params = window.location.search.substring(1);
        if (params.length > 0) params = '&' + params;
        window.open(baseURL + '?locale=' + locale + params, '_self');
    }

    function ie8() {
        return navigator.appName === "Microsoft Internet Explorer"
            && parseInt(navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE", "")) <= 8;
    }

    var firstLogin = true;
    var config = {};
    config.flowId = $("#loginForm input[name='flowId']").val()

    // 当前语言
    config.locale = $("#language").text();
    // 登录目标系统
    var targetServiceName = $("#targetSystem").text() || null;
    if (targetServiceName) {
        config.service = {
            name: targetServiceName,
            href: getParameterByName('service') || getParameterByName('target') || getParameterByName('TARGET')
        };
    }

    var error = {"code":50001,"msg":"\u60A8\u8BF7\u6C42\u7684\u9875\u9762\u672A\u627E\u5230\uFF0C\u8BF7\u68C0\u67E5\u6D4F\u89C8\u5668\u5730\u5740\u3002","data":"No static resource authserver\/custom\/css\/style.css.","timestamp":1765808917940,"resType":"error","success":false,"error":true};
    if (error) {
        config.error = error
    }

    var serverContextPath = null;
    if (serverContextPath) {
        if (serverContextPath.endsWith('/')) {
            serverContextPath = serverContextPath.substring(0, serverContextPath.length - 1);
        }
    }
    config.contextPath = serverContextPath


    var delegatorList = null;
    if (delegatorList) {
        config.delegatorList = delegatorList;
    }

    var pageName = "error";
    if (pageName) {
        config.pageName = pageName;
    }

    var mfaType = null;
    if (mfaType) {
        config.mfaType = mfaType;
    }

    let ssoConfig = null;
    if (ssoConfig) {
        config = {...config, ...ssoConfig}
        ssoConfig = null;
    }
    let noAutoRedirect = null;
    if (noAutoRedirect) {
        config.noAutoRedirect = noAutoRedirect;
    }
    let loginUserName = null;
    if (loginUserName) {
        config.loginUserName = loginUserName;
    } else {
        config.loginUserName = '';
    }

    window.onload  = function () {
        // 页面显示逻辑 没有用到暂时注释
        // if (window.useDefault || ie8() || getParameterByName('dev')) {
        //     document.getElementById('default').style.display = 'block';
        //     var loginIframe = document.getElementById('loginIframe');
        //     loginIframe.parentNode.removeChild(loginIframe);
        // } else {
        document.getElementById('loginIframe').src = '/page/common.html';
        document.getElementById('loginIframe').style.display = 'block';
        // }
    };
    window.addEventListener('message', function(event) {
        if (event.origin === window.location.origin) {
            if(event.data.type === "school_qr_login") {
                window.location.href = event.data.url;
            }
        }
    });
</script>
<!--<script type="text/javascript" th:src="@{init.js(t=${new java.util.Date().getTime()})}"></script>-->
</body>
</html>