/*
 * Copyright (c) 2021, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 * WSO2 Inc. licenses this file to you under the Apache License,
 * Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

import { useAuthContext } from "@asgardeo/auth-react";
import { useEffect } from "react";
import AuthManager from './auth/AuthManager';
import { useHistory } from "react-router-dom";

function SSO() {

    const { state, signIn, getDecodedIDToken } = useAuthContext();
    const history = useHistory();

    useEffect(() => {
        signIn(window.sso.authorizationRequestParams)
    },[])

    useEffect(() => {
        if (state?.isAuthenticated) {
            const getData = async () => {
                var scope = "default"
                const decodedIDToken = await getDecodedIDToken();
                if (window.sso.adminGroupAttribute && window.sso.allowedAdminGroups) {
                    var group = window.sso.adminGroupAttribute
                    var adminGroups = window.sso.allowedAdminGroups
                    if (decodedIDToken[group]?.some(role => adminGroups.includes(role))) {
                        scope = "admin"
                    }
                }
                var userNameAttribute = window.sso.usernameAttribute
                AuthManager.setUser({username: decodedIDToken[userNameAttribute], scope: scope, sso: true}, true);
                history.push("/");
            };
            getData();
        }

    }, [state.isAuthenticated]);

    return ""
}

export default SSO;
