CZL Connect 接入文档

本文档将指导您如何将CZL Connect集成到您的应用中。

如果您有任何问题,请随时在论坛留言

权限级别系统

CZL Connect提供分层权限管理系统,支持应用级别的用户权限控制

系统概述

CZL Connect的权限级别系统为每个应用提供了灵活的用户权限管理。应用创建者和管理员可以为用户分配不同的权限级别, 实现精细化的权限控制。系统支持层级权限继承,使得权限管理更加直观和方便。

权限层级

admin最高权限
  • • 可以修改应用配置(名称、描述、重定向URL等)
  • • 可以管理应用用户(封禁/解封、修改权限级别)
  • • 可以查看应用统计数据和用户列表
  • • 可以重新生成应用密钥
  • • 可以启用/禁用应用
  • 注意:无法删除应用(仅应用创建者可删除)
  • 注意:无法取消应用创建者的admin权限
viewer查看权限
  • • 可以查看应用统计数据
  • • 可以查看用户列表和用户信息
  • 限制:无法修改应用配置
  • 限制:无法封禁/解封用户
  • 限制:无法修改用户权限级别
  • 限制:无法查看应用配置(Client ID/Secret等)
t0t1t2t3t4t5
普通用户等级
  • • 在CZL Connect系统内权限相同(可正常登录和使用应用)
  • • 主要用于第三方应用内部的权限管理
  • • 应用可根据这些等级实现自定义的权限控制
  • t0:新用户默认等级
  • t1-t5:递增的信任等级,具体含义由应用定义
  • • 无法访问CZL Connect的应用管理界面

实现方式

权限分配

  • 应用创建者:在授权时自动获得admin权限
  • 普通用户:首次授权时默认为t0级别
  • 权限提升:应用创建者和admin用户可在应用管理界面修改用户权限

OAuth2/OIDC集成

在OAuth2.0和OIDC的用户信息响应中,groups字段提供层级权限信息:

{
  "id": 1,
  "username": "user",
  "groups": "t0,t1,t2,t3,t4,t5,viewer,admin",
  // ... 其他字段
}

groups字段包含用户当前级别及其下属的所有权限级别,便于应用进行权限判断。

权限继承

权限级别按以下顺序递增,高级别用户拥有低级别的所有权限:

t0t1t2t3t4t5vieweradmin

使用示例

前端权限判断

// JavaScript示例
function hasPermission(userGroups, requiredLevel) {
  if (!userGroups) return false;
  const groups = userGroups.toLowerCase().split(',');
  return groups.includes(requiredLevel.toLowerCase());
}

// 使用示例
const userInfo = {
  groups: "t0,t1,t2,t3,t4,t5,viewer,admin"
};

// 检查是否有管理员权限
if (hasPermission(userInfo.groups, 'admin')) {
  console.log('用户是管理员,可以访问所有功能');
}

// 检查是否有查看权限
if (hasPermission(userInfo.groups, 'viewer')) {
  console.log('用户可以查看数据');
}

// 检查特定等级
if (hasPermission(userInfo.groups, 't3')) {
  console.log('用户等级为t3或以上');
}

后端权限验证

// Go示例
func hasPermission(userGroups string, requiredLevel string) bool {
    if userGroups == "" {
        return false
    }
    groups := strings.ToLower(userGroups)
    required := strings.ToLower(requiredLevel)
    return strings.Contains(groups, required)
}

// 使用示例
userGroups := "t0,t1,t2,t3,t4,t5,viewer,admin"

if hasPermission(userGroups, "admin") {
    // 管理员权限操作
}

if hasPermission(userGroups, "t2") {
    // t2或以上等级操作
}

应用场景示例

论坛应用:t0用户只能浏览,t1可以回复,t3可以发帖,admin可以管理版块

文件管理系统:t0只读,t2可以上传,t4可以分享,admin可以删除

监控系统:viewer可以查看图表,admin可以配置告警