mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-19 22:41:55 +00:00
Fixed missing required fields and other issues in users view
This commit is contained in:
@@ -76,7 +76,6 @@ public class UsersController : Controller
|
||||
UserDescription? description = requestModel.Description;
|
||||
jpegPhoto ??= ImageHelper.GetDefaultUserImageAsBase64();
|
||||
string uid = UsersHelper.CreateUsername(requestModel.Cn ?? "", requestModel.Sn ?? "");
|
||||
title ??= "";
|
||||
description ??= new() {Address = new(), BirthDate = "", Workplace = "", Groups = []};
|
||||
if (!userPassword.StartsWith('{'))
|
||||
{
|
||||
@@ -88,12 +87,13 @@ public class UsersController : Controller
|
||||
new LdapAttribute("objectClass", "inetOrgPerson"),
|
||||
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", JsonSerializer.Serialize(description)),
|
||||
new LdapAttribute("userPassword", userPassword),
|
||||
];
|
||||
if (title is not null && title.Length > 0) attributeSet.Add(new LdapAttribute("title", title));
|
||||
|
||||
await _ldap.CreateUser(uid, attributeSet);
|
||||
return new(){Success = true, Uid = uid};
|
||||
}
|
||||
@@ -122,7 +122,7 @@ public class UsersController : Controller
|
||||
await _ldap.UpdateUser(uid, "uid", requestModel.NewUid);
|
||||
uid = requestModel.NewUid;
|
||||
}
|
||||
if (requestModel.Title is not null)
|
||||
if (requestModel.Title is not null && requestModel.Title.Length > 0)
|
||||
{
|
||||
await _ldap.UpdateUser(uid, "title", requestModel.Title);
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="updateAddressStreetNr">@T["Street Nr."]</label>
|
||||
<input type="text" id="updateAddressStreetNr" name="Description.Address.StreetNr" class="form-control" />
|
||||
<input type="number" id="updateAddressStreetNr" name="Description.Address.StreetNr" class="form-control" />
|
||||
</div>
|
||||
<hr class="my-3">
|
||||
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
||||
@@ -213,7 +213,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="updatePassword">@T["New Password"]</label>
|
||||
<input type="password" id="updatePassword" name="UserPassword" class="form-control" />
|
||||
<input type="password" id="updatePassword" name="UserPassword" class="form-control" pattern="(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}" title="@T["Password must be at least 8 characters long and include upper, lower, number, and special character"]" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="updatePhotoFile">@T["Photo"]</label>
|
||||
@@ -278,6 +278,9 @@
|
||||
var dataFromEntries = Object.fromEntries(new FormData(updateForm).entries());
|
||||
var data = unflatten(dataFromEntries);
|
||||
data.Description.Groups = Array.from(updateForm.querySelector('#updateGroups').selectedOptions).map(option => option.value);
|
||||
if (data.Description.Address.StreetNr == "") {
|
||||
delete(data.Description.Address.StreetNr);
|
||||
}
|
||||
try {
|
||||
const response = await fetch('/Users/Update', {
|
||||
method: 'POST',
|
||||
@@ -435,11 +438,11 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createName">@T["Name"]</label>
|
||||
<input type="text" name="Cn" id="createName" class="form-control" />
|
||||
<input type="text" name="Cn" id="createName" required class="form-control" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createSurname">@T["Surname"]</label>
|
||||
<input type="text" name="Sn" id="createSurname" class="form-control" />
|
||||
<input type="text" name="Sn" id="createSurname" required class="form-control" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createBirthDate">@T["Birth Date"]</label>
|
||||
@@ -455,7 +458,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createStreetNr">@T["Street Nr."]</label>
|
||||
<input type="text" id="createStreetNr" name="Description.Address.StreetNr" class="form-control" />
|
||||
<input type="number" id="createStreetNr" name="Description.Address.StreetNr" class="form-control" />
|
||||
</div>
|
||||
<hr class="my-3">
|
||||
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
||||
@@ -471,7 +474,7 @@
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createPassword">@T["Password"]</label>
|
||||
<input type="password" id="createPassword" name="UserPassword" class="form-control" />
|
||||
<input type="password" id="createPassword" name="UserPassword" class="form-control" pattern="(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}" title="@T["Password must be at least 8 characters long and include upper, lower, number, and special character"]" required />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="createPhotoFile">@T["Photo"]</label>
|
||||
@@ -539,7 +542,9 @@
|
||||
const dataFromEntries = Object.fromEntries(new FormData(createForm).entries());
|
||||
const data = unflatten(dataFromEntries);
|
||||
data.Description.Groups = Array.from(createGroupsSelect.selectedOptions).map(o => o.value);
|
||||
|
||||
if (data.Description.Address.StreetNr == "") {
|
||||
delete(data.Description.Address.StreetNr);
|
||||
}
|
||||
try {
|
||||
const response = await fetch('/Users/Create', {
|
||||
method: 'POST',
|
||||
@@ -572,7 +577,7 @@
|
||||
data-user-birthdate="${data.Description.BirthDate}"
|
||||
data-user-address-city="${data.Description.Address.City}"
|
||||
data-user-address-street="${data.Description.Address.Street}"
|
||||
data-user-address-streetnr="${data.Description.Address.StreetNr}"
|
||||
data-user-address-streetnr="${data.Description.Address.StreetNr || ""}"
|
||||
data-user-workplace="${data.Description?.Workplace || ''}"
|
||||
data-user-groups='${JSON.stringify(data.Description?.Groups || [])}'
|
||||
data-bs-toggle="modal"
|
||||
|
||||
Reference in New Issue
Block a user