diff --git a/src/Controllers/HomeController.cs b/src/Controllers/HomeController.cs index d513b5a..6b0647f 100644 --- a/src/Controllers/HomeController.cs +++ b/src/Controllers/HomeController.cs @@ -94,7 +94,8 @@ public class HomeController : Controller [HttpGet("Groups")] public async Task GroupsAsync() { - return View(); // TODO: Add viewmodel + IEnumerable groups = await _ldap.ListGroupsAsync(); + return View(new GroupsIndexViewModel(groups)); } [HttpPost("Login")] diff --git a/src/Models/GroupModel.cs b/src/Models/GroupModel.cs index c625c15..e094979 100644 --- a/src/Models/GroupModel.cs +++ b/src/Models/GroupModel.cs @@ -7,12 +7,14 @@ namespace Berufsschule_HAM.Models; public class GroupModel { public required string Cn { get; set; } + public string DisplayName { get; set; } public string? GidNumber { get; set; } public List Permissions { get; set; } public GroupModel(Dictionary ldapData) { Cn = ldapData.GetValueOrDefault("cn") ?? throw new GroupModelConfigurationException(); GidNumber = ldapData.GetValueOrDefault("gidNumber"); + DisplayName = ldapData.GetValueOrDefault("displayName") ?? Cn; string? descriptionValue = ldapData.GetValueOrDefault("description"); if (descriptionValue is null) { diff --git a/src/Models/GroupsViewModels.cs b/src/Models/GroupsViewModels.cs new file mode 100644 index 0000000..362145d --- /dev/null +++ b/src/Models/GroupsViewModels.cs @@ -0,0 +1,38 @@ +namespace Berufsschule_HAM.Models; + +public class GroupsIndexViewModel +{ + public List GroupsTableViewModels { get; set; } = []; + + public GroupsIndexViewModel(IEnumerable groupModels) + { + foreach (GroupModel model in groupModels) + { + GroupsTableViewModels.Add(new() + { + Cn = model.Cn, + Group = model.DisplayName, + CanInventorize = model.Permissions.Any(x => x == GroupPermission.CanInventorize), + CanManageAssets = model.Permissions.Any(x => x == GroupPermission.CanManageAssets), + CanManageGroups = model.Permissions.Any(x => x == GroupPermission.CanManageGroups), + CanManageLocations = model.Permissions.Any(x => x == GroupPermission.CanManageLocations), + CanManageUsers = model.Permissions.Any(x => x == GroupPermission.CanManageUsers) + }); + } + } + + + + +} + +public class GroupsTableViewModel +{ + public required string Cn { get; set; } + public required string Group { get; set; } + public required bool CanInventorize { get; set; } + public required bool CanManageUsers { get; set; } + public required bool CanManageLocations { get; set; } + public required bool CanManageAssets { get; set; } + public required bool CanManageGroups { get; set; } +} \ No newline at end of file diff --git a/src/Services/LdapService.cs b/src/Services/LdapService.cs index 65e37e3..2ff006d 100644 --- a/src/Services/LdapService.cs +++ b/src/Services/LdapService.cs @@ -134,6 +134,11 @@ public partial class LdapService : IDisposable return returnValue; } + public async Task> ListGroupsAsync() + { + return await ListGroupsAsync(GroupsAttributes); + } + public async Task> ListGroupsAsync(string[] attributes) { List returnValue = []; diff --git a/src/Views/Home/Groups.cshtml b/src/Views/Home/Groups.cshtml index e9ef79b..8aff08b 100644 --- a/src/Views/Home/Groups.cshtml +++ b/src/Views/Home/Groups.cshtml @@ -1,7 +1,7 @@ @using Microsoft.AspNetCore.Mvc.Localization @using Berufsschule_HAM.Models @using System.Buffers.Text -@* @model UsersIndexViewModel *@ +@model GroupsIndexViewModel @inject IViewLocalizer T @{ ViewData["Title"] = T["Groups"]; @@ -23,39 +23,38 @@ Group @T["Can"]:
@T["inventorize"] - @T["Can"]:
@T["Manage users"] - @T["Can"]:
@T["Manage locations"] - @T["Can"]:
@T["Manage assets"] + @T["Can"]:
@T["manage users"] + @T["Can"]:
@T["manage locations"] + @T["Can"]:
@T["manage assets"] @T["Can"]:
@T["manage groups"] + @T["Action"] - @* @{ - foreach (UserTableViewModel userTableViewModel in Model.UserTableViewModels) + @{ + foreach (GroupsTableViewModel userTableViewModel in Model.GroupsTableViewModels) { - - Photo - - @userTableViewModel.Uid - @userTableViewModel.Title - @userTableViewModel.Name - @userTableViewModel.Surname - @userTableViewModel.Workplace - -
+ @userTableViewModel.Group + @userTableViewModel.CanInventorize + @userTableViewModel.CanManageUsers + @userTableViewModel.CanManageLocations + @userTableViewModel.CanManageAssets + @userTableViewModel.CanManageGroups + +
} - } *@ + }