Added filter by username for /Users/Index, implemented /Users/Update

This commit is contained in:
2025-09-28 21:41:04 +02:00
parent c2525cf40e
commit 2f894881b2
3 changed files with 100 additions and 6 deletions

View File

@@ -2,7 +2,7 @@
using Berufsschule_HAM.Services;
using Microsoft.AspNetCore.Mvc;
using Novell.Directory.Ldap;
using System.Threading.Tasks;
using Berufsschule_HAM.Models;
[Route("[controller]")]
public class UsersController : Controller
@@ -17,10 +17,18 @@ public class UsersController : Controller
}
[HttpGet("Index")]
public async Task<IEnumerable<Dictionary<string, string>>> Index()
public async Task<IEnumerable<Dictionary<string, string>>> Index(string? uid = null)
{
var users = await _ldap.ListUsersAsync();
return users;
if (uid is null)
{
var users = await _ldap.ListUsersAsync();
return users;
}
else
{
var user = await _ldap.GetUserByUidAsync(uid);
return [user];
}
}
[HttpGet("Delete")]
@@ -42,7 +50,7 @@ public class UsersController : Controller
[HttpGet("Create")]
public bool Create(string cn, string sn, string? title, string? uid, string userPassword, string? description, string jpegPhoto)
{
{
try
{
jpegPhoto ??= System.IO.File.ReadAllText("wwwroot/user_default.jpeg"); // TODO: cleanup - make this a config setting
@@ -69,5 +77,54 @@ public class UsersController : Controller
return false;
}
}
[HttpPost("Update")]
public async Task<bool> Update([FromBody]UsersModifyRequestModel requestModel)
{
if (requestModel is null)
{
_logger.LogError("Unable to update a user because the UsersModifyRequestModel is null");
return false;
}
string uid = requestModel.uid;
Dictionary<string, string>? user = null;
if (requestModel.Cn is not null)
{
await _ldap.UpdateUser(uid, "cn", requestModel.Cn);
user ??= await _ldap.GetUserByUidAsync(uid);
string newUid = user["sn"].ToLower() + requestModel.Cn.ToLower();
await _ldap.UpdateUser(uid, "uid", newUid);
uid = newUid;
}
if (requestModel.Sn is not null)
{
await _ldap.UpdateUser(uid, "sn", requestModel.Sn);
user ??= await _ldap.GetUserByUidAsync(uid);
string newUid = requestModel.Sn.ToLower() + user["cn"].ToLower();
await _ldap.UpdateUser(uid, "uid", newUid);
uid = newUid;
}
if (requestModel.NewUid is not null)
{
await _ldap.UpdateUser(uid, "uid", requestModel.NewUid);
uid = requestModel.NewUid;
}
if (requestModel.Title is not null)
{
await _ldap.UpdateUser(uid, "title", requestModel.Title);
}
if (requestModel.Description is not null)
{
await _ldap.UpdateUser(uid, "description", requestModel.Description);
}
if (requestModel.JpegPhoto is not null)
{
await _ldap.UpdateUser(uid, "jpegPhoto", requestModel.JpegPhoto);
}
if (requestModel.UserPassword is not null)
{
await _ldap.UpdateUser(uid, "userPassword", requestModel.UserPassword);
}
return true;
}
}