diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index 5bc2a776db5c87eec632245cd7af3bf4779fb6f2..8f73c0eeb12d884b253106ac0b4bba8d04e126e7 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -70,16 +70,16 @@ class ExerciseRoutes implements RoutesManager {
 
         backend.get('/exercises', SecurityMiddleware.check(true, SecurityCheckType.ADMIN), this.getAllExercises.bind(this) as RequestHandler);
         backend.get('/exercises/:exerciseIdOrUrl/assignment', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), this.getAssignment.bind(this) as RequestHandler);
+        backend.get('/exercises/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.getExercise.bind(this) as RequestHandler);
         backend.get('/exercises/:exerciseIdOrUrl/members', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.getExerciseMembers.bind(this) as RequestHandler);
         backend.get('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.getExerciseResults.bind(this) as RequestHandler);
 
         backend.delete('/exercises/:exerciseIdOrUrl', SecurityMiddleware.check(true, SecurityCheckType.ADMIN, SecurityCheckType.EXERCISE_MEMBERS), this.deleteExercise.bind(this) as RequestHandler);
 
-        backend.post('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), ParamsValidatorMiddleware.validate(this.resultValidator), this.createResult.bind(this) as RequestHandler);
-
-        backend.get('/exercises', this.getAllExercises.bind(this));
+        backend.get('/users/:userId/exercises', SecurityMiddleware.check(true), this.getUserExercises.bind(this) as RequestHandler);
 
-        backend.get('/exercises/:exerciseIdOrLink/results', SecurityMiddleware.check(true), this.getExerciseResultsByIdOrLink.bind(this));
+        backend.get('/exercises/:exerciseIdOrLink/results', SecurityMiddleware.check(true), this.getExerciseResultsByIdOrLink.bind(this) as RequestHandler);
+        backend.post('/exercises/:exerciseIdOrUrl/results', SecurityMiddleware.check(false, SecurityCheckType.EXERCISE_SECRET), ParamsValidatorMiddleware.validate(this.resultValidator), this.createResult.bind(this) as RequestHandler);
     }
 
     private async getExerciseResultsByIdOrLink(req: express.Request, res: express.Response) {
@@ -87,30 +87,39 @@ class ExerciseRoutes implements RoutesManager {
 
 
         const exercise = await db.exercise.findFirst({
-            where: {
-                OR: [
-                    { id: exerciseIdOrLink },
-                    { gitlabLink: exerciseIdOrLink }
-                ]
-            }
-        });
+                                                         where: {
+                                                             OR: [ { id: exerciseIdOrLink }, { gitlabLink: exerciseIdOrLink } ]
+                                                         }
+                                                     });
 
-        if (!exercise) {
+        if ( !exercise ) {
             return res.status(StatusCodes.NOT_FOUND).send('Exercise not found');
         }
 
 
         const results = await db.result.findMany({
-            where: { exerciseId: exercise.id },
-        });
+                                                     where: { exerciseId: exercise.id }
+                                                 });
 
         return res.status(StatusCodes.OK).json(results);
     }
 
-
     private async getAllExercises(req: express.Request, res: express.Response) {
-        const exo = await db.exercise.findMany();
-        return req.session.sendResponse(res, StatusCodes.OK, exo);
+        const exos = await db.exercise.findMany();
+
+        return req.session.sendResponse(res, StatusCodes.OK, exos);
+    }
+
+    private async getUserExercises(req: express.Request, res: express.Response) {
+        if ( req.boundParams.user ) {
+            if ( req.session.profile.isAdmin || req.session.profile.id === req.boundParams.user.id ) {
+                return req.session.sendResponse(res, StatusCodes.OK, req.boundParams.user.exercises.filter(exercise => !exercise.deleted));
+            } else {
+                return req.session.sendResponse(res, StatusCodes.FORBIDDEN);
+            }
+        } else {
+            return req.session.sendResponse(res, StatusCodes.NOT_FOUND);
+        }
     }
 
     private getExerciseName(assignment: Assignment, members: Array<Gitlab.UserSchema>, suffix: number): string {
@@ -119,6 +128,10 @@ class ExerciseRoutes implements RoutesManager {
         return `DojoEx - ${ assignment.name } - ${ memberNames }${ suffixString }`;
     }
 
+    private async getExercise(req: express.Request, res: express.Response) {
+        return req.session.sendResponse(res, StatusCodes.OK, req.boundParams.exercise!);
+    }
+
     private async getExerciseMembers(req: express.Request, res: express.Response) {
         const repoId = req.boundParams.exercise!.gitlabId;
 
@@ -168,13 +181,6 @@ class ExerciseRoutes implements RoutesManager {
         return `dojo-ex_${ (assignment.gitlabLastInfo as unknown as Gitlab.ProjectSchema).path }_${ exerciseId }`;
     }
 
-    // Get all exercise
-    private async getAllExercises(req: express.Request, res: express.Response) {
-        const exos = await db.exercise.findMany();
-
-        return req.session.sendResponse(res, StatusCodes.OK, exos);
-    }
-
 
     private async checkExerciseLimit(assignment: Assignment, members: Array<Gitlab.UserSchema>): Promise<Array<Gitlab.UserSchema>> {
         const exercises: Array<Exercise> | undefined = await ExerciseManager.getFromAssignment(assignment.name, false, { members: true });
@@ -260,33 +266,42 @@ class ExerciseRoutes implements RoutesManager {
 
             await repoCreationFnExec(async () => Promise.all([ ...new Set([ ...assignment.staff, ...params.members ].map(member => member.id)) ].map(GlobalHelper.addRepoMember(repository.id))), 'Add repository members error');
 
-            const exercise: Exercise = await repoCreationFnExec(() => db.exercise.create({
-                                                                                             data: {
-                                                                                                 id                : exerciseId,
-                                                                                                 assignmentName    : assignment.name,
-                                                                                                 name              : repository.name,
-                                                                                                 secret            : secret,
-                                                                                                 gitlabId          : repository.id,
-                                                                                                 gitlabLink        : repository.web_url,
-                                                                                                 gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
-                                                                                                 gitlabCreationDate: new Date(),
-                                                                                                 gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
-                                                                                                 gitlabLastInfoDate: new Date(),
-                                                                                                 members           : {
-                                                                                                     connectOrCreate: [ ...params.members.map(gitlabUser => {
-                                                                                                         return {
-                                                                                                             create: {
-                                                                                                                 id            : gitlabUser.id,
-                                                                                                                 gitlabUsername: gitlabUser.name
-                                                                                                             },
-                                                                                                             where : {
-                                                                                                                 id: gitlabUser.id
-                                                                                                             }
-                                                                                                         };
-                                                                                                     }) ]
-                                                                                                 }
-                                                                                             }
-                                                                                         })) as Exercise;
+            let exercise: Exercise = await repoCreationFnExec(() => db.exercise.create({
+                                                                                           data: {
+                                                                                               id                : exerciseId,
+                                                                                               assignmentName    : assignment.name,
+                                                                                               name              : repository.name,
+                                                                                               secret            : secret,
+                                                                                               gitlabId          : repository.id,
+                                                                                               gitlabLink        : repository.web_url,
+                                                                                               gitlabCreationInfo: repository as unknown as Prisma.JsonObject,
+                                                                                               gitlabCreationDate: new Date(),
+                                                                                               gitlabLastInfo    : repository as unknown as Prisma.JsonObject,
+                                                                                               gitlabLastInfoDate: new Date(),
+                                                                                               members           : {
+                                                                                                   connectOrCreate: [ ...params.members.map(gitlabUser => {
+                                                                                                       return {
+                                                                                                           create: {
+                                                                                                               id            : gitlabUser.id,
+                                                                                                               gitlabUsername: gitlabUser.name
+                                                                                                           },
+                                                                                                           where : {
+                                                                                                               id: gitlabUser.id
+                                                                                                           }
+                                                                                                       };
+                                                                                                   }) ]
+                                                                                               }
+                                                                                           }
+                                                                                       })) as Exercise;
+
+            exercise = await ExerciseManager.get(exercise.id, {
+                members   : true,
+                assignment: {
+                    include: {
+                        staff: true
+                    }
+                }
+            }) as Exercise;
 
             req.session.sendResponse(res, StatusCodes.OK, exercise);
             return;