import React, { useState, useEffect } from 'react' import cn from 'classnames' import { Loader, IconButton, Popup, NoContent, SlideModal } from 'UI' import { connect } from 'react-redux' import stl from './roles.module.css' import RoleForm from './components/RoleForm' import { init, edit, fetchList, remove as deleteRole, resetErrors } from 'Duck/roles'; import RoleItem from './components/RoleItem' import { confirm } from 'UI'; import { toast } from 'react-toastify'; import withPageTitle from 'HOCs/withPageTitle'; interface Props { loading: boolean init: (role?: any) => void, edit: (role: any) => void, instance: any, roles: any[], deleteRole: (id: any) => Promise, fetchList: () => Promise, account: any, permissionsMap: any, removeErrors: any, resetErrors: () => void, projectsMap: any, } function Roles(props: Props) { const { loading, instance, roles, init, edit, deleteRole, account, permissionsMap, projectsMap, removeErrors } = props const [showModal, setShowmModal] = useState(false) const isAdmin = account.admin || account.superAdmin; useEffect(() => { props.fetchList() }, []) useEffect(() => { if (removeErrors && removeErrors.size > 0) { removeErrors.forEach(e => { toast.error(e) }) } return () => { props.resetErrors() } }, [removeErrors]) const closeModal = (showToastMessage) => { if (showToastMessage) { toast.success(showToastMessage) props.fetchList() } setShowmModal(false) setTimeout(() => { init() }, 100) } const editHandler = role => { init(role) setShowmModal(true) } const deleteHandler = async (role) => { if (await confirm({ header: 'Roles', confirmation: `Are you sure you want to remove this role?` })) { deleteRole(role.roleId) } } return ( } onClose={ closeModal } />

Roles and Access

setShowmModal(true) } />
Title
Project Access
Feature Access
{roles.map(role => ( ))}
) } export default connect(state => { const permissions = state.getIn(['roles', 'permissions']) const permissionsMap = {} permissions.forEach(p => { permissionsMap[p.value] = p.text }); const projects = state.getIn([ 'site', 'list' ]) return { instance: state.getIn(['roles', 'instance']) || null, permissionsMap: permissionsMap, roles: state.getIn(['roles', 'list']), removeErrors: state.getIn(['roles', 'removeRequest', 'errors']), loading: state.getIn(['roles', 'fetchRequest', 'loading']), account: state.getIn([ 'user', 'account' ]), projectsMap: projects.reduce((acc, p) => { acc[ p.get('id') ] = p.get('name') return acc } , {}), } }, { init, edit, fetchList, deleteRole, resetErrors })(withPageTitle('Roles & Access - OpenReplay Preferences')(Roles))