当前位置: 首页 > news >正文

Thingsboard 租户管理员权限,增加租户普通用户权限

ThingsBoard CE(社区版)中,租户管理员拥有对规则链、客户、资产、设备、仪表板等资源的全面管理权限。如果你想为租户创建一个普通用户,并限制其不能操作规则链、高级功能、安全设置等,可以通过以下步骤实现:

一、系统管理员增加租户普通用户

 在增加用户时,增加一个单选框,分别为租户管理员、租户普通用户。Thingslink.cn - 物联网设备管理平台、智能设备调试、设备监控、设备接入

增加选择框的源代码修改如下:

1)在src\app\modules\home\pages\user\user.component.html增加单选框
<mat-radio-group [(ngModel)]="authority" name="authority" required>
          <mat-radio-button [value]="'TENANT_ADMIN'">{{ 'user.tenant-admin' | translate }}</mat-radio-button>
          <mat-radio-button [value]="'TENANT_USER'">{{ 'user.tenant-user' | translate }}</mat-radio-button>
        </mat-radio-group>

2)在src\app\modules\home\pages\user\users-table-config.resolver.ts 去掉对角色强制付值。
  saveUser方法去掉user.authority = this.authority;

3)在src\app\modules\home\pages\user\add-user-dialog.component.ts文件里对页面选项值的获取
  add()方法里
    this.user.authority = this.detailsForm.value.authority;   //this.data.authority;

4)在src\app\modules\home\pages\user\user-routing.module.ts文件里增加权限
const routes: Routes 方法里,增加
auth: [Authority.SYS_ADMIN, Authority.TENANT_ADMIN, Authority.TENANT_USER],

二、对租户普通用户这个角色增加采单权限,增加源代码里如:

Authority.TENANT_USER,[{name: 'customer.management',places: [MenuId.customers]},{name: 'asset.management',places: [MenuId.assets, MenuId.asset_profiles]},{name: 'device.management',places: [MenuId.devices, MenuId.device_profiles, MenuId.otaUpdates]},{name: 'entity-view.management',places: [MenuId.entity_views]},{name: 'edge.management',places: [MenuId.edges, MenuId.rulechain_templates]},{name: 'dashboard.management',places: [MenuId.widget_library, MenuId.dashboards]},{name: 'audit-log.audit',places: [MenuId.audit_log, MenuId.api_usage]},]

三、权限对比

  • 默认情况下,客户用户只能查看被授权的设备、资产、仪表盘,无法操作规则链、租户配置、安全设置

  • 如果你使用了 ThingsBoard PE(专业版),还可以通过 角色(Role)用户组(User Group) 进一步细化权限:

    • 创建自定义角色 → 只勾选“读取设备”“读取仪表盘”等权限。

    • 将用户加入该角色即可。

ThingsBoard CE(社区版),权限控制相对简化,建议通过客户层级来隔离权限

http://www.dtcms.com/a/351512.html

相关文章:

  • Go errgroup:高效并发控制与错误处理
  • WPF基于LiveCharts2图形库,实现:折线图,柱状图,饼状图
  • 03. 协程入门_Android异步处理机制
  • 系统架构设计师备考第7天——网络协议中间件软件构件
  • WebSocket简单了解
  • 线性代数之深入理解旋转矩阵
  • lesson46-2:Linux 高级指令全解析:从文件操作到系统管理
  • mybatisplus 配置二级缓存
  • 【系统编程】线程简介
  • 【人工智能】2025年AI代理开源革命:社区驱动的智能体生态重塑未来
  • Linux--seLinux的概述
  • FRET、PLA、Co-IP和GST pull-down有何区别? 应该如何选择?
  • 原型模式系统开发中的原型分类全景:水平、垂直、抛弃式与演化式
  • nvm切换node版本之后报错,无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
  • 嵌入式C语言进阶:结构体封装函数的艺术与实践
  • IUV5G专网排障(上)
  • 支持向量机(SVM)学习笔记
  • SOME/IP服务发现PRS_SOMEIPSD_00277的解析
  • 服务器数据恢复—热备盘上线失败如何恢复数据?
  • 【Android】webview强制Crash后再自恢复设计
  • 服务器初始化
  • 影响服务器托管费用的因素​
  • ROS2 Helloworld 入门——包含完整pdf手册
  • Linux驱动开发笔记(九)——内核定时器
  • CSS 优先级:公司组织架构模型
  • css3背景线性渐变:linear-gradient
  • 基于Python+MySQL实现物联网引论课程一个火警报警及应急处理系统
  • 面向 6G 网络的 LLM 赋能物联网:架构、挑战与解决方案
  • 相机激光安全等级和人眼安全
  • 第九届MathorCup高校数学建模挑战赛-D题:钢水“脱氧合金化”配料方案的优化