fix users database bugs

master
aliMohtarami 1 month ago
parent a864ed9999
commit fc67949151
  1. 1
      migrations/20250104074851-create-user.js
  2. 2
      migrations/20250105063054-create-cart.js
  3. 4
      src/app.module.ts
  4. 14
      src/shop/shop.controller.ts
  5. 10
      src/shop/shop.module.ts
  6. 8
      src/shop/shop.service.ts
  7. 8
      src/users/entities/user.entity.ts
  8. 6
      src/users/users.controller.ts
  9. 10
      src/users/users.module.ts
  10. 4
      src/users/users.service.ts

@ -22,6 +22,7 @@ module.exports = {
role: { role: {
type: Sequelize.ENUM('admin', 'user'), type: Sequelize.ENUM('admin', 'user'),
allowNull: false, allowNull: false,
defaultValue: 'user',
}, },
firstName: { firstName: {
type: Sequelize.STRING, type: Sequelize.STRING,

@ -32,7 +32,7 @@ module.exports = {
type: Sequelize.INTEGER, type: Sequelize.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: 'Invoices', // نام جدول Invoices model: 'Invoices',
key: 'id', key: 'id',
}, },
onDelete: 'CASCADE', onDelete: 'CASCADE',

@ -5,7 +5,7 @@ import { ConfigModule } from "@nestjs/config";
import { SequelizeModule } from "@nestjs/sequelize"; import { SequelizeModule } from "@nestjs/sequelize";
import { databaseConfig } from "../config/database.config"; import { databaseConfig } from "../config/database.config";
import { UsersModule } from './users/users.module'; import { UsersModule } from './users/users.module';
import { ProductsModule } from './shop/shop.module'; import { ShopModule } from './shop/shop.module';
@Module({ @Module({
@ -15,7 +15,7 @@ import { ProductsModule } from './shop/shop.module';
}), }),
SequelizeModule.forRoot(databaseConfig), SequelizeModule.forRoot(databaseConfig),
UsersModule, UsersModule,
ProductsModule, ShopModule,
], ],
controllers: [AppController], controllers: [AppController],

@ -1,13 +1,13 @@
import { Controller, Get, Post, Body, Param, Delete, Query, Put, UseGuards, Request, Patch, HttpException, HttpStatus } from "@nestjs/common"; import { Controller, Get, Post, Body, Param, Delete, Query, Put, UseGuards, Request, Patch, HttpException, HttpStatus } from "@nestjs/common";
import { InjectModel } from "@nestjs/sequelize";
import { ShopService } from "./shop.service"; import { ShopService } from "./shop.service";
import { Product } from "./entities/product.entity";
import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto";
import { RoleGuard } from "src/users/guard/role.guard"; import { RoleGuard } from "src/users/guard/role.guard";
import { AddToCartDto } from "./dto/cart/add-to-cart.dto";
import { JwtAuthGuard } from "src/users/guard/auth.guard"; import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto";
import { UpdateCartDto } from "./dto/cart/update-cart.dto"; import { UpdateCartDto } from "./dto/cart/update-cart.dto";
import { InjectModel } from "@nestjs/sequelize"; import { AddToCartDto } from "./dto/cart/add-to-cart.dto";
import { Product } from "./entities/product.entity";
import { Transaction } from "./entities/transaction.entity"; import { Transaction } from "./entities/transaction.entity";
import { Payment } from "./entities/payment.entity"; import { Payment } from "./entities/payment.entity";
@ -54,7 +54,7 @@ export class ShopController {
//delete a product (admin) //delete a product (admin)
@UseGuards(RoleGuard) @UseGuards(RoleGuard)
@Delete("product/:id") @Delete("product/:id")
async remove(@Param("id") id: string): Promise<{ message: string }> { async remove(@Param("id") id: string){
return this.shopService.remove(id); return this.shopService.remove(id);
} }
////////////////////////////////////////cart//////////////////////////////////////// ////////////////////////////////////////cart////////////////////////////////////////
@ -211,7 +211,7 @@ export class ShopController {
async getInvoices() { async getInvoices() {
return this.shopService.getInvoices(); return this.shopService.getInvoices();
} }
//get specific user invoices //get specific user invoices (admin)
@UseGuards(RoleGuard) @UseGuards(RoleGuard)
@Get('invoice/:id') @Get('invoice/:id')
async getUserInvoice(@Param('id') id:number) { async getUserInvoice(@Param('id') id:number) {

@ -1,12 +1,12 @@
import { Module } from "@nestjs/common"; import { Module } from "@nestjs/common";
import { JwtModule } from "@nestjs/jwt";
import { SequelizeModule } from "@nestjs/sequelize";
import { ShopService } from "./shop.service"; import { ShopService } from "./shop.service";
import { ShopController } from "./shop.controller"; import { ShopController } from "./shop.controller";
import { SequelizeModule } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
import { RoleGuard } from "src/users/guard/role.guard"; import { RoleGuard } from "src/users/guard/role.guard";
import { JwtModule } from "@nestjs/jwt";
import { Cart } from "./entities/cart.entity";
import { JwtAuthGuard } from "src/users/guard/auth.guard"; import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { Product } from "./entities/product.entity";
import { Cart } from "./entities/cart.entity";
import { Wallet } from "./entities/wallet.entity"; import { Wallet } from "./entities/wallet.entity";
import { Transaction } from "./entities/transaction.entity"; import { Transaction } from "./entities/transaction.entity";
import { Payment } from "./entities/payment.entity"; import { Payment } from "./entities/payment.entity";
@ -23,4 +23,4 @@ import { Invoice } from "./entities/invoice.entity";
controllers: [ShopController], controllers: [ShopController],
providers: [ShopService, RoleGuard, JwtAuthGuard], providers: [ShopService, RoleGuard, JwtAuthGuard],
}) })
export class ProductsModule {} export class ShopModule {}

@ -1,14 +1,14 @@
import { Injectable } from "@nestjs/common"; import { Injectable } from "@nestjs/common";
import { HttpException, HttpStatus } from "@nestjs/common";
import { InternalServerErrorException } from "@nestjs/common";
import { Op } from "sequelize";
import { InjectModel } from "@nestjs/sequelize"; import { InjectModel } from "@nestjs/sequelize";
import { Product } from "./entities/product.entity";
import { CreateProductDto } from "./dto/products/create-product.dto"; import { CreateProductDto } from "./dto/products/create-product.dto";
import { UpdateProductDto } from "./dto/products/update-product.dto"; import { UpdateProductDto } from "./dto/products/update-product.dto";
import { Op } from "sequelize"; import { Product } from "./entities/product.entity";
import { HttpException, HttpStatus } from "@nestjs/common";
import { Cart } from "./entities/cart.entity"; import { Cart } from "./entities/cart.entity";
import { Wallet } from "./entities/wallet.entity"; import { Wallet } from "./entities/wallet.entity";
import { Transaction } from "./entities/transaction.entity"; import { Transaction } from "./entities/transaction.entity";
import { InternalServerErrorException } from "@nestjs/common";
import { Invoice } from "./entities/invoice.entity"; import { Invoice } from "./entities/invoice.entity";
const ZarinpalCheckout = require("zarinpal-checkout"); const ZarinpalCheckout = require("zarinpal-checkout");

@ -10,6 +10,7 @@ export class User extends Model<User> {
@Column({ @Column({
type: DataType.ENUM("admin", "user"), type: DataType.ENUM("admin", "user"),
defaultValue: "user",
allowNull: false, allowNull: false,
}) })
role: string; role: string;
@ -23,7 +24,7 @@ export class User extends Model<User> {
@Column({ unique: true }) @Column({ unique: true })
username: string; username: string;
@Column({ unique: true }) @Column({ unique: true, allowNull: false })
phoneNumber: string; phoneNumber: string;
@Column({ @Column({
@ -37,9 +38,8 @@ export class User extends Model<User> {
allowNull: true, allowNull: true,
}) })
refreshToken: string; refreshToken: string;
} }
export enum Gender { export enum Gender {
Male = 'male', Male = "male",
Female = 'female', Female = "female",
} }

@ -6,17 +6,16 @@ import { LoginUserDto } from "./dto/login-user.dto";
import { JwtAuthGuard } from "src/users/guard/auth.guard"; import { JwtAuthGuard } from "src/users/guard/auth.guard";
import { UpdateUserDto } from "./dto/update-user.dto"; import { UpdateUserDto } from "./dto/update-user.dto";
import { RoleGuard } from "src/users/guard/role.guard"; import { RoleGuard } from "src/users/guard/role.guard";
import { plainToInstance } from "class-transformer";
@Controller("user") @Controller("user")
export class UsersController { export class UsersController {
constructor(private readonly usersService: UsersService) {} constructor(private readonly usersService: UsersService) {}
//register as user //register
@Post("register") @Post("register")
async register(@Body() createUserDto: CreateUserDto) { async register(@Body() createUserDto: CreateUserDto) {
return this.usersService.register(createUserDto); return this.usersService.register(createUserDto);
} }
//login as user //login
@Post("login") @Post("login")
async login(@Body() loginUserDto: LoginUserDto) { async login(@Body() loginUserDto: LoginUserDto) {
return this.usersService.login(loginUserDto); return this.usersService.login(loginUserDto);
@ -58,7 +57,6 @@ export class UsersController {
){ ){
return this.usersService.findAll(page, limit); return this.usersService.findAll(page, limit);
} }
// get a specific user info (admin) // get a specific user info (admin)
@UseGuards(RoleGuard) @UseGuards(RoleGuard)
@Get("userinfo/:id") @Get("userinfo/:id")

@ -1,15 +1,13 @@
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { SequelizeModule } from '@nestjs/sequelize'; import { SequelizeModule } from '@nestjs/sequelize';
import { User } from './entities/user.entity';
import { ConfigModule, ConfigService } from '@nestjs/config'; import { ConfigModule, ConfigService } from '@nestjs/config';
import { PassportModule } from '@nestjs/passport';
import { JwtModule } from '@nestjs/jwt'; import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { User } from './entities/user.entity';
import { JwtAuthGuard } from 'src/users/guard/auth.guard'; import { JwtAuthGuard } from 'src/users/guard/auth.guard';
@Module({ @Module({
imports: [SequelizeModule.forFeature([User]), imports: [SequelizeModule.forFeature([User]),
PassportModule.register({ defaultStrategy: 'jwt' }), PassportModule.register({ defaultStrategy: 'jwt' }),

@ -7,8 +7,6 @@ import { ConfigService } from "@nestjs/config";
import { CreateUserDto } from "./dto/create-user.dto"; import { CreateUserDto } from "./dto/create-user.dto";
import { LoginUserDto } from "./dto/login-user.dto"; import { LoginUserDto } from "./dto/login-user.dto";
import { UpdateUserDto } from "./dto/update-user.dto"; import { UpdateUserDto } from "./dto/update-user.dto";
import e from "express";
import { IsInstance } from "class-validator";
@Injectable() @Injectable()
export class UsersService { export class UsersService {
@ -168,7 +166,7 @@ export class UsersService {
try { try {
const user = await this.userModel.findOne({ const user = await this.userModel.findOne({
where: { id: userId }, where: { id: userId },
attributes: { exclude: ["password"] }, attributes: { exclude: ["password","refreshToken"] },
}); });
if (!user) { if (!user) {
throw new HttpException("User not found.", HttpStatus.NOT_FOUND); throw new HttpException("User not found.", HttpStatus.NOT_FOUND);

Loading…
Cancel
Save