Merge branch 'feat-role-permission'

# Conflicts:
#	src/stores/AuthStore.js
dev/timezone
Jimmy Liow 1 year ago
commit 5a94726b04

@ -3,6 +3,9 @@ import { fetchJSON, appendRequestHeader } from '@/utils/request'
import { isEmpty, isNotEmpty, } from '@/utils/commons'
import { loadPageSpy } from '@/utils/pagespy'
export const PERM_MERGE_CONVERSATION = 'merge-conversation'
export const PERM_ASSIGN_NEW_CONVERSATION = 'assign-new-conversation'
const useAuthStore = create((set, get) => ({
loginUser: {
@ -19,6 +22,30 @@ const useAuthStore = create((set, get) => ({
loginStatus: 0,
isPermitted: (perm) => {
const { loginUser } = get()
if (perm === PERM_MERGE_CONVERSATION) {
return ['404', '383', '227'].includes(loginUser.userId)
}
if (perm === PERM_ASSIGN_NEW_CONVERSATION) {
return ['79', '383', '404', '227'].includes(loginUser.userId)
}
// 以上是 Hardcode 判断
// 以下是权限列表从数据库读取后使用的方法
// return this.permissionList.some((value, key, arry) => {
// if (value.indexOf(WILDCARD_TOKEN) > -1) {
// return true;
// }
// if (value === perm) {
// return true;
// }
// return false;
// });
},
login: async (authCode) => {
const { saveUserSession, setLoginStatus } = get()

@ -3,6 +3,7 @@ import { Button, Form, Input, Radio, Modal } from 'antd';
import { MergeCellsOutlined } from '@ant-design/icons';
import { fetchConversationMerge } from '@/actions/ConversationActions';
import useAuthStore from '@/stores/AuthStore';
import {PERM_MERGE_CONVERSATION} from '@/stores/AuthStore';
export const MergeToForm = ({ currentWAID, initialValues, onFormInstanceReady }) => {
const [form] = Form.useForm();
@ -73,7 +74,7 @@ export const MergeToForm = ({ currentWAID, initialValues, onFormInstanceReady })
};
const MergeConversationTo = ({ currentWAID, opi_sn, ...props }) => {
const userId = useAuthStore((state) => state.loginUser.userId);
const isPermitted = useAuthStore((state) => state.isPermitted);
const [open, setOpen] = useState(false);
const [formInstance, setFormInstance] = useState();
const [loading, setLoading] = useState(false);
@ -86,7 +87,7 @@ const MergeConversationTo = ({ currentWAID, opi_sn, ...props }) => {
};
return (
<>
{['404', '383', '227'].includes(userId) && <Button icon={<MergeCellsOutlined />} type='link' onClick={setOpen} />}
{isPermitted(PERM_MERGE_CONVERSATION) && <Button icon={<MergeCellsOutlined />} type='link' onClick={setOpen} />}
<Modal
open={open}
title='合并会话'

@ -4,10 +4,11 @@ import SearchInput from '@/components/SearchInput';
import { fetchSalesAgentWithDD } from '@/actions/CommonActions';
import { postAssignConversation } from '@/actions/ConversationActions';
import useAuthStore from '@/stores/AuthStore';
import {PERM_ASSIGN_NEW_CONVERSATION} from '@/stores/AuthStore';
const InputAssign = ({ initialValues, conversationid, ...props }) => {
const [userId, username] = useAuthStore((state) => [state.loginUser.userId, state.loginUser.username]);
const actionDisabled = !['79', '383', '404', '227'].includes(String(userId));
const [userId, username, isPermitted] = useAuthStore((state) => [state.loginUser.userId, state.loginUser.username, state.isPermitted]);
const actionDisabled = !isPermitted(PERM_ASSIGN_NEW_CONVERSATION);
const { message } = App.useApp();
const [form] = Form.useForm();

Loading…
Cancel
Save