Coder Social home page Coder Social logo

buqiyuan / nest-admin Goto Github PK

View Code? Open in Web Editor NEW
1.4K 16.0 340.0 1.31 MB

NestJS CRUD for RESTful API 使用 NestJS + Mysql + Typeorm + Redis + JWT + Swagger 企业中后台管理系统项目RBAC权限管理(细粒度到按钮)、实现单点登录等...

Home Page: https://vue3-antdv-admin.pages.dev

License: MIT License

Shell 1.19% JavaScript 0.27% Dockerfile 0.47% PLpgSQL 16.99% TypeScript 80.99% Handlebars 0.09%
nestjs vue3-typescript mysql nestjs-template typeorm nestjs-backend restful-api nestjs-starter-template rabc admin

nest-admin's Introduction

nest-admin's People

Contributors

buqiyuan avatar chaesv587 avatar eamd-wq avatar gslnzfq avatar haiziohhue avatar kumv-net avatar nnnnzs avatar qiu-jun avatar rankanin avatar stx0821 avatar wuzhangting avatar yz1311 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nest-admin's Issues

refreshToken问题

  async refreshToken(accessToken: AccessTokenEntity) {
    const { user, refreshToken } = accessToken

    if (refreshToken) {
      const now = dayjs()
      // 判断refreshToken是否过期
      if (now.isAfter(refreshToken.expired_at))
        return null

      const roleIds = await this.roleService.getRoleIdsByUser(user.id)
      const roleValues = await this.roleService.getRoleValues(roleIds)

      // 如果没过期则生成新的access_token和refresh_token
      const token = await this.generateAccessToken(user.id, roleValues)

      await accessToken.remove()
      return token
    }
    return null
  }

refreshToken没有相关接口,refreshToken校验也只用了过期时间匹配,

docker compose部署日志【logs】没有挂载到宿主机

Bug report(问题描述)

使用docker compose部署了项目
日志 【logs】 却还存在于容器中

Screenshot or Gif(截图或动态图)

image

Other relevant information(格外信息)

  • Your OS:windows 11
  • Node.js version: 18最新版
  • Mysql version: 通过docker compose安装
  • Redis version: 通过docker compose安装

项目方便集成安全方面的库吗?

Feature request(新功能建议)

helmet和express rate limit都是express. js的库,而大佬你的这个项目底层是基于fastify的,请问fastify有类似的库吗?或者整个项目底层切换成express便捷吗?感谢

表格搜索中的时间范围搜索未生效

表格搜索中的时间范围搜索未生效 如登录日志的时间查询

Bug report(问题描述)

Steps to reproduce(问题复现步骤)

1.进入登录日志查询 选择一个时间范围,查询条件不生效

Screenshot or Gif(截图或动态图)

image

Link to minimal reproduction(最小可在线还原demo)

https://buqiyuan.github.io/vue3-antdv-admin/#/system/monitor/login-log

Other relevant information(格外信息)

在api接口文档中 传入的time为一个字符串数组,值为time,
表格中发起请求的地址为 https://nest-api.buqiyuan.site/api/system/log/login/list?time[]=Tue,+07+May+2024+07:32:58+GMT&time[]=Mon,+13+May+2024+07:32:58+GMT&page=1&pageSize=10

nestjs 解析查询参数后 值为’time[]‘, 关闭查询参数过滤后 通过dto['time[]'] 能获取到该数组。

通过Dockerfile不能正常部署

Bug report(问题描述)

通过 docker build -t web-api . 不能正常构建镜像。
原配置文件没做变更

Steps to reproduce(问题复现步骤)

cd $workspace
docker build -t web-api

Screenshot or Gif(截图或动态图)

image

Link to minimal reproduction(最小可在线还原demo)

Other relevant information(格外信息)

  • Your OS: Ubutun 22.04
  • Node.js version: 18.20.4
  • Mysql version: None
  • Redis version: None

本地启动找不到包

Bug report(问题描述)

Steps to reproduce(问题复现步骤)

  1. 使用pnpm dev的时候 报错
  2. 我根据报错路径去查找,发现是有这个文件,但是运行的时候没有build进去
  3. 以下是报错信息
    Error: Cannot find module '/Users/后端/node项目/nest-admin/src/common/dto/pager.dto'
    Require stack:
  • /Users/后端/node项目/nest-admin/dist/common/dto/pager.dto.js
  • /Users/后端/node项目/nest-admin/dist/modules/system/role/role.controller.js
  • /Users/后端/node项目/nest-admin/dist/modules/system/role/role.module.js
  • /Users/后端/node项目/nest-admin/dist/modules/system/menu/menu.module.js
  • /Users/后端/node项目/nest-admin/dist/modules/user/user.module.js
  • /Users/后端/node项目/nest-admin/dist/modules/system/log/log.module.js
  • /Users/后端/node项目/nest-admin/dist/modules/auth/auth.module.js
  • /Users/后端/node项目/nest-admin/dist/app.module.js
  • /Users/后端/node项目/nest-admin/dist/main.js
    at Function.Module.resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Function.Module.load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Function.OPENAPI_METADATA_FACTORY (/Users/后端/node项目/nest-admin/dist/common/dto/pager.dto.js:29:234)
    at /Users/后端/node项目/nest-admin/node_modules/.pnpm/@nestjs[email protected]
    @fastify[email protected]
    @nestjs[email protected]
    @[email protected]_class-t_rc635vf3pb3uuk3dyc4mkw3f7a/node_modules/@nestjs/swagger/dist/decorators/helpers.js:48:241
    at DecorateProperty (/Users/后端/node项目/nest-admin/node_modules/.pnpm/[email protected]/node_modules/reflect-metadata/Reflect.js:561:33)
    at Reflect.decorate (/Users/后端/node项目/nest-admin/node_modules/.pnpm/[email protected]/node_modules/reflect-metadata/Reflect.js:136:24)
    at __decorate (/Users/后端/node项目/nest-admin/dist/common/dto/pager.dto.js:4:92)
    at Object. (/Users/后端/node项目/nest-admin/src/common/dto/pager.dto.ts:19:3)

Screenshot or Gif(截图或动态图)

Snipaste_2024-05-09_22-30-57

Link to minimal reproduction(最小可在线还原demo)

Other relevant information(格外信息)

  • Your OS: macos
  • Node.js version: v18.18.0
  • Mysql version: 8.3
  • Redis version: 7.2.4
  • pnpm version:8.10.2

问题请教-关于生产环境数据库更新

如何优雅地更新生产环境数据库
我的部署方式是用 docker compose 服务器上只有docker compose
我本地的项目执行打包 并将镜像包传到镜像仓库 然后再服务器上拉取部署

目前业务中修改了一些表的字段 想要同步到生产环境
看到了迁移的命令和方法但是有点疑惑

  1. 迁移文件生成在src文件夹中,那么部署的时候这些迁移文件是会带到生产环境的
  2. 我改如何触发这些迁移文件,难道要进到容器内部去执行命令吗 还是有什么更加优雅的方式
    虚心求教

sql文件无法导入

image

Bug report(问题描述)

Steps to reproduce(问题复现步骤)

Screenshot or Gif(截图或动态图)

Link to minimal reproduction(最小可在线还原demo)

Other relevant information(格外信息)

  • Your OS:
  • Node.js version:
  • Mysql version:
  • Redis version:

在线用户列表

Feature request(新功能建议)

image

nest-admin是否需要加一个在线用户列表?,就像登录日志那样的表格。但是貌似nest-admin没有提供个人设置模块

作者本地的mailService能用吗?我调用send方法一直报错参数看来都是正确的

Bug report(问题描述)

作者本地的mailService能用吗?我调用send方法一直报错参数看来都是正确的

Steps to reproduce(问题复现步骤)

this.mailerService.sendMail({
to,
subject,
text: content,
})

报错信息:[Nest] 9396 - 2024/05/14 15:23:15 ERROR [Catch] TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined

Screenshot or Gif(截图或动态图)

Link to minimal reproduction(最小可在线还原demo)

Other relevant information(格外信息)

  • Your OS:
  • Node.js version:
  • Mysql version:
  • Redis version:

网盘有个小Bug

src/modules/netdisk/overview/overview.service.ts

blob_io的参数是$bucket,但是space和count是bucket,导致如果有多个bucket的时候space和count统计出来是所有bucket的数据

  getStatisticUrl(type: string, queryParams = {}) {
    const bucketKey = type === 'blob_io' ? '$bucket' : 'bucket'
    const defaultParams = {
      [bucketKey]: this.qiniuConfig.bucket,
      g: 'day',
    }
    const searchParams = new URLSearchParams({ ...defaultParams, ...queryParams })
    return decodeURIComponent(`${OSS_API}/v6/${type}?${searchParams}`)
  }

Axios 配置

Feature request(新功能建议)

Axios应该整个原生响应都可以配置好点吧,现在要对原生res做处理要改的地方有点多(比如我要获取流)。

定时任务bug

Bug report(问题描述)

定时任务按【时间间隔】设置任务,修改创建成功后执行正常;此时编辑时间间隔再保存;定时任务执行一次后就会自动关闭

Steps to reproduce(问题复现步骤)

Screenshot or Gif(截图或动态图)

image

Link to minimal reproduction(最小可在线还原demo)

Other relevant information(格外信息)

  • Your OS: windows 11
  • Node.js version: 18的最新版
  • Mysql version:docker compose文件创建
  • Redis version:docker compose文件创建

获取登录图片验证码API报500错误

后台运行起来,获取登录图片验证码API报500错误

你好,我将后台程序运行起来,结果前台登录报500错误,具体错误见如下截图:

image
image

@buqiyuan 你知道这个什么原因导致的吗,望看到回复下,谢谢

Mac m1. docker运行报错 [ioredis] Unhandled error event: ReplyError: WRONGPASS invalid username-password pair or user is disabled.

大佬你好,我使用Windows的docker跑项目,没发现报错,使用Macm1 的docker跑的时候报一下错误,就单单按照文档上的步骤跑的。

ioredis官网说redis版本高于6,要设置username,我把docker里的redis降到了5版本,还是报错

没搞懂为什么window和Mac运行不一样

[ioredis] Unhandled error event: ReplyError: WRONGPASS invalid username-password pair or user is disabled.

image

1

Feature request(新功能建议)

使用crud工厂出来的swagger数据模型统一被命名为dto

Bug report(问题描述)

多个使用basecurd工厂时,会导致重复命名为dto然后数据模型丢失,只保留一个

将工厂中的@ApiBody({ type: Dto })改为dto可解决

Steps to reproduce(问题复现步骤)

Screenshot or Gif(截图或动态图)

jiejueqian
jiejue

Link to minimal reproduction(最小可在线还原demo)

@ApiTags('goods')
@ApiSecurityAuth()
export class GoodController extends BaseCrudFactory({ entity: GoodEntity, dto: GoodDto }) {
  constructor(private readonly service: GoodService) {
    super(service)
  }
}
@ApiTags('orders')
@ApiSecurityAuth()
export class OrderController extends BaseCrudFactory({ entity: OrderEntity, dto: OrderDto }) {
  constructor(
    private service: OrderService,
  ) {
    super(service)
  }
}

Other relevant information(格外信息)

  • Your OS:
  • Node.js version:
  • Mysql version:
  • Redis version:

node mina.js 出错,请问如何解决?

[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] SharedModule dependencies initialized +1ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] MailerModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] PassportModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] SystemModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] HttpModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] ThrottlerModule dependencies initialized +1ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] RouterModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] ConfigModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 LOG [InstanceLoader] ConfigModule dependencies initialized +0ms
[Nest] 15984 - 2024/02/08 11:25:38 ERROR [ExceptionHandler] JwtStrategy requires a secret or key
TypeError: JwtStrategy requires a secret or key
at new JwtStrategy (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm\[email protected]\node_modules\passport-jwt\lib\strategy.js:45:15)
at new MixinStrategy (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+passport@10.0.3_@nestjs[email protected][email protected]\node_modules@nestjs\passport\dist\passport\passport.strategy.js:32:13)
at new JwtStrategy (E:\dev\YorkPorn\nest-admin-main2\dist\modules\auth\strategies\jwt.strategy.js:24:9)
at Injector.instantiateClass (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\injector.js:365:19)
at callback (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\injector.js:65:45)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Injector.resolveConstructorParams (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\injector.js:144:24)
at async Injector.loadInstance (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\injector.js:70:13)
at async Injector.loadProvider (E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\injector.js:97:9)
at async E:\dev\YorkPorn\nest-admin-main2\node_modules.pnpm@nestjs+core@10.3.2_@nestjs+common@10.3.2_@nestjs[email protected][email protected][email protected]\node_modules@nestjs\core\injector\instance-loader.js:56:13

大佬有关form表单接收数据的问题

Feature request(新功能建议)

大佬,能不能写一个例子来接收form-data表单的数据,就是那种包含文件流跟表单数据的
包含file类型的文件跟jsonstring类型的表单数据,折腾了好几天搞不定.
以前使用的nest+express很容易实现,但是现在项目中使用nest+ Fastify有点搞不定

OpenAPI 关于200的响应模型

Bug report(问题描述)

在学习源码的时候发现对OpenAPI的响应做了封装。其中200的响应是在哪儿实现的呢?

Steps to reproduce(问题复现步骤)

None

Screenshot or Gif(截图或动态图)

微信截图_20240604145409

Link to minimal reproduction(最小可在线还原demo)

None

Other relevant information(格外信息)

  • Your OS:
  • Node.js version:
  • Mysql version:
  • Redis version:

新增的所有菜单,使用超管角色登录,接口列表报无权限

新增的菜单,接口列表报无权限

表里新建了一个用户列表菜单,api/admin/sys/dept/list 【接口报无权限,请联系管理员申请权限 】错误

  • 菜单表
  • 用户表
  • 用户角色表
  • 在事件模块controller列表

我新建的事件模块或者其他所有菜单,我使用的超管角色,为啥模块都是接口无权限啊,我想在无@authorize()时接口也可以正常使用

比如:

  @Post('list')
  async info_list(@Body() dto: InfoEventManagementDto): Promise<responResult> {
    return await this.EventManagementService.info_list(dto);
  }

这样接口也能正常不报无权限问题

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.