Skip to content

Commit ce5a4e5

Browse files
committed
Added additional user lists permissions handling
1 parent 446acb4 commit ce5a4e5

File tree

17 files changed

+278
-96
lines changed

17 files changed

+278
-96
lines changed

src/api/Shrooms.Contracts/Constants/BasicPermissions.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,31 @@ public static class BasicPermissions
1313
public const string Kudos = "KUDOS_BASIC";
1414
public const string Certificate = "CERTIFICATE_BASIC";
1515
public const string Comment = "COMMENT_BASIC";
16-
public const string Event = "EVENT_BASIC";
1716
public const string Exam = "EXAM_BASIC";
1817
public const string Localization = "LOCALIZATION_BASIC";
1918
public const string Skill = "SKILL_BASIC";
2019
public const string Vacation = "VACATIONS_BASIC";
2120
public const string Post = "POST_BASIC";
2221
public const string Support = "SUPPORT_BASIC";
2322
public const string Like = "LIKE_BASIC";
24-
public const string Map = "MAP_BASIC";
2523
public const string Organization = "ORGANIZATION_BASIC";
2624
public const string QualificationLevel = "QUALIFICATIONLEVEL_BASIC";
2725
public const string Project = "PROJECT_BASIC";
2826
public const string Picture = "PICTURE_BASIC";
27+
2928
public const string Room = "ROOM_BASIC";
3029
public const string Floor = "FLOOR_BASIC";
30+
public const string Map = "MAP_BASIC";
3131
public const string Office = "OFFICE_BASIC";
32+
public const string OfficeUsers = "OFFICEUSERS_BASIC";
33+
3234
public const string KudosBasket = "KUDOSBASKET_BASIC";
3335
public const string Wall = "WALL_BASIC";
36+
37+
public const string Event = "EVENT_BASIC";
3438
public const string EventWall = "EVENTWALL_BASIC";
39+
public const string EventUsers = "EVENTUSERS_BASIC";
40+
3541
public const string Lottery = "LOTTERY_BASIC";
3642
}
37-
}
43+
}

src/api/Shrooms.DataLayer/Migrations/202002192014258_InitAdditionalUsersPermissions.Designer.cs

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Shrooms.DataLayer.Migrations
2+
{
3+
using System;
4+
using System.Data.Entity.Migrations;
5+
6+
public partial class InitAdditionalUsersPermissions : DbMigration
7+
{
8+
public override void Up()
9+
{
10+
}
11+
12+
public override void Down()
13+
{
14+
}
15+
}
16+
}

src/api/Shrooms.DataLayer/Migrations/202002192014258_InitAdditionalUsersPermissions.resx

Lines changed: 126 additions & 0 deletions
Large diffs are not rendered by default.

src/api/Shrooms.DataLayer/Migrations/DataInitializer/PermissionInitializer.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,17 @@ internal static void CreatePermissions(ShroomsDbContext context)
3030
.AddBasicPermission(permissionName: BasicPermissions.ServiceRequest, module: Modules.ServiceRequest)
3131
.AddBasicPermission(permissionName: BasicPermissions.OrganizationalStructure)
3232
.AddBasicPermission(permissionName: BasicPermissions.Exam, withRoleNames: Roles.NewUser)
33+
3334
.AddBasicPermission(permissionName: BasicPermissions.Room, withRoleNames: Roles.NewUser)
3435
.AddBasicPermission(permissionName: BasicPermissions.Floor, withRoleNames: Roles.NewUser)
3536
.AddBasicPermission(permissionName: BasicPermissions.Skill, withRoleNames: Roles.NewUser)
37+
.AddBasicPermission(permissionName: BasicPermissions.Office, withRoleNames: Roles.NewUser)
38+
.AddBasicPermission(permissionName: BasicPermissions.OfficeUsers, withRoleNames: Roles.NewUser)
39+
3640
.AddBasicPermission(permissionName: BasicPermissions.Event, withRoleNames: new[] { Roles.External, Roles.Intern })
3741
.AddBasicPermission(permissionName: BasicPermissions.EventWall, withRoleNames: new[] { Roles.External, Roles.Intern })
38-
.AddBasicPermission(permissionName: BasicPermissions.Office, withRoleNames: Roles.NewUser)
42+
.AddBasicPermission(permissionName: BasicPermissions.EventUsers, withRoleNames: Roles.NewUser)
43+
3944
.AddBasicPermission(permissionName: BasicPermissions.Picture, withRoleNames: Roles.NewUser)
4045
.AddBasicPermission(permissionName: BasicPermissions.Certificate, withRoleNames: Roles.NewUser)
4146
.AddBasicPermission(permissionName: BasicPermissions.ApplicationUser, withRoleNames: Roles.NewUser)
@@ -46,7 +51,6 @@ internal static void CreatePermissions(ShroomsDbContext context)
4651
//admin permissions
4752
permissionBuilder
4853
.AddAdminPermission(permissionName: AdministrationPermissions.Wall, withRoleNames: Roles.Administration)
49-
.AddAdminPermission(permissionName: AdministrationPermissions.EventWall, withRoleNames: Roles.Administration)
5054
.AddAdminPermission(permissionName: AdministrationPermissions.Post, withRoleNames: Roles.Administration)
5155
.AddAdminPermission(permissionName: AdministrationPermissions.Book, withRoleNames: Roles.Administration, module: Modules.Books)
5256
.AddAdminPermission(permissionName: AdministrationPermissions.Role, withRoleNames: Roles.Administration)
@@ -65,7 +69,10 @@ internal static void CreatePermissions(ShroomsDbContext context)
6569
.AddAdminPermission(permissionName: AdministrationPermissions.Administration, withRoleNames: Roles.Administration)
6670
.AddAdminPermission(permissionName: AdministrationPermissions.ApplicationUser, withRoleNames: Roles.Administration)
6771
.AddAdminPermission(permissionName: AdministrationPermissions.QualificationLevel, withRoleNames: Roles.Administration)
72+
6873
.AddAdminPermission(permissionName: AdministrationPermissions.Event, withRoleNames: new[] { Roles.Administration, Roles.EventsManagement })
74+
.AddAdminPermission(permissionName: AdministrationPermissions.EventWall, withRoleNames: Roles.Administration)
75+
6976
.AddAdminPermission(permissionName: AdministrationPermissions.Vacation, withRoleNames: new[] { Roles.Accountant, Roles.Administration }, module: Modules.Vacation)
7077
.AddAdminPermission(permissionName: AdministrationPermissions.Committees, withRoleNames: new[] { Roles.Administration, Roles.KudosAdmin })
7178
.AddAdminPermission(permissionName: AdministrationPermissions.ServiceRequest, withRoleNames: new[] { Roles.ServiceRequest, Roles.ServiceRequestNotification }, module: Modules.ServiceRequest)

src/api/Shrooms.DataLayer/Shrooms.DataLayer.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,10 @@
831831
<Compile Include="Migrations\202002101044528_AddIsShownWithMainEventsField.Designer.cs">
832832
<DependentUpon>202002101044528_AddIsShownWithMainEventsField.cs</DependentUpon>
833833
</Compile>
834+
<Compile Include="Migrations\202002192014258_InitAdditionalUsersPermissions.cs" />
835+
<Compile Include="Migrations\202002192014258_InitAdditionalUsersPermissions.Designer.cs">
836+
<DependentUpon>202002192014258_InitAdditionalUsersPermissions.cs</DependentUpon>
837+
</Compile>
834838
<Compile Include="Migrations\Configuration.cs" />
835839
<Compile Include="Migrations\DataInitializer\ModulesInitializer.cs" />
836840
<Compile Include="Migrations\DataInitializer\PermissionBuilder.cs" />
@@ -1382,6 +1386,9 @@
13821386
<EmbeddedResource Include="Migrations\202002101044528_AddIsShownWithMainEventsField.resx">
13831387
<DependentUpon>202002101044528_AddIsShownWithMainEventsField.cs</DependentUpon>
13841388
</EmbeddedResource>
1389+
<EmbeddedResource Include="Migrations\202002192014258_InitAdditionalUsersPermissions.resx">
1390+
<DependentUpon>202002192014258_InitAdditionalUsersPermissions.cs</DependentUpon>
1391+
</EmbeddedResource>
13851392
<EmbeddedResource Include="sql_scripts\likes_migration.sql">
13861393
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
13871394
</EmbeddedResource>

src/api/Shrooms.Presentation.Api/Controllers/RoomController.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,24 @@ public RoomController(IMapper mapper, IUnitOfWork unitOfWork, ShroomsUserManager
2929
private void RemoveRoomForUsers(RoomPostViewModel roomViewModel)
3030
{
3131
var model = _repository.Get(r => r.Id == roomViewModel.Id, includeProperties: "ApplicationUsers").FirstOrDefault();
32-
if (model.ApplicationUsers.Any())
32+
if (model != null && !model.ApplicationUsers.Any())
3333
{
34-
var removedFromRoom = model.ApplicationUsers.Where(applicationUser => roomViewModel.ApplicationUsers.All(u => u.Id != applicationUser.Id)).ToList();
35-
if (!removedFromRoom.Any())
36-
{
37-
return;
38-
}
34+
return;
35+
}
36+
37+
var removedFromRoom = model.ApplicationUsers.Where(applicationUser => roomViewModel.ApplicationUsers.All(u => u.Id != applicationUser.Id)).ToList();
38+
if (!removedFromRoom.Any())
39+
{
40+
return;
41+
}
3942

40-
foreach (var applicationUser in removedFromRoom)
43+
foreach (var applicationUser in removedFromRoom)
44+
{
45+
var user = UserManager.FindById(applicationUser.Id);
46+
if (user != null)
4147
{
42-
var user = UserManager.FindById(applicationUser.Id);
43-
if (user != null)
44-
{
45-
user.RoomId = null;
46-
UserManager.Update(user);
47-
}
48+
user.RoomId = null;
49+
UserManager.Update(user);
4850
}
4951
}
5052
}

src/webapp/src/client/app/common/directives/share-btn/share-modal/share-modal.directive.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,25 +75,25 @@
7575
vm.shareModalConfirm = shareModalConfirm ? shareModalConfirm : 'common.share';
7676
vm.shareModalSelectLabel = 'common.shareModalWallLabel';
7777
vm.shareModalDescriptionLabel = 'common.shareModalDescriptionLabel';
78-
78+
7979
vm.formSettings = FORM_SETTINGS;
80-
80+
8181
vm.walls = wallService.wallServiceData.wallList;
8282
vm.selectedWall;
8383
vm.description;
8484
vm.disableButton = false;
8585

8686
vm.share = share;
8787
vm.closeModal = closeModal;
88-
88+
8989
var shareItemCategory = shareModalItemCategory.toLowerCase();
90-
90+
9191
var itemToShare = {
9292
wallId: null,
9393
messageBody: null
9494
};
95-
96-
itemToShare[shareItemCategory + 'Id'] = shareItemId;
95+
96+
itemToShare['Id'] = shareItemId;
9797

9898
////////////
9999

src/webapp/src/client/app/events/content/participants/participants.component.js

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
vm.isDeleteVisible = isDeleteVisible;
5050
vm.isActiveTab = isActiveTab;
5151
vm.isExportVisible = isExportVisible;
52-
vm.participantCount = participantCount;
5352

5453
/////////
5554

@@ -63,18 +62,6 @@
6362
});
6463
}
6564

66-
function participantCount() {
67-
var participantCount = 0;
68-
vm.event.participants.forEach(function(participant) {
69-
if (participant.attendStatus == attendStatus.Attending)
70-
{
71-
participantCount++;
72-
}
73-
})
74-
75-
return participantCount;
76-
}
77-
7865
function isActiveTab(tab) {
7966
return !!lodash.find(vm.participantsTabs, function(obj) {
8067
return !!obj.isOpen && obj.name === tab;
@@ -86,14 +73,7 @@
8673
}
8774

8875
function isExportVisible() {
89-
var participantCount = 0;
90-
vm.event.participants.forEach(function(participant) {
91-
if (participant.attendStatus == attendStatus.Attending) {
92-
participantCount++;
93-
}
94-
})
95-
96-
return participantCount > 0 ? true : false;
76+
return vm.event.goingCount > 0;
9777
}
9878

9979
function expelUserFromEvent(participant) {

src/webapp/src/client/app/events/content/participants/participants.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<div ng-if="!!vm.event.options.length"
66
class="event-participants-tabs"
77
data-toggle="buttons">
8-
<div class="btn event-options-tab"
8+
<div class="btn event-options-tab" has-permissions="['EVENTUSERS_BASIC']"
99
ng-class="{active: vm.isActiveTab('OptionsList')}"
1010
ng-click="vm.goToTab('OptionsList')"
1111
title="{{'events.eventParticipantsOptions' | translate}}" translate-cloak>
@@ -19,22 +19,22 @@
1919
<input type="radio" />
2020
<span translate="events.eventParticipants"></span>
2121
<span class="badge badge-default" data-test-id="participants-count">
22-
{{vm.participantCount()}}/{{vm.event.maxParticipants}}
22+
{{vm.event.goingCount}}/{{vm.event.maxParticipants}}
2323
</span>
2424
</div>
2525
<div class="clearfix"></div>
2626
</div>
2727
<div ng-if="!vm.event.options.length" class="event-participants-title">
2828
<span translate="events.eventParticipants"></span>
2929
<span class="badge badge-default" data-test-id="participants-count">
30-
{{vm.participantCount()}}/{{vm.event.maxParticipants}}
30+
{{vm.event.goingCount}}/{{vm.event.maxParticipants}}
3131
</span>
3232
</div>
3333
</div>
34-
<div class="event-participants-container-actions" ng-if="!vm.isLoading && vm.isExportVisible()">
34+
<div class="event-participants-container-actions" ng-if="!vm.isLoading && vm.isExportVisible()" has-permissions="['EVENTUSERS_BASIC']">
3535
<ace-event-participants-actions event="vm.event" is-admin="vm.isAdmin"></ace-event-participants-actions>
3636
</div>
37-
<div class="event-participants-container-body" ng-if="!vm.isLoading">
37+
<div class="event-participants-container-body" ng-if="!vm.isLoading" has-permissions="['EVENTUSERS_BASIC']">
3838
<div class="event-tab-content-show" ng-show="vm.isActiveTab('ParticipantsList')">
3939
<ace-event-join ng-if="vm.eventStatusService.getEventStatus(vm.event, true) === vm.eventStatus.Join"
4040
event="vm.event"

0 commit comments

Comments
 (0)