| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- import request from '@/utils/request';
- import {
- getSSOConfig,
- setPlatformToken,
- setSysMenuConfigID,
- refreshTitle
- } from '@/utils/auth';
- import { defaults, omit } from 'lodash-es';
- const baseURL = process.env.VUE_APP_BASE_API;
- const APP_PORT = process.env.port || process.env.npm_config_port || 8008; // 端口
- const PTS_PORT = 7000;
- const locationUrl = location.protocol + '//' + location.hostname;
- let isUpdatedSSOConfig = false;
- export let ssoConfig = {
- appId: process.env.VUE_APP_SYS_ID,
- ssoEnabled: process.env.VUE_APP_SSO_ENABLED === 'TRUE',
- verifyTokenUrl: '/sso/verifyToken',
- ssoLoginUrl: `${locationUrl}:${PTS_PORT}/portal/login?redirect=`,
- appRedirectUrl: `${locationUrl}:${APP_PORT}/fms/index`,
- appLocalUrl: `/fms/index`,
- isRedirect: false
- };
- const updateSSOConfig = () => {
- if (isUpdatedSSOConfig) {
- return;
- }
- try {
- let configInfo = getSSOConfig();
- if (configInfo) {
- configInfo = JSON.parse(configInfo);
- }
- const { ssoEnabled, appName, ssoLoginUrl } = configInfo || {};
- ssoConfig = defaults(
- {
- appId: appName,
- ssoEnabled:
- process.env.NODE_ENV === 'development'
- ? undefined
- : ssoEnabled === '1',
- ssoLoginUrl:
- process.env.NODE_ENV === 'development' ? undefined : ssoLoginUrl
- },
- ssoConfig
- );
- //alert("开关=" + ssoConfig.ssoEnabled);
- isUpdatedSSOConfig = true;
- } catch (error) {
- alert('解析ssoConfig错误=' + error);
- console.error(error, '解析configinfo 出错');
- }
- };
- const parseTarget = (target) => {
- if (/(http|https):\/\/([\w.]+\/?)\S*/.test(target)) {
- return target;
- }
- return target;
- };
- const goTarget = function (href) {
- window.open(href, '_blank');
- };
- const goUrl = function (href) {
- window.location.href = href;
- };
- // 获取portal配置
- export async function getSsoInfo() {
- let res = await axios({ method: 'get', url: baseURL + '/portal/cfg/cfg' });
- let cfg =
- res.status === 200 &&
- res.data &&
- res.data.code === '000000' &&
- res.data.data;
- return cfg;
- }
- const getQueryData = () => {
- let oSearchItem = {};
- let searchString = window.location.search;
- let reg = /[?&][^?&]+=[^?&]+/g;
- let arr = searchString.match(reg);
- if (arr) {
- arr.forEach((item) => {
- let tempArr = item.substring(1).split('=');
- let key = decodeURIComponent(tempArr[0]);
- let value = decodeURIComponent(tempArr[1]);
- oSearchItem[key] = value;
- });
- }
- return oSearchItem;
- };
- export function authSSoToken(ssoToken) {
- //alert( "请求ssoToken=" + ssoToken );
- return request({
- url: ssoConfig.verifyTokenUrl,
- method: 'post',
- data: {
- ptsToken: ssoToken,
- sysName: ssoConfig.appId,
- sysId: ssoConfig.appId
- }
- });
- }
- export function resdirectApp(redirect, ssoToken) {
- if (ssoConfig.appId === 'PTS') {
- if (/(http|https):\/\/([\w.]+\/?)\S*/.test(redirect)) {
- return redirect + '?token=' + ssoToken;
- }
- return redirect + '';
- } else {
- return parseTarget('/');
- }
- }
- export function getResdirectAppUrl(ssoToken) {
- updateSSOConfig();
- if (!ssoToken) {
- const currentUrl = location.href;
- const isIndex =
- location.pathname === '/index' || location.pathname === '/fms';
- let backUrl = '/';
- if (ssoConfig.isRedirect) {
- backUrl = isIndex ? '/' : currentUrl || ssoConfig.appRedirectUrl;
- }
- let redirectUrl = ssoConfig.ssoEnabled
- ? parseTarget(
- ssoConfig.ssoLoginUrl + backUrl + `&appid=${ssoConfig.appId}`
- )
- : process.env.VUE_APP_SYS_BASE_URL + '/login';
- // alert( ssoConfig.ssoEnabled );
- // alert(redirectUrl);
- // alert(ssoConfig.ssoLoginUrl);
- goUrl(redirectUrl);
- }
- }
- export function parseSSoToken(store, next, to, router, subName) {
- updateSSOConfig();
- const { token, siblingToken, subid } = to.query;
- if (subid) {
- setSysMenuConfigID(subid);
- }
- if (subName) {
- setSysTitle(subName, subid);
- }
- refreshTitle();
- if (token) {
- let ssoToken = token;
- // alert('全局ssoToken=' + ssoToken);
- if (typeof ssoToken === 'undefined') {
- if (ssoConfig.appId !== 'PTS') {
- if (ssoConfig.ssoEnabled) {
- goUrl(
- `${ssoConfig.ssoLoginUrl}${ssoConfig.appRedirectUrl}${to.fullPath}`
- ); // 否则全部重定向到登录页
- } else {
- }
- }
- } else {
- setPlatformToken(ssoToken);
- return store.dispatch('SaveBindToken', ssoToken).then(() => {
- router.replace({
- path: to.path,
- query: omit(to.query, ['token', 'siblingToken', 'subid', 'subName'])
- });
- return true;
- });
- }
- } else if (siblingToken) {
- setPlatformToken(siblingToken);
- //
- return store.dispatch('SaveSiblingToken', siblingToken).then(() => {
- router.replace({
- path: to.path,
- query: omit(to.query, ['token', 'siblingToken', 'subid', 'subName']),
- replace: true
- });
- return true;
- });
- } else {
- return Promise.resolve(false);
- }
- }
- export function refreshTitle() {
- // document.title = getSysTitle();
- }
|