diff --git a/models/users.js b/models/users.js index a5ba08f..605d3d3 100644 --- a/models/users.js +++ b/models/users.js @@ -64,7 +64,12 @@ const Users = sequelize.define( disk_size: { type: DataTypes.DOUBLE, allowNull: true, - defaultValue: 0, + defaultValue: 100000000, + }, + used_capacity: { + type: DataTypes.DOUBLE, + allowNull: true, + defaultValue: 100000000, }, is_admin: { type: DataTypes.BOOLEAN, diff --git a/routers/users.js b/routers/users.js index 9a07d72..86657ff 100644 --- a/routers/users.js +++ b/routers/users.js @@ -2,10 +2,15 @@ const Router = require("koa-router"); const redisClient = require("../redis"); const bcrypt = require("bcrypt"); const jwt = require("jsonwebtoken"); +const { filesize } = require("filesize"); const checkAdminAuth = require("../middleware/checkAdminAuth"); require("dotenv").config({ path: ".env.local" }); const Users = require("../models/users"); -const { USERS_LOGIN_POST, USER_REST_ID } = require("../types/schema/users"); +const { + USERS_LOGIN_POST, + USER_REST_PARAMS_PATCH, +} = require("../types/schema/users"); + const { validateBody, validateParams } = require("../types"); const { USER_STATUS, USER_ACTION_TYPES } = require("../constants/users"); @@ -77,9 +82,18 @@ router.post("/users", validateBody(USERS_LOGIN_POST), async (ctx) => { const { id, disk_size, status, created_at, login_at } = await Users.create({ username, password: hashedPassword, + created_by: ctx.state?.user?.id ?? null, }); + ctx.status = 201; - ctx.body = { id, disk_size, status, created_at, username, login_at }; + ctx.body = { + id, + disk_size: filesize(disk_size), + status, + created_at, + username, + login_at, + }; } catch (error) { console.error(error); ctx.status = 500; @@ -94,7 +108,10 @@ router.get("/users/info", async (ctx) => { }); if (user) { ctx.status = 200; // 确保状态码为 200 - ctx.body = user.dataValues; + ctx.body = { + ...user.dataValues, + disk_size: filesize(user.dataValues?.disk_size), + }; return; } if (!user) { @@ -139,7 +156,7 @@ router.delete("/sessions", async (ctx) => { // 禁用用户 router.patch( "/users/:id/:action", - validateParams(USER_REST_ID), + validateParams(USER_REST_PARAMS_PATCH), checkAdminAuth, async (ctx) => { const { id, action } = ctx.params; diff --git a/types/schema/users.js b/types/schema/users.js index f158645..4bb7aa0 100644 --- a/types/schema/users.js +++ b/types/schema/users.js @@ -6,14 +6,19 @@ const USERS_LOGIN_POST = Joi.object({ password: Joi.string().required(), }); -const USER_REST_ID = Joi.object({ +const USER_REST_PARAMS_PATCH = Joi.object({ id: Joi.string().required(), action: Joi.string() .valid(...Object.keys(USER_ACTION_TYPES)) .required(), }); +const USER_REST_ID = Joi.object({ + id: Joi.string().required(), +}); + module.exports = { - USER_REST_ID, + USER_REST_PARAMS_PATCH, USERS_LOGIN_POST, + USER_REST_ID, };