You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量为Mantis项目分配/添加100+用户?

批量将用户添加至Mantis项目的低风险解决方案

方案1:使用Mantis批量分配插件

在Mantis官方插件库中找支持批量添加用户到项目的插件(比如Project User Bulk Add或同类功能插件),这类插件基于Mantis原生逻辑操作,不会破坏数据结构,是风险最低的选择。

操作步骤:

  • 安装并启用对应插件
  • 从用户管理页面导出已创建用户的CSV列表,整理成包含username/user_id和目标project_id的格式
  • 在插件的批量操作界面上传该CSV,确认参数后执行分配

方案2:通过Mantis REST API编写批量脚本

利用Mantis官方REST API编写简单脚本,通过官方接口完成分配,比直接操作数据库安全得多。以下是Python示例:

  1. 准备信息:

    • 从项目设置页面URL获取目标project_id(比如manage_proj_edit_page.php?project_id=5中的5)
    • 在个人设置中生成Mantis API令牌
    • 整理已创建用户的用户名列表(可复用之前创建用户的CSV)
  2. 示例脚本:

import requests

# 替换为你的Mantis实例信息
MANTIS_BASE_URL = "http://你的EC2实例IP/mantisbt/api/rest/"
API_TOKEN = "你的Mantis API令牌"
TARGET_PROJECT_ID = 5  # 目标项目ID
USER_USERNAMES = ["user01", "user02", "user03"]  # 批量用户列表
ACCESS_LEVEL = 50  # 分配权限:10=Viewer,25=Updater,40=Developer,50=Reporter,55=Manager,70=Administrator

headers = {
    "Authorization": f"Bearer {API_TOKEN}",
    "Content-Type": "application/json"
}

for username in USER_USERNAMES:
    # 获取用户ID
    user_res = requests.get(f"{MANTIS_BASE_URL}/users/username/{username}", headers=headers)
    if user_res.status_code != 200:
        print(f"跳过用户 {username}: 未找到或API请求失败")
        continue
    
    user_id = user_res.json()["id"]
    # 分配用户到项目
    assign_data = {
        "user_id": user_id,
        "project_id": TARGET_PROJECT_ID,
        "access_level": ACCESS_LEVEL
    }
    assign_res = requests.post(f"{MANTIS_BASE_URL}/project_user", json=assign_data, headers=headers)
    
    if assign_res.status_code == 201:
        print(f"成功分配 {username} 到目标项目")
    else:
        print(f"分配 {username} 失败: {assign_res.text}")

执行前先拿1-2个用户测试,确认权限和参数无误后再批量运行。

方案3:安全的数据库操作(仅万不得已时使用)

如果以上方案都不可行,直接操作数据库前必须先完整备份数据库,然后用事务执行,避免数据损坏。

Mantis中用户与项目的关联表为mantis_project_user_table,核心字段:project_id(项目ID)、user_id(用户ID)、access_level(权限等级)。

操作示例:

  1. 备份数据库:
mysqldump -u 数据库用户名 -p 你的Mantis数据库名 > mantis_backup_$(date +%Y%m%d).sql
  1. 导入用户列表并批量关联:
-- 创建临时表存储待分配的用户名(假设CSV路径为/var/lib/mysql-files/users.csv,仅含username列)
CREATE TEMPORARY TABLE temp_batch_users (username VARCHAR(255) NOT NULL);
LOAD DATA INFILE '/var/lib/mysql-files/users.csv' 
INTO TABLE temp_batch_users 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\n';

-- 开始事务,批量插入关联记录(替换PROJECT_ID和权限等级)
START TRANSACTION;
INSERT INTO mantis_project_user_table (project_id, user_id, access_level)
SELECT 5, u.id, 50 
FROM mantis_user_table u
JOIN temp_batch_users tbu ON u.username = tbu.username;

-- 检查插入行数是否符合预期,确认无误后提交,否则执行ROLLBACK
COMMIT;

注意:确保CSV路径符合MySQL的secure_file_priv配置,且先在测试环境验证SQL逻辑。

内容的提问来源于stack exchange,提问作者samsepiol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:20:16