先去创建一个权限控制模块,在终端,项目所在目录的下面,执行 nest generate module 生成一个模块,名字是 app-access-control 放在 app/modules/access-control 这个目录的下面,加上一个 --flat 选项。
然后在给这个模块生成一个控制器,等会在这个控制器里可以定义两个接口测试一下权限控制相关的功能。执行 nest generate controller 生成一个控制器,名字是 app-access-control 放在 app/modules/access-control/controllers 里面。加上 --flat 选项。
配置
回到项目,下面可以定义一个管理员用户 ID 的配置,在检查权限的时候,如果是用户是管理员,就直接通过检查。打开 .env 这个文件,添加一个新的环境变量,名字是 ROOT_USER_ID,把它设置成 1 ,意思就是 id 号是 1 的这个用户被认为是应用的管理员。
然后创建一个配置文件,放在 app/mdoules/access-control/configs 里面,名字是 app-access-control.config.ts ,文件里面默认导出一个函数,函数返回的是一个对象,里面先添加一个 accessControl,它是一个对象,里面添加一个 rootUserId,对应的值就是 process.env.ROOT_USER_ID 这个环境变量的值。
打开 AppAccessControlModule 模块,在模块里添加一个 imports ,里面添加一个 ConfigModule 用一下 forFeature,提供一个 appAccesControlConfig 。