Implemented user permission update

This commit is contained in:
2025-04-15 12:32:29 +02:00
parent db7ac8d174
commit c12e1e38b8
4 changed files with 32 additions and 7 deletions

View File

@@ -44,7 +44,8 @@ public class UsersController : Controller
{ {
Id = x.Id, Id = x.Id,
Email = x.Email, Email = x.Email,
Username = x.Username Username = x.Username,
PermissionsJson = x.PermissionsJson
}) })
.ToArray(); .ToArray();
@@ -73,7 +74,8 @@ public class UsersController : Controller
{ {
Id = user.Id, Id = user.Id,
Email = user.Email, Email = user.Email,
Username = user.Username Username = user.Username,
PermissionsJson = user.PermissionsJson
}; };
} }
@@ -108,7 +110,8 @@ public class UsersController : Controller
{ {
Id = finalUser.Id, Id = finalUser.Id,
Email = finalUser.Email, Email = finalUser.Email,
Username = finalUser.Username Username = finalUser.Username,
PermissionsJson = finalUser.PermissionsJson
}; };
} }
@@ -138,12 +141,17 @@ public class UsersController : Controller
if (!string.IsNullOrEmpty(request.Password)) if (!string.IsNullOrEmpty(request.Password))
{ {
user.Password = HashHelper.Hash(request.Password); user.Password = HashHelper.Hash(request.Password);
user.TokenValidTimestamp = DateTime.UtcNow; // This change will get applied by the crud helper user.TokenValidTimestamp = DateTime.UtcNow; // Log out user after password change
}
if (user.PermissionsJson != request.PermissionsJson)
{
user.PermissionsJson = request.PermissionsJson;
user.TokenValidTimestamp = DateTime.UtcNow; // Log out user after permission change
} }
user.Email = request.Email; user.Email = request.Email;
user.Username = request.Username; user.Username = request.Username;
// TODO: Add permissions update here
await UserRepository.Update(user); await UserRepository.Update(user);
@@ -151,7 +159,8 @@ public class UsersController : Controller
{ {
Id = user.Id, Id = user.Id,
Email = user.Email, Email = user.Email,
Username = user.Username Username = user.Username,
PermissionsJson = user.PermissionsJson
}; };
} }

View File

@@ -35,6 +35,12 @@
<input @bind="Request.Email" type="email" autocomplete="off" class="form-input w-full"> <input @bind="Request.Email" type="email" autocomplete="off" class="form-input w-full">
</div> </div>
</div> </div>
<div class="sm:col-span-2">
<label class="block text-sm font-medium leading-6 text-white">Permissions</label>
<div class="mt-2">
<input @bind="Request.PermissionsJson" type="text" autocomplete="off" class="form-input w-full">
</div>
</div>
<div class="sm:col-span-2"> <div class="sm:col-span-2">
<label class="block text-sm font-medium leading-6 text-white">Password</label> <label class="block text-sm font-medium leading-6 text-white">Password</label>
<div class="mt-2"> <div class="mt-2">
@@ -56,7 +62,13 @@
private async Task Load(LazyLoader _) private async Task Load(LazyLoader _)
{ {
var detail = await ApiClient.GetJson<UserResponse>($"api/admin/users/{Id}"); var detail = await ApiClient.GetJson<UserResponse>($"api/admin/users/{Id}");
Request = Mapper.Map<UpdateUserRequest>(detail);
Request = new()
{
Email = detail.Email,
PermissionsJson = detail.PermissionsJson,
Username = detail.Username
};
} }
private async Task OnSubmit() private async Task OnSubmit()

View File

@@ -13,4 +13,7 @@ public class UpdateUserRequest
public string Username { get; set; } public string Username { get; set; }
public string? Password { get; set; } public string? Password { get; set; }
[Required(ErrorMessage = "You need to provide permissions")]
public string PermissionsJson { get; set; } = "[]";
} }

View File

@@ -5,4 +5,5 @@ public class UserResponse
public int Id { get; set; } public int Id { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Email { get; set; } public string Email { get; set; }
public string PermissionsJson { get; set; }
} }