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 }
         })
         
     }