diff --git a/src/Controllers/UsersController.cs b/src/Controllers/UsersController.cs index 125dc26..4d72204 100644 --- a/src/Controllers/UsersController.cs +++ b/src/Controllers/UsersController.cs @@ -17,16 +17,25 @@ public class UsersController : Controller } [HttpGet("Index")] - public async Task>> Index(string? uid = null) + public async Task>> Index(UsersIndexRequestModel requestModel) { + string? uid = requestModel.Uid; + List attributes = ["cn", "sn", "title", "uid", "jpegPhoto", "userPassword", "description"]; + if (!requestModel.Cn) attributes.Remove("cn"); + if (!requestModel.Sn) attributes.Remove("sn"); + if (!requestModel.Title) attributes.Remove("title"); + if (!requestModel.JpegPhoto) attributes.Remove("jpegPhoto"); + if (!requestModel.UserPassword) attributes.Remove("userPassword"); + if (!requestModel.Description) attributes.Remove("description"); + if (uid is null) { - var users = await _ldap.ListUsersAsync(); + var users = await _ldap.ListUsersAsync([.. attributes]); return users; } else { - var user = await _ldap.GetUserByUidAsync(uid); + var user = await _ldap.GetUserByUidAsync(uid, [.. attributes]); return [user]; } } diff --git a/src/Models/UsersRequestModels.cs b/src/Models/UsersRequestModels.cs index b1f3535..22f26cc 100644 --- a/src/Models/UsersRequestModels.cs +++ b/src/Models/UsersRequestModels.cs @@ -1,5 +1,16 @@ namespace Berufsschule_HAM.Models; +public class UsersIndexRequestModel +{ + public string? Uid { get; set; } = null; + public bool Cn { get; set; } = true; + public bool Sn { get; set; } = true; + public bool Title { get; set; } = true; + public bool Description { get; set; } = true; + public bool JpegPhoto { get; set; } = true; + public bool UserPassword { get; set; } = true; +} + public class UsersModifyRequestModel { public required string uid { get; set; } diff --git a/src/Services/LdapService.cs b/src/Services/LdapService.cs index f459a4f..98fc0e6 100644 --- a/src/Services/LdapService.cs +++ b/src/Services/LdapService.cs @@ -55,11 +55,21 @@ public class LdapService : IDisposable return await ListObjectBy(UsersBaseDn, "", ["cn", "sn", "title", "uid", "jpegPhoto", "userPassword", "description"]); } + public async Task>> ListUsersAsync(string[] attributes) + { + return await ListObjectBy(UsersBaseDn, "", attributes); + } + public async Task> GetUserByUidAsync(string uid) { return (await ListObjectBy(UsersBaseDn, $"uid={uid}", ["cn", "sn", "title", "uid", "jpegPhoto", "userPassword", "description"])).First(); } + public async Task> GetUserByUidAsync(string uid, string[] attributes) + { + return (await ListObjectBy(UsersBaseDn, $"uid={uid}", attributes)).First(); + } + public async Task>> ListDeviceAsync() {