kreta/KretaWeb/Areas/Adminisztracio/Controllers/BelepesKezeloController.cs
2024-03-13 00:33:46 +01:00

491 lines
23 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Web.Areas.Adminisztracio.Models;
using Kreta.Web.Configuration;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
using Kreta.Web.Utils;
namespace Kreta.Web.Areas.Adminisztracio.Controllers
{
[MvcRoleClaimsAuthorize(true)]
public class BelepesKezeloController : Controller
{
private static readonly IEnumerable<SzerepkorTipusEnum> EUgyinteztesPermissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.alkalmazott,
SzerepkorTipusEnum.BelepokartyaAdmin
};
private static readonly IEnumerable<SzerepkorTipusEnum> DKTPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Naplo, SzerepkorTipusEnum.Ellenorzo, };
private static readonly IEnumerable<SzerepkorTipusEnum> ESLPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.FokuszMonitoring, };
private static readonly IEnumerable<SzerepkorTipusEnum> FokuszPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Naplo, SzerepkorTipusEnum.FokuszMonitoring, };
private static readonly IEnumerable<SzerepkorTipusEnum> LeltarPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.LeltarConcerned, };
private static readonly IEnumerable<SzerepkorTipusEnum> eJelentkezesPermissions = new List<SzerepkorTipusEnum> { SzerepkorTipusEnum.Adminisztrator, };
private static readonly IEnumerable<SzerepkorTipusEnum> Permissions = new List<SzerepkorTipusEnum>
{
SzerepkorTipusEnum.eUgyintezo,
SzerepkorTipusEnum.Alairo,
SzerepkorTipusEnum.Penztaros,
SzerepkorTipusEnum.PenzugyiAdmin,
SzerepkorTipusEnum.EtkezesiAdmin,
SzerepkorTipusEnum.EtkezesiEllenorzo,
SzerepkorTipusEnum.TeremberletJelenletEllenorzo,
SzerepkorTipusEnum.FokuszMonitoring,
SzerepkorTipusEnum.IskolaEgeszsegugyiKoordinator,
SzerepkorTipusEnum.Vedono,
SzerepkorTipusEnum.Iskolaorvos,
SzerepkorTipusEnum.IskolaEgeszsegugyiAsszisztens,
SzerepkorTipusEnum.IskolaEgeszsegugyiLekerdezo,
SzerepkorTipusEnum.BelepokartyaAdmin,
SzerepkorTipusEnum.LeltarConcerned,
SzerepkorTipusEnum.Konyvtaros,
SzerepkorTipusEnum.FELTAR_EsetKezelo,
SzerepkorTipusEnum.FELTAR_EszkozMenedzser,
SzerepkorTipusEnum.KerdoivKitolto_KerdoivKezelo,
SzerepkorTipusEnum.FELTAR_EsetJovahagyo,
SzerepkorTipusEnum.FELTAR_EsetKozremukodo,
SzerepkorTipusEnum.FELTAR_Munkavegzo,
SzerepkorTipusEnum.FELTAR_SzerzodesMenedzser
};
private IIdpConfiguration IdpConfiguration { get; }
public BelepesKezeloController(IIdpConfiguration idpConfiguration)
{
IdpConfiguration = idpConfiguration ?? throw new ArgumentNullException(nameof(idpConfiguration));
}
public ActionResult Index()
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
// NOTE: Ha a felhasználó szerepkörök között szerepel kréta adminisztrátor és amellett szervezethez köthető szerepkör(pl.: duális adminisztrátor),
// akkor azokat nem kell megjeleníteni, mert azok részei az intézményi kréta admin felületének/menüjének, ezért az ilyen szerepköröket kivesszük a listából.
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator) && felhasznaloSzerepkorok.Any(x => FelhasznaloHelper.SzervezetiPermissions.Contains(x.Key)))
{
foreach (var szerepkorTipusEnum in FelhasznaloHelper.SzervezetiPermissions)
{
felhasznaloSzerepkorok.Remove(szerepkorTipusEnum);
}
}
var allowedRoles = GetAllowedRoles(felhasznaloSzerepkorok);
ClaimManager.SetFelhasznaloSzerepkorClaim(allowedRoles.Any() ? allowedRoles.Select(x => x.Key).ToList() : felhasznaloSzerepkorok.Keys.Any() ? felhasznaloSzerepkorok.Select(x => x.Key).ToList() : new List<SzerepkorTipusEnum>(), GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
if (ClaimData.JustLEPOrganization && !ClaimData.FelhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator))
{
var lepEloadasJegyzekHelper = new LepEloadasJegyzekHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var hasLepAccess = lepEloadasJegyzekHelper.HasLEPAccess(ClaimData.FelhasznaloId);
if (!hasLepAccess)
{
return Redirect(Url.Content(@"~/HibaOldal/IndexLEPNincsJog"));
}
return Redirect(Url.Content(@"~/LEPModul/EloadasokKezelese"));
}
// NOTE: Ha a belépett felhasználó szervezethez köthető alkalmazott(pl.: duális oktató), akkor semmi más ne jelenjen meg csak a szervezethez köthető elemek.
var isAlkalmazottSzervezeti = new SzervezetHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsAlkalmazottSzervezeti(ClaimData.FelhasznaloId);
if (isAlkalmazottSzervezeti)
{
if (allowedRoles.Count == 1)
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles, false, false, false, false, false, false, false));
}
var isDktAktiv = IsDktAktiv(felhasznaloSzerepkorok);
var isEugyAktiv = IsEugyAktiv(felhasznaloSzerepkorok);
var isEslAktiv = IsESLAktiv(felhasznaloSzerepkorok);
var isFokuszAktiv = IsFokuszAktiv(felhasznaloSzerepkorok);
var isLeltarAktiv = IsLeltarAktiv(felhasznaloSzerepkorok);
var isKonyvtarAktiv = IsKonyvtarModulAktiv();
var isEJelentkezesAktiv = IsEJelentkezesAktiv(felhasznaloSzerepkorok);
if (allowedRoles.Any())
{
if (allowedRoles.Count == 1 && !isDktAktiv && !isEugyAktiv && !isEslAktiv && !isFokuszAktiv && !isLeltarAktiv && !isKonyvtarAktiv && !isEJelentkezesAktiv)
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
return View("Index", ModelBuilder(allowedRoles, isDktAktiv, isEugyAktiv, isEslAktiv, isFokuszAktiv, isLeltarAktiv, isKonyvtarAktiv, isEJelentkezesAktiv));
}
if (felhasznaloSzerepkorok.Keys.Count >= 2 && felhasznaloSzerepkorok.Keys.Any(x => Permissions.Contains(x)))
{
return Redirect(Url.Content(CommonExtensions.GetDefaultPage()));
}
var intezmenyConfigHelper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (intezmenyConfigHelper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => EUgyinteztesPermissions.Contains(x)))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.FokuszMonitoring))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
if (felhasznaloSzerepkorok.Keys.All(x => x == SzerepkorTipusEnum.LeltarConcerned))
{
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyConfigHelper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return View("Index", ModelBuilder(allowedRoles, isDktAktiv, isEugyAktiv, isEslAktiv, isFokuszAktiv, isLeltarAktiv, isKonyvtarAktiv, isEJelentkezesAktiv));
}
public ActionResult ChangeRole(SzerepkorTipusEnum role)
{
var felhasznaloSzerepkorok = ClaimData.FelhasznaloSzerepkorok;
if (felhasznaloSzerepkorok.ContainsKey(role))
{
ClaimManager.SetFelhasznaloSzerepkorClaim(new List<SzerepkorTipusEnum> { role }, GetEugyintezesESLPermissions(felhasznaloSzerepkorok));
var isPedagogiaiSzakszolgalat = role == SzerepkorTipusEnum.Adminisztrator && new MukodesiHelyHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetMukodesiHelyekForFelhelyValaszto().Any(x => x.FelhelyId.IsEntityId());
return Json(new { Url = Url.Content(isPedagogiaiSzakszolgalat ? Constants.General.FelHelyValasztoPage : CommonExtensions.GetDefaultPage()), Success = true });
}
return Json(new { Success = false });
}
public ActionResult Eugyintezes()
{
if (IsEugyAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult DKTTanar()
{
if (IsDktAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var intezmenyData = helper.GetIntezmenyiAdatok();
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyData.DKTTanarUrl, IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult DKTDiak()
{
if (IsDktAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var intezmenyData = helper.GetIntezmenyiAdatok();
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(intezmenyData.DKTDiakUrl, IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult ESL()
{
if (IsESLAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Fokusz()
{
if (IsFokuszAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Fokusz, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Leltar()
{
if (IsLeltarAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult Konyvtar()
{
if (IsKonyvtarModulAktiv())
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
public ActionResult EJelentkezes()
{
if (IsEJelentkezesAktiv(ClaimData.FelhasznaloSzerepkorok))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
return Redirect(Classes.Utils.GetAuthenticationTokenRedirectUrl(helper.GetIntezmenyConfig<string>(IntezmenyConfigModulEnum.eJelentkezes, IntezmenyConfigTipusEnum.Url), IdpConfiguration.AuthenticationTokenKey));
}
return null;
}
private BelepesKezeloModel ModelBuilder(List<KeyValuePair<SzerepkorTipusEnum, string>> allowedRoles, bool isDktAktiv, bool isEugyAktiv, bool isEslAktiv, bool isFokuszAktiv, bool isLeltarAktiv, bool isKonyvtarAktiv, bool isEJelentkezesAktiv)
{
var model = new BelepesKezeloModel();
var shortname = ClaimData.OrganizationShortName;
model.OrganizationName = ClaimData.OrganizationCode + " - " + (string.IsNullOrWhiteSpace(shortname) ? ClaimData.OrganizationName : shortname);
model.UserName = $"{ClaimData.FelhasznaloNev} {(!string.IsNullOrWhiteSpace(ClaimData.GondviseloNeve) ? "(" + ClaimData.GondviseloNeve + ")" : "")}";
model.ProfilImgSrc = ProfileUtils.UserProfileImage;
foreach (var item in allowedRoles)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = item.Value, Szerepkor = item.Key, Tipus = BelepesKezeloModel.LehetosegTipus.Kreta });
}
if (isDktAktiv)
{
var naplo = false;
var ellenorzo = false;
foreach (var role in allowedRoles)
{
if (role.Key == SzerepkorTipusEnum.Naplo)
{
naplo = true;
}
if (role.Key == SzerepkorTipusEnum.Ellenorzo)
{
ellenorzo = true;
}
}
if (naplo)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Digitális Kollaborációs Tér" + (ellenorzo ? " (Tanár)" : ""), Szerepkor = SzerepkorTipusEnum.Naplo, Tipus = BelepesKezeloModel.LehetosegTipus.DKT });
}
if (ellenorzo)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Digitális Kollaborációs Tér" + (naplo ? " (Diák)" : ""), Szerepkor = SzerepkorTipusEnum.Ellenorzo, Tipus = BelepesKezeloModel.LehetosegTipus.DKT });
}
}
if (isEugyAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "e-Ügyintézés", Tipus = BelepesKezeloModel.LehetosegTipus.Eugy });
}
if (isEslAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "ESL", Tipus = BelepesKezeloModel.LehetosegTipus.ESL });
}
if (isFokuszAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Fókusz", Tipus = BelepesKezeloModel.LehetosegTipus.Fokusz });
}
if (isLeltarAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "KRÉTA Leltár", Tipus = BelepesKezeloModel.LehetosegTipus.Leltar });
}
if (isKonyvtarAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "Könyvtár modul", Tipus = BelepesKezeloModel.LehetosegTipus.Konyvtar });
}
if (isEJelentkezesAktiv)
{
model.Lehetosegek.Add(new BelepesKezeloModel.BelepesiLehetoseg { Name = "e-Jelentkezés", Tipus = BelepesKezeloModel.LehetosegTipus.EJelentkezes });
}
model.CancelLinkText = StringResourcesUtil.GetString(2582); /* Kijelentkezés */
model.CancelLinkAction = "BelepesKezelo.logout()";
return model;
}
private bool IsDktAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => DKTPermissions.Contains(x)) && !ClaimData.GondviseloId.HasValue)
{
var helper = new IntezmenyHelper(ConnectionTypeExtensions.GetSessionConnectionType());
if (helper.GetIntezmenyiAdatok().IsDKTAktiv)
{
return true;
}
}
return false;
}
private bool IsEugyAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Eugyintezes, IntezmenyConfigTipusEnum.IsEnabled))
{
if (ClaimData.GondviseloId.HasValue)
{
return !new GondviseloHelper(ConnectionTypeExtensions.GetSessionConnectionType()).IsCsokkentettGondviselo(ClaimData.GondviseloId.Value);
}
if (felhasznaloSzerepkorok.Keys.Any(x => EUgyinteztesPermissions.Contains(x)) || felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator))
{
if (ClaimData.IsDefaultAdminUser || ClaimData.BelepesiNev.ToUpper() == Constants.General.KretaTechnicalUserNev.ToUpper())
{
return false;
}
return true;
}
}
return false;
}
private bool IsESLAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
var fHelper = new FelhasznaloHelper(ConnectionTypeExtensions.GetSessionConnectionType());
var felhasznaloiJogosultsagok = fHelper.GetFelhasznaloiJogosultsagok(ClaimData.FelhasznaloId, (int)SzerepkorTipusEnum.Naplo);
if (felhasznaloSzerepkorok.Keys.Any(x => ESLPermissions.Contains(x)) || felhasznaloiJogosultsagok.Contains("Osztalyfonok") || felhasznaloiJogosultsagok.Contains("SzuperOsztalyfonok"))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.ESL, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Ellenorzo) || ClaimData.IsDefaultAdminUser)
{
return false;
}
return true;
}
return false;
}
return false;
}
private bool IsFokuszAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => FokuszPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Fokusz, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Ellenorzo) || ClaimData.IsDefaultAdminUser || ClaimData.IsPortas)
{
return false;
}
return true;
}
return false;
}
return false;
}
private bool IsLeltarAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => LeltarPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Leltar, IntezmenyConfigTipusEnum.IsEnabled))
{
return true;
}
return false;
}
return false;
}
private bool IsKonyvtarModulAktiv()
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (!ClaimData.GondviseloId.HasValue && helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.Konyvtar, IntezmenyConfigTipusEnum.IsEnabled))
{
return true;
}
return false;
}
private bool IsEJelentkezesAktiv(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
{
if (felhasznaloSzerepkorok.Keys.Any(x => eJelentkezesPermissions.Contains(x)))
{
var helper = new IntezmenyConfigHelper(ConnectionTypeExtensions.GetSystemConnectionType());
if (helper.GetIntezmenyConfig<bool>(IntezmenyConfigModulEnum.eJelentkezes, IntezmenyConfigTipusEnum.IsEnabled))
{
if (felhasznaloSzerepkorok.ContainsKey(SzerepkorTipusEnum.Adminisztrator) && !ClaimData.IsDefaultAdminUser)
{
return true;
}
return false;
}
return false;
}
return false;
}
private List<KeyValuePair<SzerepkorTipusEnum, string>> GetAllowedRoles(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> felhasznaloSzerepkorok.Where(x => !Constants.General.NotVisiblePermissions.Contains(x.Key)).ToList();
private List<SzerepkorTipusEnum> GetEugyintezesESLPermissions(Dictionary<SzerepkorTipusEnum, string> felhasznaloSzerepkorok)
=> Permissions.Where(x => felhasznaloSzerepkorok.Keys.Any(y => y == x)).ToList();
}
}