Took Database layout changes into account in frontend pages
This commit is contained in:
@@ -7,6 +7,8 @@ public interface IGroupRepository {
|
|||||||
|
|
||||||
Task<IList<PermissionGroup>> GetDefaultGroups();
|
Task<IList<PermissionGroup>> GetDefaultGroups();
|
||||||
|
|
||||||
|
Task<IList<PermissionGroup>> GetUserGroups(User user);
|
||||||
|
|
||||||
Task<PermissionGroup> GetPermissionGroup(string name);
|
Task<PermissionGroup> GetPermissionGroup(string name);
|
||||||
|
|
||||||
Task EditPermissionGroup(PermissionGroup group);
|
Task EditPermissionGroup(PermissionGroup group);
|
||||||
|
|||||||
@@ -12,12 +12,7 @@ public interface IUserRepository {
|
|||||||
Task<User> GetUserByUsername(string username);
|
Task<User> GetUserByUsername(string username);
|
||||||
|
|
||||||
Task<User> AddUser(User user);
|
Task<User> AddUser(User user);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// IMPORTANT:<br/>
|
|
||||||
/// This function does not add or remove any permissions to the user.
|
|
||||||
/// For that please use <see cref="IPermissionRepository"/>
|
|
||||||
/// </summary>
|
|
||||||
Task UpdateUser(User user);
|
Task UpdateUser(User user);
|
||||||
|
|
||||||
Task DeleteUser(User user);
|
Task DeleteUser(User user);
|
||||||
|
|||||||
@@ -17,6 +17,14 @@ internal sealed class GroupRepository<TDbContext>(TDbContext context) : IGroupRe
|
|||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Task<IList<PermissionGroup>> GetUserGroups(User user) {
|
||||||
|
return Task.FromResult((IList<PermissionGroup>) context.Groups
|
||||||
|
.Include(g => g.Permissions)
|
||||||
|
.AsEnumerable()
|
||||||
|
.Where(g => user.Permissions.Any(p => p.PermissionName == g.Name))
|
||||||
|
.ToList());
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<PermissionGroup> GetPermissionGroup(string name) {
|
public async Task<PermissionGroup> GetPermissionGroup(string name) {
|
||||||
return await context.Groups
|
return await context.Groups
|
||||||
.Include(g => g.Permissions)
|
.Include(g => g.Permissions)
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ internal sealed class UserRepository<TDbContext>(TDbContext context, IGroupRepos
|
|||||||
private IIncludableQueryable<User, IList<Token>> IncludeReferences() {
|
private IIncludableQueryable<User, IList<Token>> IncludeReferences() {
|
||||||
return context.Users
|
return context.Users
|
||||||
.Include(u => u.Permissions)
|
.Include(u => u.Permissions)
|
||||||
.ThenInclude(p => p.Group)
|
|
||||||
.Include(u => u.Tokens);
|
.Include(u => u.Tokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +46,7 @@ internal sealed class UserRepository<TDbContext>(TDbContext context, IGroupRepos
|
|||||||
Email = user.Email,
|
Email = user.Email,
|
||||||
Username = user.Username,
|
Username = user.Username,
|
||||||
CreatedAt = DateTime.Now,
|
CreatedAt = DateTime.Now,
|
||||||
Permissions = user.Permissions,
|
Permissions = user.Permissions ?? new List<Permission>(),
|
||||||
Tokens = user.Tokens
|
Tokens = user.Tokens
|
||||||
};
|
};
|
||||||
entry.Password = EncryptionManager.Hash(user.Password, Encoding.Default.GetBytes(entry.CreatedAt.ToString(CultureInfo.InvariantCulture)));
|
entry.Password = EncryptionManager.Hash(user.Password, Encoding.Default.GetBytes(entry.CreatedAt.ToString(CultureInfo.InvariantCulture)));
|
||||||
@@ -56,13 +55,11 @@ internal sealed class UserRepository<TDbContext>(TDbContext context, IGroupRepos
|
|||||||
foreach (var group in defaultGroups) {
|
foreach (var group in defaultGroups) {
|
||||||
entry.Permissions.Add(new Permission {
|
entry.Permissions.Add(new Permission {
|
||||||
PermissionName = group.Name,
|
PermissionName = group.Name,
|
||||||
//TODO: Check if user needs to be set
|
GrantedAt = DateTime.Now
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await context.Users.AddAsync(entry);
|
await context.Users.AddAsync(entry);
|
||||||
|
|
||||||
|
|
||||||
await context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
return entry;
|
return entry;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,7 +177,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
_group.Permissions.Add(new Permission {
|
_group.Permissions.Add(new Permission {
|
||||||
PermissionName = _permissionToAdd
|
PermissionName = _permissionToAdd,
|
||||||
|
GrantedAt = DateTime.Now
|
||||||
});
|
});
|
||||||
|
|
||||||
_permissionToAdd = null;
|
_permissionToAdd = null;
|
||||||
@@ -255,7 +256,12 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Groups.CreatePermissionGroup(_group);
|
await Groups.CreatePermissionGroup(new PermissionGroup {
|
||||||
|
Description = _group.Description,
|
||||||
|
IsDefaultGroup = _group.IsDefaultGroup,
|
||||||
|
Permissions = _group.Permissions,
|
||||||
|
Name = "group." + _group.GroupName
|
||||||
|
});
|
||||||
|
|
||||||
if (ReloadPage is not null)
|
if (ReloadPage is not null)
|
||||||
await ReloadPage.Invoke();
|
await ReloadPage.Invoke();
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
<option selected>Select group</option>
|
<option selected>Select group</option>
|
||||||
|
|
||||||
@foreach (var group in _allGroups) {
|
@foreach (var group in _allGroups) {
|
||||||
@if (_userGroups.All(g => g.Name != group.Name)) {
|
@if (_userGroups?.All(g => g.Name != group.Name) == true) {
|
||||||
<option value="@group.Name">@group.Name.Replace("group.", "")</option>
|
<option value="@group.Name">@group.Name.Replace("group.", "")</option>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
_user = user;
|
_user = user;
|
||||||
_userGroups = _user.Permissions.Where(p => p.PermissionName.StartsWith("group.")).Select(p => p.Group).ToList();
|
_userGroups = await Groups.GetUserGroups(user);
|
||||||
_allGroups = await Groups.GetPermissionGroups();
|
_allGroups = await Groups.GetPermissionGroups();
|
||||||
await _modal.ShowAsync();
|
await _modal.ShowAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
_hasError = true;
|
_hasError = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Navigator.NavigateTo(string.IsNullOrEmpty(RedirectAfter) ? DefaultRedirect : RedirectAfter, true);
|
Navigator.NavigateTo(string.IsNullOrEmpty(RedirectAfter) ? DefaultRedirect : RedirectAfter, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
.field-wrapper {
|
.field-wrapper {
|
||||||
margin-top: 25vh;
|
margin-top: 25vh;
|
||||||
min-width: 30vw;
|
min-width: 500px;
|
||||||
|
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
border: 2px solid #ced4da;
|
border: 2px solid #ced4da;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<BSNavbarToggle/>
|
<BSNavbarToggle/>
|
||||||
</Toggler>
|
</Toggler>
|
||||||
<Content>
|
<Content>
|
||||||
<BSNav MarginEnd="Margins.Auto" MarginBottom="Margins.Small" Class="mb-lg-0">
|
<BSNav MarginEnd="Margins.Auto" Class="mb-lg-0">
|
||||||
<BSNavItem IsActive="IsDashboardActive()" OnClick="NavigateToDashboard">Dashboard</BSNavItem>
|
<BSNavItem IsActive="IsDashboardActive()" OnClick="NavigateToDashboard">Dashboard</BSNavItem>
|
||||||
|
|
||||||
@foreach (var nav in Subpages) {
|
@foreach (var nav in Subpages) {
|
||||||
|
|||||||
@@ -97,6 +97,7 @@
|
|||||||
|
|
||||||
@inject IUserRepository UserService
|
@inject IUserRepository UserService
|
||||||
@inject IPermissionRepository PermissionsService
|
@inject IPermissionRepository PermissionsService
|
||||||
|
@inject IGroupRepository Groups
|
||||||
@inject SweetAlertService Alerts
|
@inject SweetAlertService Alerts
|
||||||
@inject ITokenContext Auth
|
@inject ITokenContext Auth
|
||||||
|
|
||||||
@@ -119,7 +120,7 @@
|
|||||||
_users = await UserService.GetUsers();
|
_users = await UserService.GetUsers();
|
||||||
|
|
||||||
foreach (var user in _users) {
|
foreach (var user in _users) {
|
||||||
var groups = user.Permissions.Where(p => p.PermissionName.StartsWith("group.")).Select(p => p.Group).ToList();
|
var groups = await Groups.GetUserGroups(user);
|
||||||
_userGroups.Add(user.Id, groups.LastOrDefault());
|
_userGroups.Add(user.Id, groups.LastOrDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,7 +135,7 @@
|
|||||||
_users = await UserService.GetUsers();
|
_users = await UserService.GetUsers();
|
||||||
|
|
||||||
foreach (var user in _users) {
|
foreach (var user in _users) {
|
||||||
var groups = user.Permissions.Where(p => p.PermissionName.StartsWith("group.")).Select(p => p.Group).ToList();
|
var groups = await Groups.GetUserGroups(user);
|
||||||
_userGroups.Add(user.Id, groups.LastOrDefault());
|
_userGroups.Add(user.Id, groups.LastOrDefault());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user