Implemented user creation in frontend

This commit is contained in:
2025-10-25 22:44:36 +02:00
parent 310e05545f
commit 85cb68a6c2
4 changed files with 220 additions and 14 deletions

View File

@@ -60,15 +60,19 @@ public class UsersController : Controller
}
}
[HttpGet("Create")]
public async Task<bool> Create(string cn, string sn, string? title, string? uid, string userPassword, string? description, string jpegPhoto)
[HttpPost("Create")]
public async Task<UsersCreateResponseModel> Create([FromBody] UsersCreateRequestModel requestModel)
{
try
{
string? jpegPhoto = requestModel.JpegPhoto;
string? title = requestModel.Title;
string userPassword = requestModel.UserPassword ?? "";
UserDescription? description = requestModel.Description;
jpegPhoto ??= Convert.ToBase64String(System.IO.File.ReadAllBytes("wwwroot/user_default.jpeg")); // TODO: cleanup - make this a config setting
uid ??= UsersHelper.CreateUsername(cn, sn);
string uid = UsersHelper.CreateUsername(requestModel.Cn ?? "", requestModel.Sn ?? "");
title ??= "";
description ??= "{}";
description ??= new() {Address = new(), BirthDate = "", Workplace = "", Groups = []};
if (!userPassword.StartsWith('{'))
{
byte[] passwordBytes = Encoding.UTF8.GetBytes(userPassword);
@@ -79,26 +83,26 @@ public class UsersController : Controller
LdapAttributeSet attributeSet =
[
new LdapAttribute("objectClass", "inetOrgPerson"),
new LdapAttribute("cn", cn),
new LdapAttribute("sn", sn),
new LdapAttribute("cn", requestModel.Cn),
new LdapAttribute("sn", requestModel.Sn),
new LdapAttribute("title", title),
new LdapAttribute("uid", uid),
new LdapAttribute("jpegPhoto", jpegPhoto),
new LdapAttribute("description", description),
new LdapAttribute("description", JsonSerializer.Serialize(description)),
new LdapAttribute("userPassword", userPassword),
];
await _ldap.CreateUser(uid, attributeSet);
return true;
return new(){Success = true, Uid = uid};
}
catch (Exception ex)
{
_logger.LogError("Unable to create user: {ex.Message} - {ex.StackTrace}", [ex.Message, ex.StackTrace]);
return false;
return new() {Success = false, Exception = ex.Message};
}
}
[HttpPost("Update")]
public async Task<UsersUpdateRequestModel> Update([FromBody] UsersModifyRequestModel requestModel)
public async Task<UsersUpdateResponseModel> Update([FromBody] UsersModifyRequestModel requestModel)
{
if (requestModel is null)
{