diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6e3f676..617fe18 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,16 +5,13 @@ on: branches: [ "main", "develop" ] pull_request: branches: [ "main", "develop" ] + workflow_dispatch: jobs: unittcms-test: runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20.x] - steps: - uses: actions/checkout@v4 @@ -26,9 +23,11 @@ jobs: cache: 'npm' - name: Install dependencies run: npm ci - - name: Format code - run: npm run format - - name: Run unit tests + - name: Format check + run: npm run format:check + - name: ESLint check + run: npm run lint + - name: Unit tests run: npm run test # frontend diff --git a/backend/config/config.js b/backend/config/config.js index d514651..962fb95 100644 --- a/backend/config/config.js +++ b/backend/config/config.js @@ -1,5 +1,4 @@ const path = require('path'); - const databasePath = path.resolve(__dirname, '../database/database.sqlite'); module.exports = { diff --git a/backend/middleware/auth.js b/backend/middleware/auth.js index 04b5e8d..daf6e53 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.js @@ -1,6 +1,6 @@ const jwt = require('jsonwebtoken'); -const { roles, defaultDangerKey } = require('../routes/users/authSettings'); const { DataTypes } = require('sequelize'); +const { roles, defaultDangerKey } = require('../routes/users/authSettings'); const defineUser = require('../models/users'); function authMiddleware(sequelize) { @@ -23,6 +23,7 @@ function authMiddleware(sequelize) { req.userId = decoded.userId; next(); } catch (error) { + console.error('Token verification failed:', error); res.status(401).json({ error: 'Invalid token' }); } } diff --git a/backend/middleware/verifyEditable.js b/backend/middleware/verifyEditable.js index 9e79921..af6120b 100644 --- a/backend/middleware/verifyEditable.js +++ b/backend/middleware/verifyEditable.js @@ -1,5 +1,5 @@ -const { memberRoles } = require('../routes/users/authSettings'); const { DataTypes } = require('sequelize'); +const { memberRoles } = require('../routes/users/authSettings'); const defineMember = require('../models/members'); const defineProject = require('../models/projects'); const defineFolder = require('../models/folders'); diff --git a/backend/migrations/20240201220834-create-users.js b/backend/migrations/20240201220834-create-users.js index 539bade..04e7d06 100644 --- a/backend/migrations/20240201220834-create-users.js +++ b/backend/migrations/20240201220834-create-users.js @@ -40,7 +40,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('users'); }, }; diff --git a/backend/migrations/20240204090345-create-projects.js b/backend/migrations/20240204090345-create-projects.js index 4fbf7a9..1603d3a 100644 --- a/backend/migrations/20240204090345-create-projects.js +++ b/backend/migrations/20240204090345-create-projects.js @@ -42,7 +42,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('projects'); }, }; diff --git a/backend/migrations/20240212022145-create-folders.js b/backend/migrations/20240212022145-create-folders.js index 01f60dc..64806ab 100644 --- a/backend/migrations/20240212022145-create-folders.js +++ b/backend/migrations/20240212022145-create-folders.js @@ -42,7 +42,7 @@ module.exports = { }); }, - async down(queryInterface, Sequelize) { + async down(queryInterface) { await queryInterface.dropTable('folders'); }, }; diff --git a/backend/migrations/20240212082050-create-runs.js b/backend/migrations/20240212082050-create-runs.js index dad3e1d..55e9fc0 100644 --- a/backend/migrations/20240212082050-create-runs.js +++ b/backend/migrations/20240212082050-create-runs.js @@ -46,7 +46,7 @@ module.exports = { }); }, - async down(queryInterface, Sequelize) { + async down(queryInterface) { await queryInterface.dropTable('runs'); }, }; diff --git a/backend/migrations/20240212084228-create-cases.js b/backend/migrations/20240212084228-create-cases.js index 5564161..4ae2213 100644 --- a/backend/migrations/20240212084228-create-cases.js +++ b/backend/migrations/20240212084228-create-cases.js @@ -66,7 +66,7 @@ module.exports = { }); }, - async down(queryInterface, Sequelize) { + async down(queryInterface) { await queryInterface.dropTable('cases'); }, }; diff --git a/backend/migrations/20240229095914-create-steps.js b/backend/migrations/20240229095914-create-steps.js index 5cb30e8..9662b15 100644 --- a/backend/migrations/20240229095914-create-steps.js +++ b/backend/migrations/20240229095914-create-steps.js @@ -28,7 +28,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('steps'); }, }; diff --git a/backend/migrations/20240229100158-create-cases-steps.js b/backend/migrations/20240229100158-create-cases-steps.js index 28c17f9..ff66e7e 100644 --- a/backend/migrations/20240229100158-create-cases-steps.js +++ b/backend/migrations/20240229100158-create-cases-steps.js @@ -46,7 +46,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('caseSteps'); }, }; diff --git a/backend/migrations/20240316200815-create-attachments.js b/backend/migrations/20240316200815-create-attachments.js index cbd51c0..bc2044e 100644 --- a/backend/migrations/20240316200815-create-attachments.js +++ b/backend/migrations/20240316200815-create-attachments.js @@ -32,7 +32,7 @@ module.exports = { }); }, - async down(queryInterface, Sequelize) { + async down(queryInterface) { await queryInterface.dropTable('attachments'); }, }; diff --git a/backend/migrations/20240316201158-create-cases-attachments.js b/backend/migrations/20240316201158-create-cases-attachments.js index edd4812..d7712c4 100644 --- a/backend/migrations/20240316201158-create-cases-attachments.js +++ b/backend/migrations/20240316201158-create-cases-attachments.js @@ -42,7 +42,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('caseAttachments'); }, }; diff --git a/backend/migrations/20240407182431-create-runs-cases.js b/backend/migrations/20240407182431-create-runs-cases.js index 536fd47..dbc2d22 100644 --- a/backend/migrations/20240407182431-create-runs-cases.js +++ b/backend/migrations/20240407182431-create-runs-cases.js @@ -46,7 +46,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('runCases'); }, }; diff --git a/backend/migrations/20240529221509-create-members.js b/backend/migrations/20240529221509-create-members.js index a28aff0..ed7576a 100644 --- a/backend/migrations/20240529221509-create-members.js +++ b/backend/migrations/20240529221509-create-members.js @@ -46,7 +46,7 @@ module.exports = { }); }, - down: async (queryInterface, Sequelize) => { + down: async (queryInterface) => { await queryInterface.dropTable('members'); }, }; diff --git a/backend/migrations/20240930124156-rename_table.js b/backend/migrations/20240930124156-rename_table.js index 2ba10b5..c8e572d 100644 --- a/backend/migrations/20240930124156-rename_table.js +++ b/backend/migrations/20240930124156-rename_table.js @@ -2,7 +2,7 @@ /** @type {import('sequelize-cli').Migration} */ module.exports = { - async up(queryInterface, Sequelize) { + async up(queryInterface) { /** * Add altering commands here. * @@ -15,7 +15,7 @@ module.exports = { await queryInterface.renameColumn('users', 'avatarPath', 'avatar_path'); }, - async down(queryInterface, Sequelize) { + async down() { /** * Add reverting commands here. * diff --git a/backend/models/index.js b/backend/models/index.js index e42d923..e57f031 100644 --- a/backend/models/index.js +++ b/backend/models/index.js @@ -2,8 +2,8 @@ const fs = require('fs'); const path = require('path'); -const Sequelize = require('sequelize'); const process = require('process'); +const Sequelize = require('sequelize'); const basename = path.basename(__filename); const env = process.env.NODE_ENV || 'development'; const config = require(__dirname + '/../config/config.json')[env]; diff --git a/backend/routes/cases/delete.js b/backend/routes/cases/delete.js index 8f6a4f5..62e880d 100644 --- a/backend/routes/cases/delete.js +++ b/backend/routes/cases/delete.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineCase = require('../../models/cases'); const { DataTypes } = require('sequelize'); +const defineCase = require('../../models/cases'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/cases/edit.js b/backend/routes/cases/edit.js index 6154445..bb5848c 100644 --- a/backend/routes/cases/edit.js +++ b/backend/routes/cases/edit.js @@ -1,14 +1,12 @@ const express = require('express'); const router = express.Router(); -const defineCase = require('../../models/cases'); -const defineStep = require('../../models/steps'); const { DataTypes } = require('sequelize'); +const defineCase = require('../../models/cases'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); const { verifyProjectDeveloperFromCaseId } = require('../../middleware/verifyEditable')(sequelize); const Case = defineCase(sequelize, DataTypes); - const Step = defineStep(sequelize, DataTypes); router.put('/:caseId', verifySignedIn, verifyProjectDeveloperFromCaseId, async (req, res) => { const caseId = req.params.caseId; diff --git a/backend/routes/cases/index.js b/backend/routes/cases/index.js index d2b0666..170cf1f 100644 --- a/backend/routes/cases/index.js +++ b/backend/routes/cases/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineCase = require('../../models/cases'); const { DataTypes } = require('sequelize'); +const defineCase = require('../../models/cases'); module.exports = function (sequelize) { const Case = defineCase(sequelize, DataTypes); diff --git a/backend/routes/cases/indexByProjectId.js b/backend/routes/cases/indexByProjectId.js index 35c56ec..4c99002 100644 --- a/backend/routes/cases/indexByProjectId.js +++ b/backend/routes/cases/indexByProjectId.js @@ -1,10 +1,10 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineProject = require('../../models/projects'); const defineFolder = require('../../models/folders'); const defineCase = require('../../models/cases'); const defineRunCase = require('../../models/runCases'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const Project = defineProject(sequelize, DataTypes); diff --git a/backend/routes/cases/new.js b/backend/routes/cases/new.js index 936b0c4..958f36f 100644 --- a/backend/routes/cases/new.js +++ b/backend/routes/cases/new.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineCase = require('../../models/cases'); const { DataTypes } = require('sequelize'); +const defineCase = require('../../models/cases'); const requiredFields = ['title', 'state', 'priority', 'type', 'automationStatus', 'template']; @@ -50,6 +50,7 @@ module.exports = function (sequelize) { res.json(newCase); } catch (error) { + console.error('Error creating new case:', error); res.status(500).json({ error: 'Internal server error' }); } }); diff --git a/backend/routes/cases/show.js b/backend/routes/cases/show.js index 4b936ad..a54ee05 100644 --- a/backend/routes/cases/show.js +++ b/backend/routes/cases/show.js @@ -1,9 +1,9 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineCase = require('../../models/cases'); const defineStep = require('../../models/steps'); const defineAttachment = require('../../models/attachments'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const Case = defineCase(sequelize, DataTypes); diff --git a/backend/routes/folders/delete.js b/backend/routes/folders/delete.js index 0085313..2eeb061 100644 --- a/backend/routes/folders/delete.js +++ b/backend/routes/folders/delete.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineFolder = require('../../models/folders'); const { DataTypes } = require('sequelize'); +const defineFolder = require('../../models/folders'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/folders/edit.js b/backend/routes/folders/edit.js index 8c2be86..d0472f2 100644 --- a/backend/routes/folders/edit.js +++ b/backend/routes/folders/edit.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineFolder = require('../../models/folders'); const { DataTypes } = require('sequelize'); +const defineFolder = require('../../models/folders'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/folders/index.js b/backend/routes/folders/index.js index 2c34bee..611796e 100644 --- a/backend/routes/folders/index.js +++ b/backend/routes/folders/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineFolder = require('../../models/folders'); const { DataTypes } = require('sequelize'); +const defineFolder = require('../../models/folders'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/folders/new.js b/backend/routes/folders/new.js index e068000..f184556 100644 --- a/backend/routes/folders/new.js +++ b/backend/routes/folders/new.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineFolder = require('../../models/folders'); const { DataTypes } = require('sequelize'); +const defineFolder = require('../../models/folders'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); @@ -25,6 +25,7 @@ module.exports = function (sequelize) { res.json(newFolder); } catch (error) { + console.error('Error creating new folder:', error); res.status(500).json({ error: 'Internal server error' }); } }); diff --git a/backend/routes/home/index.js b/backend/routes/home/index.js index a410a42..292d81e 100644 --- a/backend/routes/home/index.js +++ b/backend/routes/home/index.js @@ -1,11 +1,11 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineProject = require('../../models/projects'); const defineFolder = require('../../models/folders'); const defineCase = require('../../models/cases'); const defineRun = require('../../models/runs'); const defineRunCase = require('../../models/runCases'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/members/check.js b/backend/routes/members/check.js index 598dd0c..f68ddd1 100644 --- a/backend/routes/members/check.js +++ b/backend/routes/members/check.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineMember = require('../../models/members'); const defineProject = require('../../models/projects'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/members/delete.js b/backend/routes/members/delete.js index ec0208f..dc02283 100644 --- a/backend/routes/members/delete.js +++ b/backend/routes/members/delete.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineMember = require('../../models/members'); const { DataTypes } = require('sequelize'); +const defineMember = require('../../models/members'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/members/edit.js b/backend/routes/members/edit.js index c975270..6c7c64e 100644 --- a/backend/routes/members/edit.js +++ b/backend/routes/members/edit.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineMember = require('../../models/members'); const { DataTypes } = require('sequelize'); +const defineMember = require('../../models/members'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/members/index.js b/backend/routes/members/index.js index 902059b..415ebc1 100644 --- a/backend/routes/members/index.js +++ b/backend/routes/members/index.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineUser = require('../../models/users'); const defineMember = require('../../models/members'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/members/new.js b/backend/routes/members/new.js index ade8aab..f82ca44 100644 --- a/backend/routes/members/new.js +++ b/backend/routes/members/new.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineMember = require('../../models/members'); const { DataTypes } = require('sequelize'); +const defineMember = require('../../models/members'); const { memberRoles } = require('../../routes/users/authSettings'); module.exports = function (sequelize) { diff --git a/backend/routes/projects/delete.js b/backend/routes/projects/delete.js index 47dadc6..40a1ab3 100644 --- a/backend/routes/projects/delete.js +++ b/backend/routes/projects/delete.js @@ -1,9 +1,9 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineProject = require('../../models/projects'); const defineFolder = require('../../models/folders'); const defineRun = require('../../models/runs'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/projects/edit.js b/backend/routes/projects/edit.js index a90c65b..1130999 100644 --- a/backend/routes/projects/edit.js +++ b/backend/routes/projects/edit.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineProject = require('../../models/projects'); const { DataTypes } = require('sequelize'); +const defineProject = require('../../models/projects'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/projects/new.js b/backend/routes/projects/new.js index 74296fc..247ef54 100644 --- a/backend/routes/projects/new.js +++ b/backend/routes/projects/new.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineProject = require('../../models/projects'); const { DataTypes } = require('sequelize'); +const defineProject = require('../../models/projects'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/projects/show.js b/backend/routes/projects/show.js index 8594577..d83bf01 100644 --- a/backend/routes/projects/show.js +++ b/backend/routes/projects/show.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineProject = require('../../models/projects'); const defineFolder = require('../../models/folders'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/runcases/edit.js b/backend/routes/runcases/edit.js index 6819418..962f42d 100644 --- a/backend/routes/runcases/edit.js +++ b/backend/routes/runcases/edit.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRunCase = require('../../models/runCases'); const { DataTypes } = require('sequelize'); +const defineRunCase = require('../../models/runCases'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/runcases/index.js b/backend/routes/runcases/index.js index ba1dacc..7b17d2c 100644 --- a/backend/routes/runcases/index.js +++ b/backend/routes/runcases/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRunCase = require('../../models/runCases'); const { DataTypes } = require('sequelize'); +const defineRunCase = require('../../models/runCases'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/runs/delete.js b/backend/routes/runs/delete.js index 3b32069..2bde53c 100644 --- a/backend/routes/runs/delete.js +++ b/backend/routes/runs/delete.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRun = require('../../models/runs'); const { DataTypes } = require('sequelize'); +const defineRun = require('../../models/runs'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/runs/edit.js b/backend/routes/runs/edit.js index e921c3b..5f05b80 100644 --- a/backend/routes/runs/edit.js +++ b/backend/routes/runs/edit.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRun = require('../../models/runs'); const { DataTypes } = require('sequelize'); +const defineRun = require('../../models/runs'); module.exports = function (sequelize) { const Run = defineRun(sequelize, DataTypes); diff --git a/backend/routes/runs/index.js b/backend/routes/runs/index.js index c77959c..1314912 100644 --- a/backend/routes/runs/index.js +++ b/backend/routes/runs/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRun = require('../../models/runs'); const { DataTypes } = require('sequelize'); +const defineRun = require('../../models/runs'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/runs/new.js b/backend/routes/runs/new.js index 7c6655c..72731d0 100644 --- a/backend/routes/runs/new.js +++ b/backend/routes/runs/new.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineRun = require('../../models/runs'); const { DataTypes } = require('sequelize'); +const defineRun = require('../../models/runs'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); @@ -26,6 +26,7 @@ module.exports = function (sequelize) { res.json(newRun); } catch (error) { + console.error('Error creating new run:', error); res.status(500).json({ error: 'Internal server error' }); } }); diff --git a/backend/routes/runs/show.js b/backend/routes/runs/show.js index 2bf415c..c84b9e6 100644 --- a/backend/routes/runs/show.js +++ b/backend/routes/runs/show.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes, literal } = require('sequelize'); const defineRun = require('../../models/runs'); const defineRunCase = require('../../models/runCases'); -const { DataTypes, literal } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/steps/edit.js b/backend/routes/steps/edit.js index aa5a7a7..2fac1f7 100644 --- a/backend/routes/steps/edit.js +++ b/backend/routes/steps/edit.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes } = require('sequelize'); const defineStep = require('../../models/steps'); const defineCaseStep = require('../../models/caseSteps'); -const { DataTypes } = require('sequelize'); module.exports = function (sequelize) { const Step = defineStep(sequelize, DataTypes); diff --git a/backend/routes/users/find.js b/backend/routes/users/find.js index f404455..07897c2 100644 --- a/backend/routes/users/find.js +++ b/backend/routes/users/find.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineUser = require('../../models/users'); const { DataTypes } = require('sequelize'); +const defineUser = require('../../models/users'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/users/index.js b/backend/routes/users/index.js index 4f0fd95..fa2ab03 100644 --- a/backend/routes/users/index.js +++ b/backend/routes/users/index.js @@ -1,7 +1,7 @@ const express = require('express'); const router = express.Router(); -const defineUser = require('../../models/users'); const { DataTypes } = require('sequelize'); +const defineUser = require('../../models/users'); module.exports = function (sequelize) { const { verifySignedIn, verifyAdmin } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/users/search.js b/backend/routes/users/search.js index 84ba3f1..e8d9c84 100644 --- a/backend/routes/users/search.js +++ b/backend/routes/users/search.js @@ -1,8 +1,8 @@ const express = require('express'); const router = express.Router(); +const { DataTypes, Op } = require('sequelize'); const defineUser = require('../../models/users'); const defineMember = require('../../models/members'); -const { DataTypes, Op } = require('sequelize'); module.exports = function (sequelize) { const { verifySignedIn } = require('../../middleware/auth')(sequelize); diff --git a/backend/routes/users/signin.js b/backend/routes/users/signin.js index 3b740f4..69459b2 100644 --- a/backend/routes/users/signin.js +++ b/backend/routes/users/signin.js @@ -1,9 +1,9 @@ const express = require('express'); const router = express.Router(); -const defineUser = require('../../models/users'); const { DataTypes } = require('sequelize'); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); +const defineUser = require('../../models/users'); const { defaultDangerKey } = require('./authSettings'); module.exports = function (sequelize) { diff --git a/backend/routes/users/signup.js b/backend/routes/users/signup.js index 8398f29..ee2fae1 100644 --- a/backend/routes/users/signup.js +++ b/backend/routes/users/signup.js @@ -1,10 +1,10 @@ const express = require('express'); const router = express.Router(); -const defineUser = require('../../models/users'); const { DataTypes } = require('sequelize'); -const { roles, defaultDangerKey } = require('./authSettings'); const bcrypt = require('bcrypt'); const jwt = require('jsonwebtoken'); +const defineUser = require('../../models/users'); +const { roles, defaultDangerKey } = require('./authSettings'); module.exports = function (sequelize) { const User = defineUser(sequelize, DataTypes); diff --git a/backend/routes/users/update.mjs b/backend/routes/users/update.mjs index 3c5be5a..d45f757 100644 --- a/backend/routes/users/update.mjs +++ b/backend/routes/users/update.mjs @@ -1,8 +1,8 @@ import express from 'express'; import { DataTypes } from 'sequelize'; import defineUser from '../../models/users.js'; -import { roles } from './authSettings.js'; import authMiddleware from '../../middleware/auth.js'; +import { roles } from './authSettings.js'; const router = express.Router(); export default function (sequelize) { diff --git a/backend/routes/users/update.test.js b/backend/routes/users/update.test.js index 447dfd2..1eaa514 100644 --- a/backend/routes/users/update.test.js +++ b/backend/routes/users/update.test.js @@ -1,8 +1,8 @@ import { describe, it, expect, vi, beforeEach } from 'vitest'; import request from 'supertest'; import express from 'express'; -import updateRoute from './update'; import { Sequelize } from 'sequelize'; +import updateRoute from './update'; import { roles } from './authSettings'; const adminRoleIndex = roles.findIndex((entry) => entry.uid === 'administrator'); @@ -28,7 +28,7 @@ const mockUser = { update: vi.fn(), }; vi.mock('../../models/users', () => ({ - default: (sequelize, DataTypes) => mockUser, + default: () => mockUser, })); // test diff --git a/backend/seeders/seed.js b/backend/seeders/seed.js index 83efa5c..674bfa3 100644 --- a/backend/seeders/seed.js +++ b/backend/seeders/seed.js @@ -3,7 +3,7 @@ const fs = require('fs'); const bcrypt = require('bcrypt'); module.exports = { - up: async (queryInterface, Sequelize) => { + up: async (queryInterface) => { const hashedPassword = await bcrypt.hash('password', 10); // Add projects table records @@ -696,7 +696,7 @@ module.exports = { ]); }, - down: async (queryInterface, Sequelize) => { - // do nothingg + down: async () => { + // do nothing }, }; diff --git a/combined_server.js b/combined_server.js index ea552a4..bfcca11 100644 --- a/combined_server.js +++ b/combined_server.js @@ -1,9 +1,9 @@ // Use express from backend node_modules -const express = require('./backend/node_modules/express'); const { createServer: createHttpServer } = require('http'); const path = require('path'); const fs = require('fs'); const { execSync } = require('child_process'); +const express = require('./backend/node_modules/express'); async function runMigrations() { try { diff --git a/docs/docs/dev/technologies.md b/docs/docs/dev/technologies.md index 8ea7434..3618db8 100644 --- a/docs/docs/dev/technologies.md +++ b/docs/docs/dev/technologies.md @@ -4,7 +4,7 @@ sidebar_position: 1 # Technologies -UnitTCMS is powered by following technologies. For more detailed package and version information, please see package.json. +UnitTCMS is powered by following technologies. For more detailed info, please check package.json. ## Frontend @@ -12,7 +12,7 @@ UnitTCMS is powered by following technologies. For more detailed package and ver | ----------------------------------------------- | -------------------- | | [React](https://react.dev/) | Rendering | | [Next.js](https://nextjs.org/) | Routing, etc. | -| [NextUI](https://nextui.org/) | UI library | +| [HeroUI](https://www.heroui.com/) | UI library | | [next-intl](https://next-intl-docs.vercel.app/) | Internationalization | | [ApexCharts](https://apexcharts.com/) | Charts | @@ -24,3 +24,12 @@ UnitTCMS is powered by following technologies. For more detailed package and ver | [Express](https://expressjs.com/) | API Server | | [Sequelize](https://sequelize.org/) | ORM | | [SQLite](https://www.sqlite.org/) | database | + +## Other + +| Technology | Use | +| ------------------------------------- | ---------------------- | +| [Prettier](https://prettier.io/) | Format | +| [ESLint](https://eslint.org/) | ESLint | +| [Vitest](https://vitest.dev/) | Unit Testing Framework | +| [Playwright](https://playwright.dev/) | E2E Testing Framework | diff --git a/frontend/components/Footer.tsx b/frontend/components/Footer.tsx index 649c096..a100da3 100644 --- a/frontend/components/Footer.tsx +++ b/frontend/components/Footer.tsx @@ -1,3 +1,4 @@ +import Image from 'next/image'; import { Link, NextUiLinkClasses } from '@/src/i18n/routing'; import { LocaleCodeType } from '@/types/locale'; @@ -7,10 +8,18 @@ type Props = { export default function Footer({ locale }: Props) { return ( -
{context.token!.user!.username}
-{context.token!.user!.email}
+{context.token?.user?.username}
+{context.token?.user?.email}