diff --git a/.perm_test_apache b/.perm_test_apache new file mode 100644 index 0000000..e69de29 diff --git a/.perm_test_exec b/.perm_test_exec new file mode 100644 index 0000000..e69de29 diff --git a/backend/src/db/migrations/1773330455690.js b/backend/src/db/migrations/1773330455690.js new file mode 100644 index 0000000..1935fd8 --- /dev/null +++ b/backend/src/db/migrations/1773330455690.js @@ -0,0 +1,32 @@ +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable("usersCustom_permissionsPermissions", { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + users_custom_permissionsId: { + type: Sequelize.DataTypes.UUID, + references: { + model: "users", + key: "id", + }, + onDelete: "CASCADE", + }, + permissionId: { + type: Sequelize.DataTypes.UUID, + references: { + model: "permissions", + key: "id", + }, + onDelete: "CASCADE", + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable("usersCustom_permissionsPermissions"); + } +}; \ No newline at end of file diff --git a/fix.sql b/fix.sql new file mode 100644 index 0000000..23b96f4 --- /dev/null +++ b/fix.sql @@ -0,0 +1 @@ +ALTER TABLE "usersCustom_permissionsPermissions" ADD COLUMN "permissionId" UUID REFERENCES "permissions"(id); diff --git a/frontend/src/menuAside.ts b/frontend/src/menuAside.ts index c2be1fd..d1c52aa 100644 --- a/frontend/src/menuAside.ts +++ b/frontend/src/menuAside.ts @@ -8,6 +8,17 @@ const menuAside: MenuAsideItem[] = [ label: 'Dashboard', }, + { + href: '/log-work', + label: 'Log Work', + icon: icon.mdiPencil, + }, + { + href: '/my-logs', + label: 'My Logs', + icon: icon.mdiViewList, + }, + { href: '/users/users-list', label: 'Users', @@ -74,9 +85,7 @@ const menuAside: MenuAsideItem[] = [ }, { href: '/job_logs/job_logs-list', - label: 'Job logs', - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore + label: 'All Job Logs', icon: 'mdiClipboardTextClock' in icon ? icon['mdiClipboardTextClock' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable, permissions: 'READ_JOB_LOGS' }, diff --git a/frontend/src/pages/log-work.tsx b/frontend/src/pages/log-work.tsx new file mode 100644 index 0000000..24ca416 --- /dev/null +++ b/frontend/src/pages/log-work.tsx @@ -0,0 +1,32 @@ +import { mdiPencil, mdiChartTimelineVariant } from '@mdi/js'; +import Head from 'next/head'; +import React, { ReactElement } from 'react'; +import CardBox from '../components/CardBox'; +import LayoutAuthenticated from '../layouts/Authenticated'; +import SectionMain from '../components/SectionMain'; +import SectionTitleLineWithButton from '../components/SectionTitleLineWithButton'; +import { getPageTitle } from '../config'; + +const LogWorkPage = () => { + return ( + <> +
+Work log form goes here.
+List of my job logs.
+