近期,收到许多用户关于如何配置和管理 MemFire Cloud 中的用户角色和权限的询问。为了解答大家的疑问,我们编写了一个简易教程,指导你完成如何在 MemFire Cloud 中轻松设置用户角色和权限,以及配置前端路由和按钮权限的各个步骤。本教程以“商品后台管理系统”中设置的不同角色(超级管理员:可以对商品管理系统的所有数据进行任何操作;普通管理员:可以查看和新增商品;普通用户:只能查看商品)和通过权限来管理商品为例进行讲解。
准备工作:创建Auth Hook
此Auth Hook介绍了一种为 MemFire Cloud 项目实现自定义声明的方法。该方法旨在将JSON 数据添加到经过身份验证的用户在登录应用程序时收到的访问令牌中。此令牌(及其包含的自定义声明)可供你的应用程序和 PostgreSQL 数据库服务器读取和使用,方便在后续给用户设置和读取用户的角色声明。这些自定义声明存储在 auth 架构中 users 表的 raw_app_meta_data 字段中。
文件 install.sql 包含在 MemFire Cloud项目中实现和管理自定义声明所需的所有 Auth Hook。
1.将 install.sql 中的 SQL 代码粘贴到 MemFire Cloud 项目的 SQL 查询编辑器中。
2.单击 RUN 来执行代码。
文件:https://github.com/supabase-community/supabase-custom-claims
创建表
"商品后台管理系统"需要创建权限表(role_permissions)、菜单表(sys_menu)、用户表(users)、和商品表(prod) ,用这四张表来完成对于用户角色和权限的配置及管理。
创建权限表
首先需要创建一个权限表来跟踪角色的权限。我们设置了三种角色,分别为超级管理员:superAdmin、普通管理员:admin、普通用户:authenticated。
将 SQL 代码粘贴到 MemFire Cloud 项目的 SQL 查询编辑器中,点击RUN来执行代码。
-- 角色权限
create table public.role_permissions (
id bigint generated by default as identity primary key,
role character varying(255) not null,
permission character varying(255) not null
);
comment on table public.role_permissions is '权限表';
insert into public.role_permissions (role, permission)
values
('superAdmin', 'all'),
('admin', 'prod:spec:info,prod:spec:save'),
('authenticated', 'prod:spec:info');
permission是代表能够访问和控制哪些页面,prod:spec:info表示可以查看商品管理列表的详情,prod:spec:save表示可以新增商品,prod:spec:update表示可以修改商品,prod:spec:delete表示可以删除商品。
创建菜单表
创建"商品后台管理系统"的菜单表,方便后续管理菜单。
将 SQL 代码粘贴到 MemFire Cloud 项目的 SQL 查询编辑器中,点击RUN来执行代码。
create table public.sys_menu (
menu_id bigint generated by default as identity primary key,
parent_id bigint null,
name character varying(50) null default null::character varying,
perms character varying(500) null default null::character varying
) tablespace pg_default;
insert into public.sys_menu (parent_id,type,menu_id,name,perms)
values
(1,1,34,'商品管理',null),
(34,2,57,'查看','prod:spec:info'),
(34,2,58,'添加','prod:sp