@antdp/authorized
Version:
通过判断是否进入主界面还是登录界面。
85 lines (84 loc) • 2.05 kB
JavaScript
import { useAuthorizedonfig } from "./hooks";
import React, { useMemo } from "react";
import { store } from "./utils";
import { jsx as _jsx } from "react/jsx-runtime";
export var AuthButton = props => {
var {
path,
children
} = props;
var {
auth_btn,
auth_check_url,
isCheckAuth
} = useAuthorizedonfig();
var authBtns = useMemo(() => {
var authBtnStr = store.getItem(auth_btn || "");
if (authBtnStr) {
return JSON.parse(authBtnStr);
}
return [];
}, [JSON.stringify({
auth_btn,
auth_check_url
})]);
var checkPath = useMemo(() => {
if (!isCheckAuth) {
return true;
}
if (auth_check_url) {
return !!authBtns.find(ite => ite[auth_check_url] === path);
} else {
return !!authBtns.find(ite => ite === path);
}
}, [authBtns, path, isCheckAuth]);
if (!path || !isCheckAuth || checkPath) {
return /*#__PURE__*/_jsx(React.Fragment, {
children: children
});
}
return /*#__PURE__*/_jsx(React.Fragment, {});
};
/**
* 判断按钮路径是否有权限
*/
export var getAuthButton = function getAuthButton(path, other) {
if (other === void 0) {
other = {};
}
var {
auth_btn,
auth_check_url
} = other || {};
var authBtns = () => {
var newAuthBtn = auth_btn;
if (!newAuthBtn) {
if (typeof ANTD_AUTH_CONF === "boolean") {
newAuthBtn = "";
} else {
newAuthBtn = ANTD_AUTH_CONF.auth_btn;
}
}
var authBtnStr = store.getItem(newAuthBtn || "");
if (authBtnStr) {
return JSON.parse(authBtnStr);
}
return [];
};
var checkPath = () => {
var newCheckUrl = auth_check_url || "";
if (!newCheckUrl) {
if (typeof ANTD_AUTH_CONF === "boolean") {
newCheckUrl = "";
} else {
newCheckUrl = ANTD_AUTH_CONF.auth_check_url;
}
}
if (newCheckUrl) {
return !!authBtns().find(ite => ite[newCheckUrl] === path);
} else {
return !!authBtns().find(ite => ite === path);
}
};
return checkPath();
};