diff --git a/backend/src/controllers/SessionController.ts b/backend/src/controllers/SessionController.ts index 73b3646..3732b96 100644 --- a/backend/src/controllers/SessionController.ts +++ b/backend/src/controllers/SessionController.ts @@ -1,6 +1,6 @@ import { Request, Response } from "express"; -import AuthUserService from "../services/AuthUserSerice"; +import AuthUserService from "../services/UserServices/AuthUserSerice"; const store = async (req: Request, res: Response): Promise => { const { email, password } = req.body; diff --git a/backend/src/controllers/SettingController.ts b/backend/src/controllers/SettingController.ts new file mode 100644 index 0000000..1d7411d --- /dev/null +++ b/backend/src/controllers/SettingController.ts @@ -0,0 +1,41 @@ +import { Request, Response } from "express"; + +import AppError from "../errors/AppError"; + +import UpdateSettingService from "../services/SettingServices/UpdateSettingService"; +import ListSettingsService from "../services/SettingServices/ListSettingsService"; +// const { getIO } = require("../libs/socket"); + +export const index = async (req: Request, res: Response): Promise => { + if (req.user.profile !== "admin") { + throw new AppError("Only administrators can access resource.", 403); + } + + const settings = await ListSettingsService(); + + return res.status(200).json(settings); +}; + +export const update = async ( + req: Request, + res: Response +): Promise => { + if (req.user.profile !== "admin") { + throw new AppError("Only administrators can access this route.", 403); + } + const { settingKey: key } = req.params; + const { value } = req.body; + + const setting = await UpdateSettingService({ + key, + value + }); + + // const io = getIO(); + // io.emit("settings", { + // action: "update", + // setting + // }); + + return res.status(200).json(setting); +}; diff --git a/backend/src/controllers/UserController.ts b/backend/src/controllers/UserController.ts index f4ff0b0..11f77db 100644 --- a/backend/src/controllers/UserController.ts +++ b/backend/src/controllers/UserController.ts @@ -3,11 +3,11 @@ import { Request, Response } from "express"; import CheckSettingsHelper from "../helpers/CheckSettingsHelper"; import AppError from "../errors/AppError"; -import CreateUserService from "../services/CreateUserService"; -import ListUsersService from "../services/ListUsersService"; -import UpdateUserService from "../services/UpdateUserService"; -import FindUserService from "../services/FindUserService"; -import DeleteUserService from "../services/DeleteUserService"; +import CreateUserService from "../services/UserServices/CreateUserService"; +import ListUsersService from "../services/UserServices/ListUsersService"; +import UpdateUserService from "../services/UserServices/UpdateUserService"; +import FindUserService from "../services/UserServices/FindUserService"; +import DeleteUserService from "../services/UserServices/DeleteUserService"; export const index = async (req: Request, res: Response): Promise => { if (req.user.profile !== "admin") { diff --git a/backend/src/controllersOld/OldSessionController.js b/backend/src/controllersOld/SessionController.js similarity index 100% rename from backend/src/controllersOld/OldSessionController.js rename to backend/src/controllersOld/SessionController.js diff --git a/backend/src/controllersOld/OldSettingController.js b/backend/src/controllersOld/SettingController.js similarity index 100% rename from backend/src/controllersOld/OldSettingController.js rename to backend/src/controllersOld/SettingController.js diff --git a/backend/src/controllersOld/OldUserController.js b/backend/src/controllersOld/UserController.js similarity index 100% rename from backend/src/controllersOld/OldUserController.js rename to backend/src/controllersOld/UserController.js diff --git a/backend/src/routes/index.ts b/backend/src/routes/index.ts index 2d7b26b..42b4fdc 100644 --- a/backend/src/routes/index.ts +++ b/backend/src/routes/index.ts @@ -2,22 +2,22 @@ import { Router } from "express"; import userRoutes from "./userRoutes"; import authRoutes from "./authRoutes"; +import settingRoutes from "./settingRoutes"; // const TicketsRoutes = require("./routes/tickets"); // const MessagesRoutes = require("./routes/messages"); // const ContactsRoutes = require("./routes/contacts"); // const WhatsRoutes = require("./routes/whatsapp"); // const UsersRoutes = require("./routes/users"); -// const SettingsRoutes = require("./routes/settings"); const routes = Router(); routes.use(userRoutes); routes.use("/auth", authRoutes); +routes.use(settingRoutes); // routes.use(TicketsRoutes); // routes.use(MessagesRoutes); // routes.use(ContactsRoutes); // routes.use(WhatsRoutes); -// routes.use(SettingsRoutes); export default routes; diff --git a/backend/src/routes/routes/settings.js b/backend/src/routes/routes/settings.js deleted file mode 100644 index fc0fe65..0000000 --- a/backend/src/routes/routes/settings.js +++ /dev/null @@ -1,14 +0,0 @@ -const express = require("express"); -const isAuth = require("../../middleware/is-auth"); - -const SettingController = require("../../controllers/SettingController"); - -const routes = express.Router(); - -routes.get("/settings", isAuth, SettingController.index); - -// routes.get("/settings/:settingKey", isAuth, SettingsController.show); - -routes.put("/settings/:settingKey", isAuth, SettingController.update); - -module.exports = routes; diff --git a/backend/src/routes/settingRoutes.ts b/backend/src/routes/settingRoutes.ts new file mode 100644 index 0000000..625864a --- /dev/null +++ b/backend/src/routes/settingRoutes.ts @@ -0,0 +1,15 @@ +import { Router } from "express"; +import isAuth from "../middleware/isAuth"; + +import * as SettingController from "../controllers/SettingController"; + +const settingRoutes = Router(); + +settingRoutes.get("/settings", isAuth, SettingController.index); + +// routes.get("/settings/:settingKey", isAuth, SettingsController.show); + +// change setting key to key in future +settingRoutes.put("/settings/:settingKey", isAuth, SettingController.update); + +export default settingRoutes; diff --git a/backend/src/services/SettingServices/ListSettingsService.ts b/backend/src/services/SettingServices/ListSettingsService.ts new file mode 100644 index 0000000..c3e2a19 --- /dev/null +++ b/backend/src/services/SettingServices/ListSettingsService.ts @@ -0,0 +1,9 @@ +import Setting from "../../models/Setting"; + +const ListSettingsService = async (): Promise => { + const settings = await Setting.findAll(); + + return settings; +}; + +export default ListSettingsService; diff --git a/backend/src/services/SettingServices/UpdateSettingService.ts b/backend/src/services/SettingServices/UpdateSettingService.ts new file mode 100644 index 0000000..12f9a48 --- /dev/null +++ b/backend/src/services/SettingServices/UpdateSettingService.ts @@ -0,0 +1,26 @@ +import AppError from "../../errors/AppError"; +import Setting from "../../models/Setting"; + +interface Request { + key: string; + value: string; +} + +const UpdateSettingService = async ({ + key, + value +}: Request): Promise => { + const setting = await Setting.findOne({ + where: { key } + }); + + if (!setting) { + throw new AppError("No setting found with this ID.", 404); + } + + await setting.update({ value }); + + return setting; +}; + +export default UpdateSettingService; diff --git a/backend/src/services/AuthUserSerice.ts b/backend/src/services/UserServices/AuthUserSerice.ts similarity index 85% rename from backend/src/services/AuthUserSerice.ts rename to backend/src/services/UserServices/AuthUserSerice.ts index 7b12496..a6e36d3 100644 --- a/backend/src/services/AuthUserSerice.ts +++ b/backend/src/services/UserServices/AuthUserSerice.ts @@ -1,8 +1,8 @@ import { sign } from "jsonwebtoken"; -import User from "../models/User"; -import AppError from "../errors/AppError"; -import authConfig from "../config/auth"; +import User from "../../models/User"; +import AppError from "../../errors/AppError"; +import authConfig from "../../config/auth"; interface Request { email: string; diff --git a/backend/src/services/CreateUserService.ts b/backend/src/services/UserServices/CreateUserService.ts similarity index 93% rename from backend/src/services/CreateUserService.ts rename to backend/src/services/UserServices/CreateUserService.ts index cab10d3..531b935 100644 --- a/backend/src/services/CreateUserService.ts +++ b/backend/src/services/UserServices/CreateUserService.ts @@ -1,7 +1,7 @@ import * as Yup from "yup"; -import AppError from "../errors/AppError"; -import User from "../models/User"; +import AppError from "../../errors/AppError"; +import User from "../../models/User"; interface Request { email: string; diff --git a/backend/src/services/DeleteUserService.ts b/backend/src/services/UserServices/DeleteUserService.ts similarity index 76% rename from backend/src/services/DeleteUserService.ts rename to backend/src/services/UserServices/DeleteUserService.ts index ce63dcb..f076730 100644 --- a/backend/src/services/DeleteUserService.ts +++ b/backend/src/services/UserServices/DeleteUserService.ts @@ -1,5 +1,5 @@ -import User from "../models/User"; -import AppError from "../errors/AppError"; +import User from "../../models/User"; +import AppError from "../../errors/AppError"; const DeleteUserService = async (id: string): Promise => { const user = await User.findOne({ diff --git a/backend/src/services/FindUserService.ts b/backend/src/services/UserServices/FindUserService.ts similarity index 79% rename from backend/src/services/FindUserService.ts rename to backend/src/services/UserServices/FindUserService.ts index 2a5c350..868bf15 100644 --- a/backend/src/services/FindUserService.ts +++ b/backend/src/services/UserServices/FindUserService.ts @@ -1,5 +1,5 @@ -import User from "../models/User"; -import AppError from "../errors/AppError"; +import User from "../../models/User"; +import AppError from "../../errors/AppError"; const FindUserService = async (id: string): Promise => { const user = await User.findOne({ diff --git a/backend/src/services/ListUsersService.ts b/backend/src/services/UserServices/ListUsersService.ts similarity index 96% rename from backend/src/services/ListUsersService.ts rename to backend/src/services/UserServices/ListUsersService.ts index 83aed24..4430724 100644 --- a/backend/src/services/ListUsersService.ts +++ b/backend/src/services/UserServices/ListUsersService.ts @@ -1,5 +1,5 @@ import { Sequelize, Op } from "sequelize"; -import User from "../models/User"; +import User from "../../models/User"; interface Request { searchParam?: string; diff --git a/backend/src/services/UpdateUserService.ts b/backend/src/services/UserServices/UpdateUserService.ts similarity index 93% rename from backend/src/services/UpdateUserService.ts rename to backend/src/services/UserServices/UpdateUserService.ts index 0fccf9d..438b85b 100644 --- a/backend/src/services/UpdateUserService.ts +++ b/backend/src/services/UserServices/UpdateUserService.ts @@ -1,7 +1,7 @@ import * as Yup from "yup"; -import AppError from "../errors/AppError"; -import User from "../models/User"; +import AppError from "../../errors/AppError"; +import User from "../../models/User"; interface UserData { email?: string;