From 09b0d19de082ef327070f286ba5d3cdb4cd4e6eb Mon Sep 17 00:00:00 2001 From: GabrielMeyer Date: Fri, 31 Jan 2020 12:08:29 +0100 Subject: [PATCH] Fixes permissions for assignments - There were some fields that user could see/click/handle, although the user has not the correct permission for the action --- .../app/shared/directives/perms.directive.ts | 2 +- .../src/app/shared/models/poll/base-poll.ts | 16 ++++- .../assignment-detail.component.html | 9 +-- .../assignment-detail.component.scss | 7 +-- .../assignment-poll.component.html | 58 ++++++++++--------- .../assignment-poll.component.ts | 5 ++ 6 files changed, 57 insertions(+), 40 deletions(-) diff --git a/client/src/app/shared/directives/perms.directive.ts b/client/src/app/shared/directives/perms.directive.ts index cdb450285..d9908cfef 100644 --- a/client/src/app/shared/directives/perms.directive.ts +++ b/client/src/app/shared/directives/perms.directive.ts @@ -108,7 +108,7 @@ export class PermsDirective implements OnInit, OnDestroy { } /** - * COmes from the view. + * Comes from the view. */ @Input('osPermsComplement') public set osPermsComplement(value: boolean) { diff --git a/client/src/app/shared/models/poll/base-poll.ts b/client/src/app/shared/models/poll/base-poll.ts index 9aec1d218..6dbe9fd3d 100644 --- a/client/src/app/shared/models/poll/base-poll.ts +++ b/client/src/app/shared/models/poll/base-poll.ts @@ -68,11 +68,25 @@ export abstract class BasePoll = any> extends return this.state === PollState.Published; } + /** + * If the state is finished. + */ + public get isFinished(): boolean { + return this.state === PollState.Finished; + } + + /** + * If the state is published. + */ + public get isPublished(): boolean { + return this.state === PollState.Published; + } + /** * Determine if the state is finished or published */ public get stateHasVotes(): boolean { - return this.state === PollState.Finished || this.state === PollState.Published; + return this.isFinished || this.isPublished; } protected getDecimalFields(): (keyof BasePoll)[] { diff --git a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html index a07b22c7e..e2470145a 100644 --- a/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html +++ b/client/src/app/site/assignments/components/assignment-detail/assignment-detail.component.html @@ -70,9 +70,7 @@ - - - + @@ -143,12 +141,12 @@ [input]="assignment.assignment_related_users" [live]="true" [count]="assignment.number_poll_candidates" - [enable]="hasPerms('addOthers')" + [enable]="hasPerms('manage')" (sortEvent)="onSortingChange($event)" > - + - - -
-
-

+ +

+
- {{ poll.stateVerbose }} + {{ poll.stateVerbose | translate }} + + + {{ poll.stateVerbose | translate }}
+
+ + +
-
+ +
+
- -
+ diff --git a/client/src/app/site/assignments/components/assignment-poll/assignment-poll.component.ts b/client/src/app/site/assignments/components/assignment-poll/assignment-poll.component.ts index b85b9326c..1e77fdc7f 100644 --- a/client/src/app/site/assignments/components/assignment-poll/assignment-poll.component.ts +++ b/client/src/app/site/assignments/components/assignment-poll/assignment-poll.component.ts @@ -11,6 +11,7 @@ import { AssignmentPollRepositoryService } from 'app/core/repositories/assignmen import { PromptService } from 'app/core/ui-services/prompt.service'; import { ChartType } from 'app/shared/components/charts/charts.component'; import { AssignmentPollMethods } from 'app/shared/models/assignments/assignment-poll'; +import { PollState } from 'app/shared/models/poll/base-poll'; import { BasePollComponent } from 'app/site/polls/components/base-poll.component'; import { PollService } from 'app/site/polls/services/poll.service'; import { AssignmentPollDialogService } from '../../services/assignment-poll-dialog.service'; @@ -67,6 +68,10 @@ export class AssignmentPollComponent extends BasePollComponent