Add functionality to list roles and fetch the usercount inside that role

closes: #1
This commit is contained in:
2025-10-15 13:13:34 +02:00
parent 2c3df4c338
commit e1e05eea9b
5 changed files with 84 additions and 25 deletions

View File

@@ -6,6 +6,7 @@ using Oqtane.Models;
using Oqtane.Repository;
using Oqtane.Security;
using Oqtane.Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
@@ -108,11 +109,27 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
return Task.CompletedTask;
}
public Task<int> GetUsercountInRole(EmailFields EmailFields)
public Task<List<Role>> GetRoles(int ModuleId)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, ModuleId, PermissionNames.View))
{
List<Role> role = new List<Role>();
role.AddRange(_roleRepository.GetRoles(_alias.SiteId));
return Task.FromResult(role);
}
else
{
_logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized AdminModules Get Roles Attempt {ModuleId}", ModuleId);
return null;
}
}
public Task<EmailFields> PostUsercountInRole(EmailFields EmailFields)
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, EmailFields.ModuleId, PermissionNames.View))
{
return Task.FromResult(_userRoleRepository.GetUserRoles(EmailFields.Role.Name, _alias.SiteId).Where(ur => ur.Role == EmailFields.Role).Select(ur => ur.UserId).Distinct().Count());
EmailFields ef = new EmailFields { UserCount = _userRoleRepository.GetUserRoles(EmailFields.Role.Name, _alias.SiteId).Select(ur => ur.UserId).Distinct().Count() };
return Task.FromResult(ef);
}
else
{
@@ -125,7 +142,12 @@ namespace SZUAbsolventenverein.Module.AdminModules.Services
{
if (_userPermissions.IsAuthorized(_accessor.HttpContext.User, _alias.SiteId, EntityNames.Module, EmailFields.ModuleId, PermissionNames.View))
{
_userRoleRepository.GetUserRoles(_accessor.HttpContext.User.UserId(), _alias.SiteId).Where(ur => ur.Role == EmailFields.Role).Select(ur => ur.UserId);
IEnumerable<int> userids = _userRoleRepository.GetUserRoles(_accessor.HttpContext.User.UserId(), _alias.SiteId).Select(ur => ur.UserId).AsEnumerable();
foreach (int userid in userids)
{
User user = _userRepository.GetUser(userid);
}
return null;
}
else