mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51: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;
|
UserDescription? description = requestModel.Description;
|
||||||
jpegPhoto ??= ImageHelper.GetDefaultUserImageAsBase64();
|
jpegPhoto ??= ImageHelper.GetDefaultUserImageAsBase64();
|
||||||
string uid = UsersHelper.CreateUsername(requestModel.Cn ?? "", requestModel.Sn ?? "");
|
string uid = UsersHelper.CreateUsername(requestModel.Cn ?? "", requestModel.Sn ?? "");
|
||||||
title ??= "";
|
|
||||||
description ??= new() {Address = new(), BirthDate = "", Workplace = "", Groups = []};
|
description ??= new() {Address = new(), BirthDate = "", Workplace = "", Groups = []};
|
||||||
if (!userPassword.StartsWith('{'))
|
if (!userPassword.StartsWith('{'))
|
||||||
{
|
{
|
||||||
@@ -88,12 +87,13 @@ public class UsersController : Controller
|
|||||||
new LdapAttribute("objectClass", "inetOrgPerson"),
|
new LdapAttribute("objectClass", "inetOrgPerson"),
|
||||||
new LdapAttribute("cn", requestModel.Cn),
|
new LdapAttribute("cn", requestModel.Cn),
|
||||||
new LdapAttribute("sn", requestModel.Sn),
|
new LdapAttribute("sn", requestModel.Sn),
|
||||||
new LdapAttribute("title", title),
|
|
||||||
new LdapAttribute("uid", uid),
|
new LdapAttribute("uid", uid),
|
||||||
new LdapAttribute("jpegPhoto", jpegPhoto),
|
new LdapAttribute("jpegPhoto", jpegPhoto),
|
||||||
new LdapAttribute("description", JsonSerializer.Serialize(description)),
|
new LdapAttribute("description", JsonSerializer.Serialize(description)),
|
||||||
new LdapAttribute("userPassword", userPassword),
|
new LdapAttribute("userPassword", userPassword),
|
||||||
];
|
];
|
||||||
|
if (title is not null && title.Length > 0) attributeSet.Add(new LdapAttribute("title", title));
|
||||||
|
|
||||||
await _ldap.CreateUser(uid, attributeSet);
|
await _ldap.CreateUser(uid, attributeSet);
|
||||||
return new(){Success = true, Uid = uid};
|
return new(){Success = true, Uid = uid};
|
||||||
}
|
}
|
||||||
@@ -122,7 +122,7 @@ public class UsersController : Controller
|
|||||||
await _ldap.UpdateUser(uid, "uid", requestModel.NewUid);
|
await _ldap.UpdateUser(uid, "uid", requestModel.NewUid);
|
||||||
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);
|
await _ldap.UpdateUser(uid, "title", requestModel.Title);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -197,7 +197,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="updateAddressStreetNr">@T["Street Nr."]</label>
|
<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>
|
</div>
|
||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
||||||
@@ -213,7 +213,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="updatePassword">@T["New Password"]</label>
|
<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>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="updatePhotoFile">@T["Photo"]</label>
|
<label class="form-label" for="updatePhotoFile">@T["Photo"]</label>
|
||||||
@@ -278,6 +278,9 @@
|
|||||||
var dataFromEntries = Object.fromEntries(new FormData(updateForm).entries());
|
var dataFromEntries = Object.fromEntries(new FormData(updateForm).entries());
|
||||||
var data = unflatten(dataFromEntries);
|
var data = unflatten(dataFromEntries);
|
||||||
data.Description.Groups = Array.from(updateForm.querySelector('#updateGroups').selectedOptions).map(option => option.value);
|
data.Description.Groups = Array.from(updateForm.querySelector('#updateGroups').selectedOptions).map(option => option.value);
|
||||||
|
if (data.Description.Address.StreetNr == "") {
|
||||||
|
delete(data.Description.Address.StreetNr);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/Users/Update', {
|
const response = await fetch('/Users/Update', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -435,11 +438,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createName">@T["Name"]</label>
|
<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>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createSurname">@T["Surname"]</label>
|
<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>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createBirthDate">@T["Birth Date"]</label>
|
<label class="form-label" for="createBirthDate">@T["Birth Date"]</label>
|
||||||
@@ -455,7 +458,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createStreetNr">@T["Street Nr."]</label>
|
<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>
|
</div>
|
||||||
<hr class="my-3">
|
<hr class="my-3">
|
||||||
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
<h4 class="fw-bold">@T["Workplace & account"]</h4>
|
||||||
@@ -471,7 +474,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createPassword">@T["Password"]</label>
|
<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>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<label class="form-label" for="createPhotoFile">@T["Photo"]</label>
|
<label class="form-label" for="createPhotoFile">@T["Photo"]</label>
|
||||||
@@ -539,7 +542,9 @@
|
|||||||
const dataFromEntries = Object.fromEntries(new FormData(createForm).entries());
|
const dataFromEntries = Object.fromEntries(new FormData(createForm).entries());
|
||||||
const data = unflatten(dataFromEntries);
|
const data = unflatten(dataFromEntries);
|
||||||
data.Description.Groups = Array.from(createGroupsSelect.selectedOptions).map(o => o.value);
|
data.Description.Groups = Array.from(createGroupsSelect.selectedOptions).map(o => o.value);
|
||||||
|
if (data.Description.Address.StreetNr == "") {
|
||||||
|
delete(data.Description.Address.StreetNr);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/Users/Create', {
|
const response = await fetch('/Users/Create', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -572,7 +577,7 @@
|
|||||||
data-user-birthdate="${data.Description.BirthDate}"
|
data-user-birthdate="${data.Description.BirthDate}"
|
||||||
data-user-address-city="${data.Description.Address.City}"
|
data-user-address-city="${data.Description.Address.City}"
|
||||||
data-user-address-street="${data.Description.Address.Street}"
|
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-workplace="${data.Description?.Workplace || ''}"
|
||||||
data-user-groups='${JSON.stringify(data.Description?.Groups || [])}'
|
data-user-groups='${JSON.stringify(data.Description?.Groups || [])}'
|
||||||
data-bs-toggle="modal"
|
data-bs-toggle="modal"
|
||||||
|
|||||||
Reference in New Issue
Block a user