FastGPT 如何创建用户

  1. 创建密码
  2. 访问数据库创建用户
    1. 访问容器
    2. 增加新用户

FastGPT 开源版没有提供团队管理机用户管理功能,如果需要创建用户,只能通过直接操作数据库来实现。本文介绍如何创建用户密码。

假设我们要创建的用户是 user11 密码是 #demo01!@

创建密码

FastGPT 用户密码的加密规则如下:

  1. 使用 SHA-256 算法对 #demo01!@ 进行 hash 运算;
  2. 把 hash 值转成十六进制字符串;
  3. 把得到的字符串,再重复一次以上两个步骤;
    加密算法在源码中的位置: https://github.com/labring/FastGPT/tree/main/packages/global/common/string/tools.ts 第12行。

写一段测试代码来生成 #demo01!@ 的密码密文。

# 修改下面代码中的密码明文,执行测试方法生成密文。下面两个命令都可以
pnpm run test 
pnpm vitest test/cases/global/common/string/tools.test.ts

测试代码实例:

import { describe, expect, it } from 'vitest';
import { hashStr } from '@fastgpt/global/common/string/tools';

describe('hashStr', () => {
  test('should return a valid SHA-256 hash', () => {
    const input = '#demo01!@';
    const result = hashStr(hashStr(input));
    console.log(input + ': ' + result);
    // 验证结果是否为一个有效的 SHA-256 哈希值
    expect(typeof result).toBe('string');
    // SHA-256 哈希值的长度为 64 个字符
    expect(result.length).toBe(64);
    expect(/^[0-9a-f]{64}$/.test(result)).toBe(true);
  });
});

访问数据库创建用户

访问容器

sudo docker exec -it mongo bash
mongosh --username myusername --password mypassword --authenticationDatabase admin
use fastgpt
show tables

增加新用户

db.users.find().pretty();

# 增加新用户
db.users.insert({
    username: "user11",
    password: "73b30f4023367b065ad0e01d958fb0d25f43e179dc6eb63b45fb4d068bf98fb0",
    status: "active",
    avatar: "/icon/human.svg",
    balance: NumberInt("100000"),
    promotionRate: NumberInt("10"),
    timezone: "Asia/Shanghai",
    createTime: new ISODate()
});

# 创建新团队
db.teams.find().pretty();
db.teams.insert({
    name: "DevOpsTeam",
    ownerId: db.users.findOne({username:"user11"}, {_id:1})._id, // 新创建用户的ObjectId
    avatar: "/icon/logo.svg",
    createTime: new ISODate(),
});

# 将用户加入团队
db.team_members.find().pretty();
db.team_members.insert({
    teamId: db.teams.findOne({name:"DevOpsTeam"}, {_id:1})._id, // 团队的ObjectId
    userId: db.users.findOne({username:"user11"}, {_id:1})._id, // 用户的ObjectId
    name: "Owner",
    role: "owner",
    status: "active",
    createTime: new ISODate(),
    defaultTeam: true
});
# 通过ID新增团队成员
db.getCollection("team_members").insert({
    teamId: ObjectId("65916f3952ac39c5d10bb506"), // 团队的ObjectId
    userId: ObjectId("65916f1a52ac39c5d10bb505"), // 用户的ObjectId
    name: "Owner",
    role: "owner",
    status: "active",
    createTime: new ISODate(),
    defaultTeam: true
});

# 删除团队成员
db.team_members.deleteOne({ _id: ObjectId("67d944ac768f7fbbf20ca6b8")});

# 修改密码
db.users.updateOne(
    { username: "user11" },
    { $set: { password: "new_password_hash" } }
);
# 修改用户名
db.users.updateOne(
  {_id: ObjectId("67d9568b26b5ecb24ba83653")}, 
  {$set: {username: "user12"}
});

参考文档


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 ethan89@aliyun.com

赏

×

喜欢就点赞,疼爱就打赏