react-admin - 根据角色和记录状态授权访问资源

标签 react-admin

根据用户的权限和记录的状态来限制对资源的访问的最佳方法是什么?例如,具有某种工作流程(例如时间表或费用报销系统)的表单,用户可以在其中提交表单,然后该表单处于“已提交”状态,其中用户只能“查看” > 他们并且只有管理员可以编辑表单?

尝试找出基于 AuthProvider 强制执行权限的最佳方法,以防止用户仅更改 URL 浏览器在“显示/编辑”模式之间切换。

最佳答案

我看到两种可能性:

  1. 设置 show和一个edit在资源中查看。在 edit查看,如果用户权限不允许编辑,则使用a <Redirect> component重定向到show查看。
  2. 仅设置 edit查看,根据权限,呈现 <SimpleForm><SimpleShowLayout>

这是我如何采用第二种解决方案:

import * as React from 'react'
import { Edit, useRecordContext, SimpleForm, TextInput, SimpleShowLayout, TextField  } from 'react-admin';

export const PostEdit = ({ permissions, ...props }) => (
    <Edit {...props}>
        <EditContent permissions={permissions}/>
    </Edit>
);

const EditContent = ({ permissions }) => {
    const record = useRecordContext();
    if (record?.canEdit && permissions === "admin") {
        return (
            <SimpleForm>
                <TextInput source="title" />
            </SimpleForm>
        );
    } else {
        return (
            <SimpleShowLayout>
                <TextField source="title" />
            </SimpleShowLayout>);
    }
};

关于react-admin - 根据角色和记录状态授权访问资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68263900/

相关文章:

javascript - 使用对象的属性作为 TextInput 的来源

react-admin - 如何将 "reset values"按钮添加到react-admin编辑表单

material-ui - DataGrid 不显示在带有 filterValues 的选项卡内

react-admin - 对 'GET_LIST' 的响应必须类似于 { data : [. ..] },但接收到的数据不是数组

react-admin - 添加自定义按钮到react-admin应用栏

reactjs - 如何在对其中的 ListItem 之一执行操作后更新 ReferenceManyField

react-admin - 关闭react-admin 的翻译

react-admin - 未经授权时禁用仪表板

reactjs - 是否有任何函数可以在 react-final-form 中获取表单值

reactjs - react-admin 中的 showNotification 不起作用