mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Implemented users update button in frontend
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
// Controllers/UsersController.cs
|
||||
using Berufsschule_HAM.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Novell.Directory.Ldap;
|
||||
@@ -8,6 +7,7 @@ using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using System.Text.Json;
|
||||
using System.Buffers.Text;
|
||||
|
||||
[Authorize(Roles = "CanManageUsers")]
|
||||
[Route("[controller]")]
|
||||
@@ -66,7 +66,7 @@ public class UsersController : Controller
|
||||
try
|
||||
{
|
||||
jpegPhoto ??= Convert.ToBase64String(System.IO.File.ReadAllBytes("wwwroot/user_default.jpeg")); // TODO: cleanup - make this a config setting
|
||||
uid ??= sn.ToLower() + cn.ToLower();
|
||||
uid ??= UsersHelper.CreateUsername(cn, sn);
|
||||
title ??= "";
|
||||
description ??= "{}";
|
||||
if (!userPassword.StartsWith('{'))
|
||||
@@ -98,53 +98,67 @@ public class UsersController : Controller
|
||||
}
|
||||
|
||||
[HttpPost("Update")]
|
||||
public async Task<bool> Update([FromBody] UsersModifyRequestModel requestModel)
|
||||
public async Task<UsersUpdateRequestModel> Update([FromBody] UsersModifyRequestModel requestModel)
|
||||
{
|
||||
if (requestModel is null)
|
||||
{
|
||||
_logger.LogError("Unable to update a user because the UsersModifyRequestModel is null");
|
||||
return false;
|
||||
return new() { Success = false };
|
||||
}
|
||||
string uid = requestModel.uid;
|
||||
UserModel? user = null;
|
||||
if (requestModel.Cn is not null)
|
||||
try
|
||||
{
|
||||
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)
|
||||
string uid = requestModel.Uid;
|
||||
UserModel? user = null;
|
||||
if (requestModel.NewUid is not null && requestModel.NewUid.Length > 0)
|
||||
{
|
||||
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", JsonSerializer.Serialize(requestModel.Description));
|
||||
}
|
||||
if (requestModel.JpegPhoto is not null && requestModel.JpegPhoto.Length > 0)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "jpegPhoto", requestModel.JpegPhoto);
|
||||
}
|
||||
if (requestModel.UserPassword is not null && requestModel.UserPassword.Length > 0)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "userPassword", "{SHA256}" + Convert.ToBase64String(SHA256.HashData(Encoding.UTF8.GetBytes(requestModel.UserPassword))));
|
||||
}
|
||||
|
||||
string newUid = uid;
|
||||
if (requestModel.Cn is not null)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "cn", requestModel.Cn);
|
||||
user ??= await _ldap.GetUserByUidAsync(uid);
|
||||
newUid = UsersHelper.CreateUsername(requestModel.Cn, user.Sn ?? "");
|
||||
|
||||
}
|
||||
if (requestModel.Sn is not null)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "sn", requestModel.Sn);
|
||||
user ??= await _ldap.GetUserByUidAsync(uid);
|
||||
newUid = UsersHelper.CreateUsername(user.Cn ?? "", requestModel.Sn);
|
||||
}
|
||||
if (newUid.Length == 0)
|
||||
{
|
||||
throw new Exception("Username cannot be empty");
|
||||
}
|
||||
if (newUid != uid)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "uid", newUid);
|
||||
uid = newUid;
|
||||
}
|
||||
return new() { Success = true, NewUid = uid };
|
||||
} catch (Exception ex)
|
||||
{
|
||||
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;
|
||||
return new() { Success = false, Exception = ex.Message };
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
[HttpPost("AddGroup")]
|
||||
|
||||
Reference in New Issue
Block a user