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
    };
});
