FastGPT 开源版没有提供团队管理机用户管理功能,如果需要创建用户,只能通过直接操作数据库来实现。本文介绍如何创建用户密码。
假设我们要创建的用户是 user11 密码是 #demo01!@
创建密码
FastGPT 用户密码的加密规则如下:
- 使用 SHA-256 算法对
#demo01!@进行 hash 运算; - 把 hash 值转成十六进制字符串;
- 把得到的字符串,再重复一次以上两个步骤;
加密算法在源码中的位置: 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