菜单

用户和组织管理

相关源文件

本文档描述了 Gitea 的用户和组织管理系统,包括用户账户、组织结构、团队以及这些实体之间的关系。有关用户和组织相关的仓库权限,请参阅 仓库系统

系统概览

Gitea 的用户和组织管理提供了一个灵活的框架来管理个人贡献者、组织及其相应的权限。此系统处理

  • 用户账户(注册、认证、个人资料)
  • 组织(团队、成员、可见性)
  • 用户关系(关注、协作)
  • 用户设置和偏好
  • 个人资料定制

来源

核心数据模型

用户模型

用户模型是个人账户和组织的双重基础

User 结构体通过 Type 字段服务于多种目的

  • 个人用户(类型 0):用于开发人员和贡献者的常规用户账户
  • 组织(类型 1):可以包含团队和成员的特殊账户
  • 机器人用户(类型 4):用于集成目的的自动化账户
  • 保留类型:用于系统使用和占位符账户

每个账户都有个人资料信息、身份验证详细信息和可见性设置,这些设置控制账户如何向他人显示。

来源

组织模型

组织被实现为一种特殊的、具有附加功能的*用户*类型

每个组织都有

  • 一个拥有完全管理权限的“Owner”团队
  • 成员(属于该组织的*用户*)
  • 团队(具有特定权限级别的*用户*组)
  • 一个控制谁可以看到该组织的可见性设置

来源

用户账户管理

用户创建和注册

用户可以通过以下方式创建:

  1. 自助注册(如果启用)
  2. 管理员创建
  3. OAuth/LDAP/其他外部身份验证提供商

用户创建过程包括

  • 用户名验证(长度、特殊字符、保留名称)
  • 电子邮件验证和确认(可选)
  • 密码强度检查
  • 默认可见性和权限设置
  • 头像生成

来源

用户身份验证

Gitea 支持多种认证方法

身份验证类型描述实现
本地存储在 Gitea 数据库中的基于密码的身份验证models/auth/auth.go
OAuth2通过外部 OAuth 提供商进行身份验证models/auth/oauth2.go
LDAP/AD目录服务身份验证models/auth/ldap.go
PAMLinux 可插拔身份验证模块models/auth/pam.go
SMTP电子邮件服务器身份验证models/auth/smtp.go

密码身份验证包括

  • 带盐的密码哈希
  • 密码复杂度要求
  • 双因素身份验证支持(TOTP、WebAuthn)

来源

用户资料和设置

用户可以自定义其账户的各个方面

个人资料定制包括

  • 个人信息(姓名、简介、地点)
  • 头像(Gravatar 或自定义上传)
  • 电子邮件地址(主邮箱和附加邮箱)
  • 可见性设置(公开、有限、私密)
  • 认证方法

来源

组织管理

组织提供了一种集体分组用户和管理仓库访问的方式。

组织结构

每个组织都有

  • 一个具有完全管理权限的默认“Owner”团队
  • 具有特定仓库访问级别的自定义团队
  • 可以属于多个团队的成员
  • 可见性和访问控制设置

来源

团队管理

团队是控制组织内仓库访问的主要机制

团队可以对不同的仓库单元具有不同的访问级别,从而实现精细的权限控制。

来源

用户关系

关注系统

用户可以关注其他用户以跟踪他们的活动

关注关系

  • follow 表中跟踪
  • 允许用户在仪表板上查看关注用户 的活动
  • 启用对关注用户 活动的通知
  • 显示在用户个人资料上(关注者和被关注者计数)

来源

用户可见性

Gitea 允许用户通过三个级别来控制其可见性

可见性级别描述
公开对所有访问者可见(登录或未登录)
有限仅对登录用户可见
私有仅对管理员和组织团队成员可见

可见性会影响

  • 谁可以看到用户个人资料
  • 用户是否出现在搜索结果中
  • 组织及其仓库是否公开列出

来源

通知系统

用户会收到关于各种活动的通知

通知偏好可以按用户设置

  • EmailNotificationsEnabled:接收除自己的通知外的所有通知
  • EmailNotificationsOnMention:仅在被提及/@提及时接收通知
  • EmailNotificationsDisabled:无电子邮件通知
  • EmailNotificationsAndYourOwn:所有通知,包括您自己的

来源

管理功能

管理员拥有管理用户和组织的特殊能力

管理员用户管理包括

  • 创建具有特定权限和设置的用户
  • 修改用户账户详细信息和权限
  • 删除用户(带有数据清理选项)
  • 管理身份验证方法

来源

系统架构

用户和组织管理系统遵循 Gitea 的分层架构

此架构分离了

  • HTTP 请求处理(路由)
  • 业务逻辑(服务)
  • 数据访问和验证(模型)
  • 数据存储(数据库)

来源

API 集成

REST API 提供用于以编程方式管理用户和组织的端点

端点方法描述
/api/v1/usersGET列出用户
/api/v1/users/{username}GET获取用户信息
/api/v1/admin/usersPOST创建用户(仅管理员)
/api/v1/admin/users/{username}PATCH更新用户(仅管理员)
/api/v1/admin/users/{username}DELETE删除用户(仅管理员)
/api/v1/orgsGET列出组织
/api/v1/orgsPOST创建组织
/api/v1/orgs/{org}GET获取组织信息
/api/v1/orgs/{org}/membersGET列出组织成员
/api/v1/orgs/{org}/teamsGET列出组织团队

这些 API 端点支持用户和组织管理任务的自动化。

来源

配置选项

可以通过应用程序设置来配置用户和组织系统的行为

设置描述默认
DISABLE_REGULAR_ORG_CREATION普通用户是否可以创建组织false
DEFAULT_ORG_VISIBILITY新组织的默认可见性公开
DEFAULT_ORG_MEMBER_VISIBLE组织成员默认是否可见true
DEFAULT_USER_VISIBILITY新用户的默认可见性公开
DEFAULT_ALLOW_CREATE_ORGANIZATION用户默认是否可以创建组织true
EMAIL_DOMAIN_ALLOWLIST将用户注册限制在特定的电子邮件域
PASSWORD_COMPLEXITY密码复杂度要求

这些设置允许管理员控制用户和组织系统的默认行为和安全性。

来源