import define from "../../define.js"; // import bcrypt from "bcryptjs"; import rndstr from "rndstr"; import { Users, UserProfiles } from "../../../../models/index.js"; import { hashPassword } from "../../../../misc/password.js"; export const meta = { tags: [ "admin" ], requireCredential: true, requireModerator: true, res: { type: "object", optional: false, nullable: false, properties: { password: { type: "string", optional: false, nullable: false, minLength: 8, maxLength: 8 } } } }; export const paramDef = { type: "object", properties: { userId: { type: "string", format: "misskey:id" } }, required: [ "userId" ] }; export default define(meta, paramDef, async (ps)=>{ const user = await Users.findOneBy({ id: ps.userId }); if (user == null) { throw new Error("user not found"); } if (user.isAdmin) { throw new Error("cannot reset password of admin"); } const passwd = rndstr("a-zA-Z0-9", 8); // Generate hash of password // const hash = bcrypt.hashSync(passwd); const hash = await hashPassword(passwd); await UserProfiles.update({ userId: user.id }, { password: hash }); return { password: passwd }; });