Skip to content
Snippets Groups Projects
Commit bb87971e authored by joel.vonderwe's avatar joel.vonderwe Committed by michael.minelli
Browse files

Change getAssignment to accept both a secret or a logged user

parent 554759b0
Branches
No related tags found
No related merge requests found
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/.." vcs="Git" /> <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
<mapping directory="$PROJECT_DIR$/.idea/jetbrainsConfiguration" vcs="Git" />
<mapping directory="$PROJECT_DIR$/src/shared" vcs="Git" /> <mapping directory="$PROJECT_DIR$/src/shared" vcs="Git" />
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -5,6 +5,9 @@ import db from '../helpers/DatabaseHelper.js'; ...@@ -5,6 +5,9 @@ import db from '../helpers/DatabaseHelper.js';
class AssignmentManager { class AssignmentManager {
async isUserAllowedToAccessAssignment(assignment: Assignment, user: User): Promise<boolean> { async isUserAllowedToAccessAssignment(assignment: Assignment, user: User): Promise<boolean> {
if (user === null || user === undefined) {
return false;
}
if ( !assignment.staff ) { if ( !assignment.staff ) {
assignment.staff = await db.assignment.findUnique({ assignment.staff = await db.assignment.findUnique({
where: { where: {
......
...@@ -14,6 +14,8 @@ class SecurityMiddleware { ...@@ -14,6 +14,8 @@ class SecurityMiddleware {
private async checkType(checkType: SecurityCheckType, req: express.Request): Promise<boolean> { private async checkType(checkType: SecurityCheckType, req: express.Request): Promise<boolean> {
try { try {
switch ( String(checkType) ) { switch ( String(checkType) ) {
case SecurityCheckType.USER.valueOf():
return this.checkIfConnected(true, req);
case SecurityCheckType.ADMIN.valueOf(): case SecurityCheckType.ADMIN.valueOf():
return req.session.profile.isAdmin; return req.session.profile.isAdmin;
case SecurityCheckType.TEACHING_STAFF.valueOf(): case SecurityCheckType.TEACHING_STAFF.valueOf():
......
...@@ -85,7 +85,7 @@ class AssignmentRoutes implements RoutesManager { ...@@ -85,7 +85,7 @@ class AssignmentRoutes implements RoutesManager {
}; };
registerOnBackend(backend: Express) { registerOnBackend(backend: Express) {
backend.get('/assignments/:assignmentNameOrUrl', SecurityMiddleware.check(true), this.getAssignment.bind(this) as RequestHandler); backend.get('/assignments/:assignmentNameOrUrl', SecurityMiddleware.check(false, SecurityCheckType.ASSIGNMENT_SECRET, SecurityCheckType.USER), this.getAssignment.bind(this) as RequestHandler);
backend.post('/assignments', SecurityMiddleware.check(true, SecurityCheckType.TEACHING_STAFF), ParamsValidatorMiddleware.validate(this.assignmentValidator), this.createAssignment.bind(this) as RequestHandler); backend.post('/assignments', SecurityMiddleware.check(true, SecurityCheckType.TEACHING_STAFF), ParamsValidatorMiddleware.validate(this.assignmentValidator), this.createAssignment.bind(this) as RequestHandler);
backend.get('/assignments/languages', this.getLanguages.bind(this) as RequestHandler); backend.get('/assignments/languages', this.getLanguages.bind(this) as RequestHandler);
...@@ -109,7 +109,6 @@ class AssignmentRoutes implements RoutesManager { ...@@ -109,7 +109,6 @@ class AssignmentRoutes implements RoutesManager {
delete assignment.gitlabCreationInfo; delete assignment.gitlabCreationInfo;
delete assignment.gitlabLastInfo; delete assignment.gitlabLastInfo;
delete assignment.gitlabLastInfoDate; delete assignment.gitlabLastInfoDate;
delete assignment.useSonar;
delete assignment.staff; delete assignment.staff;
delete assignment.exercises; delete assignment.exercises;
} }
......
...@@ -6,6 +6,7 @@ enum SecurityCheckType { ...@@ -6,6 +6,7 @@ enum SecurityCheckType {
ASSIGNMENT_IS_PUBLISHED = 'assignmentIsPublished', ASSIGNMENT_IS_PUBLISHED = 'assignmentIsPublished',
EXERCISE_SECRET = 'exerciseSecret', EXERCISE_SECRET = 'exerciseSecret',
ASSIGNMENT_SECRET = 'assignmentSecret', ASSIGNMENT_SECRET = 'assignmentSecret',
USER = 'user',
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment