【发布时间】:2018-05-04 16:02:47
【问题描述】:
我的问题是关于仅显示用户被授权的模板的那些部分。 让我们假设有一个只有用户和用户角色的项目,以及由 phx.gen.html 生成的模板和控制器。设置路由“/users”,我们会得到一个漂亮的表格,其中包含所有用户数据和“显示”、“编辑”和“删除”按钮。
用户角色可能只是普通的“用户”和“管理员”。现在我希望管理员能够删除和编辑所有用户,但“用户”应该只能编辑他自己以及我的问题是什么,他应该只能看到这些按钮以供输入。
我已经为相应的操作设置了一些插件,因此普通“用户”无法编辑、删除甚至显示其他用户,但他甚至不应该知道这样做的选项。所以,我想隐藏这些按钮。以下是我遇到或想到的解决方案,但它们似乎都不是真正适用的。
- 使用“/admin”路由并限制对其的访问。这似乎是最常用的方式,但我不想这样做,因为在我的情况下,管理员只是特权普通用户,基本上不需要管理员的完整路线。我必须创建新的控制器、新的模板等等。
- 所以我的下一个想法是:“只需渲染另一个模板并从用户模板中删除这些按钮”。好吧,它可以工作,但它与 1) 基本相同。我将不得不为所有 index.html 和其他一些模板复制内容。此外,如果我想添加另一个角色,可能是“经理”或其他角色,我必须再次复制它。随着时间的推移,这似乎是不可维护的。
- 向模板本身添加一些逻辑,例如 html-things 。我知道此时它不会受到伤害,因为我使用控制器中的插件仔细检查了权限,但无论如何......这似乎也很“脏”,因为我不希望模板中出现这种逻辑。
任何人有其他想法或可能是对讨论此问题的人的参考?我只能找到关于 1) 以及如何实现它的文章。
【问题讨论】: