diff --git a/client/cypress/integration/frontend/portfolio/project-page.spec.js b/client/cypress/integration/frontend/portfolio/project-page.spec.js
index 0105f9cf..2a03aa3e 100644
--- a/client/cypress/integration/frontend/portfolio/project-page.spec.js
+++ b/client/cypress/integration/frontend/portfolio/project-page.spec.js
@@ -144,6 +144,24 @@ describe('Project Page', () => {
cy.getByDataCy('project-share-link').should('contain', unsharedText);
});
+ it('cannot edit or delete the project as a teacher', () => {
+ cy.mockGraphqlOps({
+ operations: {
+ ...operations,
+ MeQuery: {
+ me: {
+ id: 'not-the-same',
+ isTeacher: true
+ },
+ },
+ },
+ });
+ cy.visit('/portfolio/groot');
+ cy.getByDataCy('project-actions').should('not.exist');
+ cy.getByDataCy('project-entry').should('have.length', 1);
+ cy.getByDataCy('project-entry-more').should('not.exist');
+ });
+
describe('Project Entry', () => {
it('should create a new project entry', () => {
cy.visit('/portfolio');
diff --git a/client/src/graphql/client.js b/client/src/graphql/client.js
index 3ed2ec5c..2bfabfc8 100644
--- a/client/src/graphql/client.js
+++ b/client/src/graphql/client.js
@@ -107,7 +107,6 @@ export default function (uri, networkErrorCallback) {
objectiveGroup: (_, args, {getCacheKey}) => getCacheKey({__typename: 'ObjectiveGroupNode', id: args.id}),
projectEntry: (_, args, {getCacheKey}) => getCacheKey({__typename: 'ProjectEntryNode', id: args.id}),
project: (_, args, {getCacheKey}) => {
- console.log(args);
if (args.slug) {
return getCacheKey({__typename: 'ProjectNode', id: args.slug});
} else {
diff --git a/client/src/pages/portfolio/project.vue b/client/src/pages/portfolio/project.vue
index a14ed984..b701df39 100644
--- a/client/src/pages/portfolio/project.vue
+++ b/client/src/pages/portfolio/project.vue
@@ -13,13 +13,13 @@
:final="project.final"
data-cy="project-share-link"
class="project__share"
- @click.native="updateProjectShareState(project.id, !project.final)" />
+ @click.native="updateProjectShareState(project.id, !project.final)"/>
+ v-if="canEdit"/>
@@ -45,7 +45,7 @@
@@ -109,6 +109,9 @@
projectEntryCount() {
return this.project.entries ? this.project.entries.length : 0;
},
+ canEdit() {
+ return !this.me.readOnly && !this.me.selectedClass.readOnly && this.isOwner;
+ },
},
apollo: {