微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于角色和记录状态访问资源的授权

如何解决基于角色和记录状态访问资源的授权

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

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

解决方法

我看到两种可能性:

  1. 在资源中设置 showedit 视图。在 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>);
    }
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。