根据用户权限呈现局部视图

render partial view based on user permissions

我的任务是创建一个不是由角色预先定义的权限系统。例如,系统没有定义管理员可以分配给其他用户的角色。 相反,系统只提供所有数据库表,管理员可以通过选择表和授权级别 (CRUD) 以及哪些字段应该可见来动态创建自己的角色。那将是容易的部分。

当前没有任何权限的实现是使用 RESTful API 获取数据,然后通过 javascript 创建 DOM。由于 javascript 知道在当前页面上显示什么,它可以从数据对象中获取属性甚至获取相关数据。

但现在 API 调用返回的字段可能因用户而异。如何只显示用户有权查看的数据?

示例:

在下图中,我们看到当前元素仅显示名称和描述字段。这些可以当前用户编辑。还有一个位置输入来定义图像的顺序,但用户无权更改它并且不会生成。 Initial state, data fetched from API

当我们点击“新图像”时,会添加一个新行 javascript 但现在“位置”字段是可见的。 After clicking "new image"

JS代码现在没有用户可以看到哪些字段,什么不可以。我怎样才能控制这种行为?

我应该创建一个新的 API 来根据当前用户权限获取页面的“结构”,还是我应该将 javascript 代码更改为 php 以输出只需要当前用户的逻辑?

一般方法应该是什么?cake 中是否已有可用的方法php?

我当前的解决方案是向新端点发出请求,这会给我一个空数据对象,但只有用户可见的字段。

按钮事件 -> 获取 api/newEmptyObject -> 呈现输入字段

缺点是它增加了用户 click-event 显示输入字段的延迟。