角色权限优化
This commit is contained in:
parent
092d78bbb9
commit
d77782916c
|
|
@ -8,6 +8,7 @@ import { PostRefresh } from '@/api/Login';
|
|||
import Avatar from '@/components/Avatar';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { agora } from '@/utils/package/agora';
|
||||
import { role } from '@/config/role';
|
||||
let time = null as any;
|
||||
const JoinSetting = forwardRef((_props: any, ref: any) => {
|
||||
useImperativeHandle(ref, () => ({
|
||||
|
|
@ -127,7 +128,7 @@ const JoinSetting = forwardRef((_props: any, ref: any) => {
|
|||
{
|
||||
joinRoomSettingForm.map((item, index) => {
|
||||
return <div key={index} onClick={async () => {
|
||||
if (user.roleId === '1') {
|
||||
if (role.ID.includes(user.roleId)) {
|
||||
let msg = '';
|
||||
if (index === 0) {
|
||||
await agora.getAudioMediaList().then(res => {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import axios from 'axios';
|
|||
import { useLocation } from 'react-router-dom';
|
||||
import { storage } from '@/utils';
|
||||
import StupWizard from '../StupWizard';
|
||||
import { role } from '@/config/role';
|
||||
const fs = require('fs').promises;
|
||||
const { exec } = require('child_process');
|
||||
const { Column } = Table
|
||||
|
|
@ -128,7 +129,7 @@ const SharedFilesModel = forwardRef((props: any, ref: any) => {
|
|||
})
|
||||
}
|
||||
}} />
|
||||
{roomUserItem && roomUserItem.roleId === '1' || roomUserItem.isRoomManager ? <ProfileOutlined title={showRowSelection ? '取消框选' : '显示框选'} onClick={() => {
|
||||
{roomUserItem && role.ID.includes(roomUserItem.roleId) || roomUserItem.isRoomManager ? <ProfileOutlined title={showRowSelection ? '取消框选' : '显示框选'} onClick={() => {
|
||||
setShowRowSelection(!showRowSelection)
|
||||
}} style={{ color: showRowSelection ? '#5575F2' : 'white' }} /> : null}
|
||||
{showRowSelection ? <DeleteOutlined title='删除' onClick={() => {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
export const role = {
|
||||
ID: ['1', '3']
|
||||
}
|
||||
|
|
@ -9,6 +9,7 @@ import JoinSetting from '@/components/JoinSetting';
|
|||
import { storage } from '@/utils';
|
||||
import { PostRefresh } from '@/api/Login';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { role } from '@/config/role';
|
||||
const Index: React.FC = () => {
|
||||
const navigate = useNavigate();
|
||||
const [list, setList] = useState({
|
||||
|
|
@ -153,7 +154,7 @@ const Index: React.FC = () => {
|
|||
<Button type="primary"
|
||||
iconPosition={'end'}
|
||||
onClick={async () => {
|
||||
if (userInfo.roleId === '1') {
|
||||
if (role.ID.includes(userInfo.roleId)) {
|
||||
joinSettingRef.current.changeModal(item.roomNum)
|
||||
} else {
|
||||
postRefresh(() => {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import SharedFilesModel from '@/components/SharedFilesModel';
|
|||
import StupWizard from '@/components/StupWizard';
|
||||
import EquipmentManagement from '@/components/EquipmentManagement';
|
||||
import UserVideo from '@/components/UserVideo';
|
||||
import { role } from '@/config/role';
|
||||
const { confirm } = Modal;
|
||||
const { exec } = require('child_process');
|
||||
const fs = require('fs').promises;
|
||||
|
|
@ -460,7 +461,7 @@ const Meeting: React.FC = () => {
|
|||
break;
|
||||
// 管理员查看随机用户
|
||||
case 'Watch':
|
||||
if (userInfo.roleId !== '1') {
|
||||
if (!role.ID.includes(userInfo.roleId)) {
|
||||
let userId = item.watchUids.find((uid: any) => uid === userInfo.uid)
|
||||
if (userId) {
|
||||
await agora.allJoinChannelEx()
|
||||
|
|
@ -689,7 +690,7 @@ const Meeting: React.FC = () => {
|
|||
await agora.muteLocalAudioStream(true)
|
||||
}
|
||||
})
|
||||
if (userInfo.roleId !== '1') {
|
||||
if (!role.ID.includes(userInfo.roleId)) {
|
||||
if (item.isRoomManager) {
|
||||
footerListTemplate[0][2].title = '结束发言'
|
||||
footerListTemplate[0][2].active = true
|
||||
|
|
@ -710,7 +711,7 @@ const Meeting: React.FC = () => {
|
|||
item.isShow = true;
|
||||
}
|
||||
});
|
||||
setIsAdmin(res.filter((item: any) => (item.roleId === '1' || item.isRoomManager) && item.isRoom).length)
|
||||
setIsAdmin(res.filter((item: any) => (role.ID.includes(item.roleId) || item.isRoomManager) && item.isRoom).length)
|
||||
return res
|
||||
})
|
||||
}
|
||||
|
|
@ -747,7 +748,7 @@ const Meeting: React.FC = () => {
|
|||
for (const key in item.user) {
|
||||
userItem[key] = item.user[key];
|
||||
}
|
||||
userItem.isAdmin = item.user.roleId === '1' || item.user.isRoomManager;
|
||||
userItem.isAdmin = role.ID.includes(item.user.roleId) || item.user.isRoomManager;
|
||||
refreshVideoView(userItem)
|
||||
}
|
||||
if (key === 'ManagerRefresh') {
|
||||
|
|
@ -764,12 +765,12 @@ const Meeting: React.FC = () => {
|
|||
userItem[key] = item.user[key];
|
||||
}
|
||||
userItem.isRoom = true;
|
||||
userItem.isAdmin = item.user.roleId === '1' || item.user.isRoomManager;
|
||||
userItem.isAdmin = role.ID.includes(item.user.roleId) || item.user.isRoomManager;
|
||||
refreshVideoView(userItem)
|
||||
return [...res]
|
||||
} else {
|
||||
item.user.isRoom = true;
|
||||
item.user.isAdmin = item.user.roleId === '1' || item.user.isRoomManager;
|
||||
item.user.isAdmin = role.ID.includes(item.user.roleId) || item.user.isRoomManager;
|
||||
refreshVideoView(item.user)
|
||||
return [...res, item.user]
|
||||
}
|
||||
|
|
@ -1152,7 +1153,7 @@ const Meeting: React.FC = () => {
|
|||
res.data.forEach((item: any) => {
|
||||
item.isShow = true;
|
||||
item.isRoom = true;
|
||||
item.isAdmin = item.roleId === '1' || item.isRoomManager
|
||||
item.isAdmin = role.ID.includes(item.roleId) || item.isRoomManager
|
||||
})
|
||||
setRoomUserList(res.data)
|
||||
getUserRoomInfo().then(async (res) => {
|
||||
|
|
@ -1310,7 +1311,7 @@ const Meeting: React.FC = () => {
|
|||
return new Promise((resolve, _reject) => {
|
||||
setRoomUserList((res: any) => {
|
||||
let userItem = res.find((item: any) => item.uid === userInfo.uid)
|
||||
if (userItem && (userItem.roleId === '1' || userItem.isRoomManager)) {
|
||||
if (userItem && (role.ID.includes(userItem.roleId) || userItem.isRoomManager)) {
|
||||
resolve(userItem)
|
||||
} else {
|
||||
resolve('')
|
||||
|
|
@ -1517,7 +1518,7 @@ const Meeting: React.FC = () => {
|
|||
}
|
||||
}}
|
||||
>
|
||||
<div className={`${styles.meetingContentSwiperCardVdeio} ${(item.uid === currentVideoId) && !isVideoFullScreen ? styles.active : ''} ${(item.roleId === '1' || item.isRoomManager) && !isVideoFullScreen ? styles.boxShadow : ''}`} id={`video-${item.uid}`}>
|
||||
<div className={`${styles.meetingContentSwiperCardVdeio} ${(item.uid === currentVideoId) && !isVideoFullScreen ? styles.active : ''} ${(role.ID.includes(item.roleId) || item.isRoomManager) && !isVideoFullScreen ? styles.boxShadow : ''}`} id={`video-${item.uid}`}>
|
||||
<div className={styles.meetingContentSwiperCardVdeioLoading}>
|
||||
<Avatar name={item.userName} />
|
||||
</div>
|
||||
|
|
@ -1527,9 +1528,9 @@ const Meeting: React.FC = () => {
|
|||
{String(isShare) === item.screenShareId ? <div className={styles.meetingContentSwiperCardShare}>
|
||||
屏幕分享中
|
||||
</div> : null}
|
||||
{user.roleId === '1' ? <Popover placement="bottom" title={''} content={
|
||||
{role.ID.includes(user.roleId) ? <Popover placement="bottom" title={''} content={
|
||||
<div className={styles.meetingContentSwiperCardPopover}>
|
||||
{item.isRoomManager || item.roleId === '1' ? <Button
|
||||
{item.isRoomManager || role.ID.includes(item.roleId) ? <Button
|
||||
type="primary"
|
||||
className='m-ant-btn'
|
||||
size={'small'}
|
||||
|
|
@ -1538,7 +1539,7 @@ const Meeting: React.FC = () => {
|
|||
setAllUserLook(item)
|
||||
}}
|
||||
>全员看Ta</Button> : null}
|
||||
{item.uid !== user.uid && item.roleId !== '1' ? <Button
|
||||
{item.uid !== user.uid && !role.ID.includes(item.roleId) ? <Button
|
||||
type="primary"
|
||||
className='m-ant-btn'
|
||||
size={'small'}
|
||||
|
|
@ -1714,28 +1715,28 @@ const Meeting: React.FC = () => {
|
|||
<div><Avatar name={item.userName} /></div>
|
||||
<span>
|
||||
{item.userName}{item.uid === user.uid ? '(我)' : ''}
|
||||
{item.roleId === '1' || item.isRoomManager ?
|
||||
{role.ID.includes(item.roleId) || item.isRoomManager ?
|
||||
<span style={{ color: '#02B188', marginLeft: '4px' }}>
|
||||
{item.roleId === '1' ? '管理员' : '发言人'}
|
||||
{role.ID.includes(item.roleId) ? '管理员' : '发言人'}
|
||||
</span>
|
||||
: null}
|
||||
</span>
|
||||
</div>
|
||||
<div>
|
||||
{item.roleId === '1' || item.isRoomManager ? <div>
|
||||
{role.ID.includes(item.roleId) || item.isRoomManager ? <div>
|
||||
<img src={item.enableMicr ? ImageUrl.icon22 : ImageUrl.icon22Active} alt="" onClick={() => {
|
||||
postOpenMicr(!item.enableMicr, item.uid)
|
||||
}} title={item.enableMicr ? '静音' : '解除声音'} />
|
||||
</div> : null}
|
||||
{item.roleId === '1' || item.isRoomManager ? <div>
|
||||
{role.ID.includes(item.roleId) || item.isRoomManager ? <div>
|
||||
<img src={item.enableCamera ? ImageUrl.icon23 : ImageUrl.icon23Active} alt="" onClick={() => {
|
||||
postOpenCamera(!item.enableCamera, item.uid)
|
||||
}} title={item.enableCamera ? '关闭视频' : '开启视频'} />
|
||||
</div> : null}
|
||||
{item.uid !== user.uid && user.roleId === '1' ? <div>
|
||||
{item.uid !== user.uid && role.ID.includes(user.roleId) ? <div>
|
||||
<Popover placement="left" title={''} content={
|
||||
<div>
|
||||
{item.roleId !== '1' ? <Button
|
||||
{!role.ID.includes(item.roleId) ? <Button
|
||||
type="primary"
|
||||
className='m-ant-btn'
|
||||
style={{ marginBottom: '10px', width: '100%' }}
|
||||
|
|
@ -1817,7 +1818,7 @@ const Meeting: React.FC = () => {
|
|||
<div
|
||||
key={index}
|
||||
className={`${item.uid !== user.uid ? styles.meetingUserChatContentLeft : styles.meetingUserChatContentRight}`}>
|
||||
{user.roleId === '1' ? <Popover
|
||||
{role.ID.includes(user.roleId) ? <Popover
|
||||
placement="bottom"
|
||||
title={''}
|
||||
onOpenChange={(e: boolean) => {
|
||||
|
|
@ -1833,7 +1834,7 @@ const Meeting: React.FC = () => {
|
|||
}}
|
||||
content={
|
||||
roomUserItem ? <div className={styles.meetingContentSwiperCardPopover}>
|
||||
{roomUserItem.isRoomManager || roomUserItem.roleId === '1' ? <Button
|
||||
{roomUserItem.isRoomManager || role.ID.includes(roomUserItem.roleId) ? <Button
|
||||
type="primary"
|
||||
className='m-ant-btn'
|
||||
size={'small'}
|
||||
|
|
@ -1842,7 +1843,7 @@ const Meeting: React.FC = () => {
|
|||
setAllUserLook(roomUserItem)
|
||||
}}
|
||||
>全员看Ta</Button> : null}
|
||||
{roomUserItem.uid !== user.uid && roomUserItem.roleId !== '1' ? <Button
|
||||
{roomUserItem.uid !== user.uid && !role.ID.includes(roomUserItem.roleId) ? <Button
|
||||
type="primary"
|
||||
className='m-ant-btn'
|
||||
size={'small'}
|
||||
|
|
@ -1986,7 +1987,7 @@ const Meeting: React.FC = () => {
|
|||
return <Popover key={rowIndex}
|
||||
content={
|
||||
<div className='meetingContentFooterPopover'>
|
||||
{user.roleId === '1' ?
|
||||
{role.ID.includes(user.roleId) ?
|
||||
<Popconfirm
|
||||
title="提示"
|
||||
description={`结束会议后,所有人将退出,是否结束?`}
|
||||
|
|
@ -2024,7 +2025,7 @@ const Meeting: React.FC = () => {
|
|||
</div>
|
||||
</Popover>
|
||||
case '申请发言':
|
||||
if (user.roleId !== '1') {
|
||||
if (!role.ID.includes(user.roleId)) {
|
||||
return <div className='drag' onClick={() => changeStatusList(row, itemIndex, rowIndex)} key={rowIndex}>
|
||||
<img src={row.active ? row.iconActive : row.icon} alt="" />
|
||||
<span>{row.title}</span>
|
||||
|
|
@ -2032,7 +2033,7 @@ const Meeting: React.FC = () => {
|
|||
}
|
||||
return null
|
||||
case '结束发言':
|
||||
if (user.roleId !== '1') {
|
||||
if (!role.ID.includes(user.roleId)) {
|
||||
return <Popconfirm
|
||||
key={rowIndex}
|
||||
title="提示"
|
||||
|
|
@ -2055,7 +2056,7 @@ const Meeting: React.FC = () => {
|
|||
}
|
||||
return null
|
||||
case '会议监控':
|
||||
if (user.roleId === '1') {
|
||||
if (role.ID.includes(user.roleId)) {
|
||||
return <div
|
||||
className='drag'
|
||||
onClick={() => changeStatusList(row, itemIndex, rowIndex)}
|
||||
|
|
@ -2208,8 +2209,8 @@ const meetingContentUser = (item: any, bool?: boolean) => {
|
|||
<>
|
||||
<div className={styles.meetingContentUser}>
|
||||
<div className={styles.meetingContentUserName}>
|
||||
{item.roleId === '1' || item.isRoomManager ?
|
||||
<div style={{ background: item.roleId === '1' ? '#FDC229' : '#3F51B5' }}>
|
||||
{role.ID.includes(item.roleId) || item.isRoomManager ?
|
||||
<div style={{ background: role.ID.includes(item.roleId) ? '#FDC229' : '#3F51B5' }}>
|
||||
<img src={ImageUrl.icon32} alt="" />
|
||||
</div> : null}
|
||||
{
|
||||
|
|
@ -2220,9 +2221,9 @@ const meetingContentUser = (item: any, bool?: boolean) => {
|
|||
</div> : ''}
|
||||
</label>
|
||||
}
|
||||
<span style={{ maxWidth: bool ? '' : '8vw' }} title={`${item.userName}${item.roleId === '1' || item.isRoomManager ? item.roleId === '1' ? '(管理员)' : '(发言人)' : ''}`}>
|
||||
<span style={{ maxWidth: bool ? '' : '8vw' }} title={`${item.userName}${role.ID.includes(item.roleId) || item.isRoomManager ? role.ID.includes(item.roleId) ? '(管理员)' : '(发言人)' : ''}`}>
|
||||
{item.userName}
|
||||
{item.roleId === '1' || item.isRoomManager ? item.roleId === '1' ? '(管理员)' : '(发言人)' : ''}
|
||||
{role.ID.includes(item.roleId) || item.isRoomManager ? role.ID.includes(item.roleId) ? '(管理员)' : '(发言人)' : ''}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import {
|
|||
} from "agora-electron-sdk";
|
||||
import { GetRoomRtcToken, GetAgoraConf } from "@/api/Home/Index";
|
||||
import { storage } from '@/utils';
|
||||
import { role } from "@/config/role";
|
||||
const option: any = {
|
||||
appId: '',
|
||||
token: '',
|
||||
|
|
@ -271,7 +272,7 @@ export const agora = {
|
|||
{
|
||||
clientRoleType: bool ? ClientRoleType.ClientRoleAudience : ClientRoleType.ClientRoleBroadcaster, //用户角色 ClientRoleBroadcaster 主播 ClientRoleAudience 观众
|
||||
autoSubscribeAudio: false,//设置是否自动订阅所有音频流
|
||||
autoSubscribeVideo: user.roleId === '1' ? true : false,//设置是否自动订阅所有视频流
|
||||
autoSubscribeVideo: role.ID.includes(user.roleId) ? true : false,//设置是否自动订阅所有视频流
|
||||
publishMicrophoneTrack: false,//设置是否发布麦克风采集到的音频
|
||||
publishCameraTrack: true,//设置是否发布摄像头采集的视频
|
||||
publishScreenTrack: false,//设置是否发布屏幕采集的视频
|
||||
|
|
|
|||
Loading…
Reference in New Issue