Actualización CRUD, módulo Usuarios
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
import { Request, Response } from "express";
|
||||
|
||||
import { UserService } from "./user.service";
|
||||
|
||||
const userService = new UserService();
|
||||
@ -10,57 +9,116 @@ export class UserController {
|
||||
req:Request,
|
||||
res:Response
|
||||
) {
|
||||
const users =
|
||||
await userService.getAll();
|
||||
try {
|
||||
const users = await userService.getAll();
|
||||
|
||||
res.json(users);
|
||||
|
||||
}catch(error){
|
||||
res.status(500).json({
|
||||
message:"Error al obtener usuarios",
|
||||
error
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async getById(
|
||||
req:Request,
|
||||
res:Response
|
||||
){
|
||||
const user =
|
||||
await userService.getById(
|
||||
try {
|
||||
|
||||
const user = await userService.getById(
|
||||
req.params.id as string
|
||||
);
|
||||
|
||||
if (!user) {
|
||||
return res.status(404).json({
|
||||
message: "Usuario no encontrado"
|
||||
});
|
||||
}
|
||||
|
||||
res.json(user);
|
||||
|
||||
} catch(error) {
|
||||
res.status(500).json({
|
||||
message:"Error al obtener usuarios",
|
||||
error
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async create (
|
||||
req:Request,
|
||||
res:Response
|
||||
) {
|
||||
try {
|
||||
const user =
|
||||
await userService.create(
|
||||
req.body
|
||||
);
|
||||
res.status(201).json(user);
|
||||
|
||||
}catch(error){
|
||||
res.status(500).json({
|
||||
message:"Error al crear usuario",
|
||||
error
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async update(
|
||||
req:Request,
|
||||
res:Response
|
||||
){
|
||||
try{
|
||||
const user =
|
||||
await userService.update(
|
||||
req.params.id as string,
|
||||
req.body
|
||||
);
|
||||
|
||||
res.json(user);
|
||||
if(!user){
|
||||
return res.status(404).json({
|
||||
message:"Usuario no encontrado"
|
||||
});
|
||||
}
|
||||
res.status(200).json(user);
|
||||
}catch(error){
|
||||
res.status(500).json({
|
||||
message:"Error al actualizar usuario",
|
||||
error
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
async detele (
|
||||
async delete (
|
||||
req:Request,
|
||||
res:Response
|
||||
) {
|
||||
await userService.delete(
|
||||
|
||||
try{
|
||||
const user = await userService.delete(
|
||||
req.params.id as string
|
||||
);
|
||||
|
||||
res.json({message: "Usuario eliminado"});
|
||||
if (!user){
|
||||
return res.status(404).json({
|
||||
message:"Usuario no encontrado"
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
message: "Usuario eliminado"});
|
||||
|
||||
}catch(error){
|
||||
res.status(500).json({
|
||||
message:"Error al eliminar usuario",
|
||||
error
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +1,16 @@
|
||||
import { ObjectId } from "mongoose";
|
||||
import { Types } from "mongoose";
|
||||
|
||||
export interface IUser {
|
||||
|
||||
employeeId: number;
|
||||
|
||||
userName: string;
|
||||
|
||||
passwordHash: string;
|
||||
roleId:ObjectId;
|
||||
|
||||
roleId: Types.ObjectId;
|
||||
|
||||
active: boolean;
|
||||
lastLogin:Date;
|
||||
|
||||
lastLogin?: Date;
|
||||
}
|
||||
@ -21,7 +21,7 @@ const userSchema = new mongoose.Schema({
|
||||
},
|
||||
|
||||
roleId:{
|
||||
type:mongoose.Types.ObjectId,
|
||||
type:mongoose.Schema.Types.ObjectId,
|
||||
ref:"Role",
|
||||
required:true
|
||||
},
|
||||
|
||||
@ -11,10 +11,10 @@ userRouter.get("/", authMiddleware, controller.getAll);
|
||||
|
||||
userRouter.get("/:id", authMiddleware, controller.getById);
|
||||
|
||||
userRouter.post("/", authMiddleware, controller.create);
|
||||
userRouter.post("/", controller.create);
|
||||
|
||||
userRouter.put("/:id", controller.update);
|
||||
userRouter.put("/:id", authMiddleware, controller.update);
|
||||
|
||||
userRouter.delete("/:id", controller.detele);
|
||||
userRouter.delete("/:id", authMiddleware, controller.delete);
|
||||
|
||||
export default userRouter;
|
||||
@ -1,5 +1,6 @@
|
||||
import bcrypt from "bcrypt";
|
||||
import userModel from "./user.model";
|
||||
import { IUser } from "./user.interface";
|
||||
|
||||
export class UserService {
|
||||
|
||||
@ -14,12 +15,12 @@ export class UserService {
|
||||
id:string
|
||||
) {
|
||||
return await userModel
|
||||
.find()
|
||||
.findById(id)
|
||||
.populate("roleId");
|
||||
}
|
||||
|
||||
async create(
|
||||
data:any
|
||||
data:IUser
|
||||
) {
|
||||
const passwordHash = await bcrypt.hash(
|
||||
data.passwordHash,
|
||||
@ -33,8 +34,14 @@ export class UserService {
|
||||
|
||||
async update(
|
||||
id:string,
|
||||
data:any
|
||||
data:Partial<IUser>
|
||||
) {
|
||||
if(data.passwordHash){
|
||||
data.passwordHash = await bcrypt.hash(
|
||||
data.passwordHash,
|
||||
10
|
||||
);
|
||||
}
|
||||
return await userModel.findByIdAndUpdate(
|
||||
id,
|
||||
data,
|
||||
|
||||
Reference in New Issue
Block a user