/// <summary> /// Haalt alle groepen op waarvoor <paramref name="ik"/> leesrechten heb op de gegeven /// <paramref name="aspecten"/>. /// </summary> /// <param name="ik">Persoon waarvoor de groepen opgehaald moeten worden.</param> /// <param name="aspecten">Aspecten waarvoor de persoon leesrechten moet hebben.</param> /// <returns>alle groepen op waarvoor <paramref name="ik"/> leesrechten heb op de gegeven /// <paramref name="aspecten"/>.</returns> public IEnumerable <Groep> ToegestaneGroepenOphalen(Persoon ik, SecurityAspect aspecten) { var gebruikersrechten = ik.GebruikersRechtV2.Where(gr => gr.VervalDatum != null & gr.VervalDatum > DateTime.Now); if (aspecten.HasFlag(SecurityAspect.PersoonlijkeGegevens)) { gebruikersrechten = gebruikersrechten.Where(gr => gr.PersoonsPermissies.HasFlag(Permissies.Lezen)); } if (aspecten.HasFlag(SecurityAspect.GroepsGegevens)) { gebruikersrechten = gebruikersrechten.Where(gr => gr.GroepsPermissies.HasFlag(Permissies.Lezen)); } if (aspecten.HasFlag(SecurityAspect.PersonenInAfdeling)) { gebruikersrechten = gebruikersrechten.Where(gr => gr.AfdelingsPermissies.HasFlag(Permissies.Lezen)); } if (aspecten.HasFlag(SecurityAspect.PersonenInGroep)) { gebruikersrechten = gebruikersrechten.Where(gr => gr.IedereenPermissies.HasFlag(Permissies.Lezen)); } return(gebruikersrechten.Select(gr => gr.Groep).Distinct()); }
/// <summary> /// Geeft weer welke effectieve permissie de aangelogde gebruiker heeft op de gegeven /// <paramref name="aspecten"/> van de gegeven <paramref name="groep"/>. /// </summary> /// <param name="groep">Groep waarvoor de permissies opgehaald moeten worden.</param> /// <param name="aspecten">Aspecten waarvoor permissies opgehaald moeten worden.</param> /// <returns>Permissies die de aangelogde gebruiker heeft op de gegeven /// <paramref name="aspecten"/> van de gegeven <paramref name="groep"/>.</returns> /// <remarks> /// (1) Als je meerdere aspecten combineert, krijg je de bitwise and van de permissies als /// resultaat. D.w.z.: de permissies die je hebt op àlle meegegeven aspecten. /// (2) Als je rechten hebt op iedereen van je groep, dan heb je voor je afdeling minstens /// diezelfde rechten. /// </remarks> public Permissies PermissiesOphalen(Groep groep, SecurityAspect aspecten) { int?adNummer = _authenticatieMgr.AdNummerGet(); var gebruikersRecht = groep.GebruikersRechtV2.FirstOrDefault( gr => gr.Persoon.AdNummer == adNummer && gr.VervalDatum != null && gr.VervalDatum > DateTime.Now); if (gebruikersRecht == null) { return(Permissies.Geen); } var permissies = new List <Permissies>(); // Dit is een tamelijk omslachtige procedure: // Voeg de permissies op ieder aspect uit 'aspecten' toe aan de lijst // 'permissies', en lever de bitwise and op. if (aspecten.HasFlag(SecurityAspect.PersoonlijkeGegevens)) { permissies.Add(gebruikersRecht.PersoonsPermissies); } if (aspecten.HasFlag(SecurityAspect.GroepsGegevens)) { permissies.Add(gebruikersRecht.GroepsPermissies); } if (aspecten.HasFlag(SecurityAspect.PersonenInAfdeling)) { permissies.Add(gebruikersRecht.AfdelingsPermissies | gebruikersRecht.GroepsPermissies); } if (aspecten.HasFlag(SecurityAspect.PersonenInGroep)) { permissies.Add(gebruikersRecht.IedereenPermissies); } return(permissies.Aggregate((x, y) => x & y)); }
public Permissies PermissiesOphalen(Groep groep, SecurityAspect aspecten) { return(Permissies.Bewerken); }
public Permissies PermissiesOphalen(Groep groep, SecurityAspect aspecten) { throw new NotImplementedException(); }