diff --git a/ExpressAPI/prisma/seed.ts b/ExpressAPI/prisma/seed.ts index ab340d7c43998192f81b8b0984cf5b7b9f3ca91d..cf91fde62d2f027827f9f3593208618d13073865 100644 --- a/ExpressAPI/prisma/seed.ts +++ b/ExpressAPI/prisma/seed.ts @@ -6,11 +6,12 @@ import SharedConfig from '../src/shared/config/SharedConfig.js'; import { UserRole } from '@prisma/client'; import logger from '../src/shared/logging/WinstonLogger.js'; import db from '../src/helpers/DatabaseHelper.js'; +import TagsManager from '../src/managers/TagsManager'; async function main() { await users(); - await assignments(); + await assignments();s await exercises(); await results(); await tag(); @@ -24,13 +25,6 @@ main().then(async () => { process.exit(1); }); -enum tagType{ - Language, - Framework, - Theme, - UserDefined -} - //---------------------------------------------------------------------------------------------------------------------------------------------------------- async function users() { @@ -1596,7 +1590,7 @@ async function tag() { update: {}, create: { name : 'C', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1604,7 +1598,7 @@ async function tag() { update: {}, create: { name : 'Java', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1612,7 +1606,7 @@ async function tag() { update: {}, create: { name : 'Scala', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1620,7 +1614,7 @@ async function tag() { update: {}, create: { name : 'Kotlin', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1628,7 +1622,7 @@ async function tag() { update: {}, create: { name : 'Rust', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1636,7 +1630,7 @@ async function tag() { update: {}, create: { name : 'JavaScript', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1644,7 +1638,7 @@ async function tag() { update: {}, create: { name : 'TypeScript', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1652,7 +1646,7 @@ async function tag() { update: {}, create: { name : 'Python', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1660,7 +1654,7 @@ async function tag() { update: {}, create: { name : 'HTML', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1668,7 +1662,7 @@ async function tag() { update: {}, create: { name : 'CSS', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1676,7 +1670,7 @@ async function tag() { update: {}, create: { name : 'C++', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1684,7 +1678,7 @@ async function tag() { update: {}, create: { name : 'Go', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1692,7 +1686,7 @@ async function tag() { update: {}, create: { name : 'PHP', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1700,7 +1694,7 @@ async function tag() { update: {}, create: { name : 'C#', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1708,7 +1702,7 @@ async function tag() { update: {}, create: { name : 'Swift', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1716,7 +1710,7 @@ async function tag() { update: {}, create: { name : 'Matlab', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1724,7 +1718,7 @@ async function tag() { update: {}, create: { name : 'SQL', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1732,7 +1726,7 @@ async function tag() { update: {}, create: { name : 'Assembly', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1740,7 +1734,7 @@ async function tag() { update: {}, create: { name : 'Ruby', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1748,7 +1742,7 @@ async function tag() { update: {}, create: { name : 'Fortran', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1756,7 +1750,7 @@ async function tag() { update: {}, create: { name : 'Pascal', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1764,7 +1758,7 @@ async function tag() { update: {}, create: { name : 'Visual Basic', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1772,7 +1766,7 @@ async function tag() { update: {}, create: { name : 'R', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1780,7 +1774,7 @@ async function tag() { update: {}, create: { name : 'Objective-C', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1788,7 +1782,7 @@ async function tag() { update: {}, create: { name : 'Lua', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1796,7 +1790,7 @@ async function tag() { update: {}, create: { name : 'Ada', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1804,7 +1798,7 @@ async function tag() { update: {}, create: { name : 'Haskell', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1812,7 +1806,7 @@ async function tag() { update: {}, create: { name : 'Shell/PowerShell', - type : tagType.Language, + type : TagsManager.TagType.Language, } }); await db.tag.upsert({ @@ -1820,7 +1814,7 @@ async function tag() { update: {}, create: { name : 'Express', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1828,7 +1822,7 @@ async function tag() { update: {}, create: { name : 'Django', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1836,7 +1830,7 @@ async function tag() { update: {}, create: { name : 'Ruby on Rails', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1844,7 +1838,7 @@ async function tag() { update: {}, create: { name : 'Angular', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1852,7 +1846,7 @@ async function tag() { update: {}, create: { name : 'React', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1860,7 +1854,7 @@ async function tag() { update: {}, create: { name : 'Flutter', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1868,7 +1862,7 @@ async function tag() { update: {}, create: { name : 'Ionic', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1876,7 +1870,7 @@ async function tag() { update: {}, create: { name : 'Flask', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1884,7 +1878,7 @@ async function tag() { update: {}, create: { name : 'React Native', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1892,7 +1886,7 @@ async function tag() { update: {}, create: { name : 'Xamarin', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1900,7 +1894,7 @@ async function tag() { update: {}, create: { name : 'Laravel', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1908,7 +1902,7 @@ async function tag() { update: {}, create: { name : 'Spring', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1916,7 +1910,7 @@ async function tag() { update: {}, create: { name : 'Play', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1924,7 +1918,7 @@ async function tag() { update: {}, create: { name : 'Symfony', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1932,7 +1926,7 @@ async function tag() { update: {}, create: { name : 'ASP.NET', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1940,7 +1934,7 @@ async function tag() { update: {}, create: { name : 'Meteor', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1948,7 +1942,7 @@ async function tag() { update: {}, create: { name : 'Vue.js', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1956,7 +1950,7 @@ async function tag() { update: {}, create: { name : 'Svelte', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); await db.tag.upsert({ @@ -1964,7 +1958,7 @@ async function tag() { update: {}, create: { name : 'Express.js', - type : tagType.Framework, + type : TagsManager.TagType.Framework, } }); } diff --git a/ExpressAPI/src/managers/TagsManager.ts b/ExpressAPI/src/managers/TagsManager.ts index f404fadc6a264a6c89c71b4e0f883c374985c07a..884459caecd935303661c63ec6634318af9151f4 100644 --- a/ExpressAPI/src/managers/TagsManager.ts +++ b/ExpressAPI/src/managers/TagsManager.ts @@ -2,6 +2,12 @@ import { Prisma } from '@prisma/client'; import { Assignment, User } from '../types/DatabaseTypes'; import db from '../helpers/DatabaseHelper'; +enum TagType{ + Language, + Framework, + Theme, + UserDefined +} class TagsManager { async isUserAllowedToAccessTag(tag: Tags, user: User): Promise<boolean> { diff --git a/ExpressAPI/src/routes/TagsRoutes.ts b/ExpressAPI/src/routes/TagsRoutes.ts index fcfb493d70d23fa9590453ac2b1552b59b5cb0fb..f7174dcb7e675ef267059f55f93f73830395b6bc 100644 --- a/ExpressAPI/src/routes/TagsRoutes.ts +++ b/ExpressAPI/src/routes/TagsRoutes.ts @@ -25,8 +25,7 @@ import path from 'path'; import SharedAssignmentHelper from '../shared/helpers/Dojo/SharedAssignmentHelper'; import GlobalHelper from '../helpers/GlobalHelper'; import DojoStatusCode from '../shared/types/Dojo/DojoStatusCode'; -import TagsManager from 'src/managers/TagsManager'; - +import TagsManager from '../managers/TagsManager'; class TagRoutes implements RoutesManager { private readonly tagsValidator: ExpressValidator.Schema = { @@ -49,25 +48,27 @@ class TagRoutes implements RoutesManager { } private async addTag(req: express.Request, res: express.Response) { - let my_name = req.body.name - let my_type = req.body.type - - //TODO this + check admin ->si non -> UserDefined + let tagName = req.body.name + const tagType = req.body.type + + if(tagType != TagsManager.TagType.UserDefined && !req.session.profile.isAdmin) { + return req.session.sendResponse(res, StatusCodes.FORBIDDEN); + } + db.tag.upsert({ - where : { name: my_name }, + where : { name: tagName }, update: {}, create: { - name : my_name, - type : my_type, + name : tagName, + type : tagType, } }) } private async deleteTag(req: express.Request, res: express.Response) { - let my_name = req.body.name + let tagName = req.body.name - //TODO this + check admin ->si non -> UserDefined db.tag.delete({ - where : { name: my_name } + where : { name: tagName } }) }