Skip to content

Commit b106631

Browse files
committed
Only admitted users may rate projects
1 parent 4bee27a commit b106631

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

backend/src/services/rating-service.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,12 @@ export class RatingService implements IRatingService {
227227
* Check if the user is permitted to create/modify/delete this rating.
228228
*/
229229
private async checkPermission(rating: Rating, user: User): Promise<void> {
230+
if (!user.admitted) {
231+
throw new ForbiddenError(
232+
"Only admitted users may rate projects",
233+
);
234+
}
235+
230236
const settings = await this._settings.getSettings();
231237
if (!settings.application.allowRatingProjects) {
232238
throw new ForbiddenError(

backend/test/services/rating-service.spec.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ describe("RatingService", () => {
5858
ratingUser.verifyToken = "";
5959
ratingUser.tokenSecret = "";
6060
ratingUser.forgotPasswordToken = "";
61+
ratingUser.admitted = true;
6162

6263
// A user who is a member of the project team
6364
teamMember = new User();
@@ -69,6 +70,7 @@ describe("RatingService", () => {
6970
teamMember.verifyToken = "";
7071
teamMember.tokenSecret = "";
7172
teamMember.forgotPasswordToken = "";
73+
teamMember.admitted = true;
7274

7375
[ratingUser, teamMember] = await userRepo.save([ratingUser, teamMember]);
7476

@@ -98,6 +100,23 @@ describe("RatingService", () => {
98100

99101
describe("checkPermission", () => {
100102
describe("via upsertRating", () => {
103+
it("throws ForbiddenError if user is not admitted", async () => {
104+
expect.assertions(1);
105+
106+
ratingUser.admitted = false
107+
108+
const rating = Object.assign(new Rating(), {
109+
project: mockProject,
110+
user: ratingUser,
111+
criterion: mockCriterion,
112+
rating: 3,
113+
});
114+
115+
await expect(
116+
ratingService.upsertRating(rating, ratingUser),
117+
).rejects.toThrow(ForbiddenError);
118+
});
119+
101120
it("throws ForbiddenError when rating is globally disabled", async () => {
102121
expect.assertions(1);
103122

0 commit comments

Comments
 (0)