public static string Permissie(this HtmlHelper htmlHelper, Permissies permissies) { switch (permissies) { case Permissies.Geen: return("✕"); case Permissies.Lezen: return("��"); case Permissies.Bewerken: return("✎"); default: return("WTF"); } }
/// <summary> /// Zoekt het gebruikersrecht op van <paramref name="persoon"/> op <paramref name="groep"/>. Als dat nog niet /// bestaat, maak er een aan. Voeg de gevraagde permissies toe. De vervaldatum wordt vervangen door de /// standaardvervaldatum op dit moment. /// </summary> /// <param name="persoon">Persoon die gebruikersrechten moet krijgen.</param> /// <param name="groep">Groep waarvoor de persoon gebruikersrechten moet krijgen.</param> /// <param name="persoonlijkeGegevens">Permissies op persoonlijke gegevens.</param> /// <param name="groepsGegevens">Permissies op de gegevens van de groep.</param> /// <param name="personenInAfdeling">Permissies op de leden in de eigen afdeling.</param> /// <param name="personenInGroep">Permissies op alle personen van de eigen groep.</param> public void ToekennenOfWijzigen(Persoon persoon, Groep groep, Permissies persoonlijkeGegevens, Permissies groepsGegevens, Permissies personenInAfdeling, Permissies personenInGroep) { var gebruikersRecht = persoon.GebruikersRechtV2.FirstOrDefault(gr => gr.Groep.Equals(groep)); if (gebruikersRecht == null) { gebruikersRecht = new GebruikersRechtV2 { Groep = groep, Persoon = persoon }; groep.GebruikersRechtV2.Add(gebruikersRecht); persoon.GebruikersRechtV2.Add(gebruikersRecht); } gebruikersRecht.PersoonsPermissies |= persoonlijkeGegevens; gebruikersRecht.GroepsPermissies |= groepsGegevens; gebruikersRecht.AfdelingsPermissies |= personenInAfdeling; gebruikersRecht.IedereenPermissies |= personenInGroep; gebruikersRecht.VervalDatum = NieuweVervalDatum(); }
/// <summary> /// Levert de permissies op die de aangelogde gebruiker heeft op de gegeven /// <paramref name="gelieerdePersoon"/>. /// </summary> /// <param name="gelieerdePersoon">Gelieerde persoon met te checken permissies.</param> /// <returns>de permissies die de aangelogde gebruiker heeft op de gegeven /// <paramref name="gelieerdePersoon"/>.</returns> public Permissies PermissiesOphalen(GelieerdePersoon gelieerdePersoon) { Permissies result = Permissies.Geen; int? mijnAdNummer = _authenticatieMgr.AdNummerGet(); Debug.Assert(mijnAdNummer.HasValue); if (gelieerdePersoon.Persoon.AdNummer == mijnAdNummer) { result = EigenPermissies(gelieerdePersoon.Persoon); if (result == Permissies.Bewerken) { return(result); } } // Heb ik rechten op de groep van de gelieerde persoon? var relevantGebruikersRecht = (from gr in gelieerdePersoon.Groep.GebruikersRechtV2 where gr.Persoon.AdNummer == mijnAdNummer && gr.VervalDatum != null && gr.VervalDatum > DateTime.Now select gr).FirstOrDefault(); // Nee? Dan zijn we klaar. if (relevantGebruikersRecht == null) { return(result); } // Ik zit in de juiste groep. Ik krijg ook de permissies die ik op iedereen // in de groep heb. result |= relevantGebruikersRecht.IedereenPermissies; // Als ik al alle mogelijke permissies heb, of mijn permissies op mijn afdeling kunnen niets meer // veranderen, dan zijn we klaar. if (result == Permissies.Bewerken || (result | relevantGebruikersRecht.AfdelingsPermissies) == result) { return(result); } // Als gelieerdePersoon in dezelfde afdeling zit als ik, en die afdeling is van het huidige werkjaar, // dan zijn ook mijn afdelingspermissies relevant. var mijnGelieerdePersoon = (from gp in relevantGebruikersRecht.Persoon.GelieerdePersoon where gp.Groep.Equals(relevantGebruikersRecht.Groep) select gp).FirstOrDefault(); if (mijnGelieerdePersoon == null) { // Ik ben niet gelieerd aan de groep, dus zit ik zeker niet in de juiste afdeling. return(result); } var huidigWerkjaar = gelieerdePersoon.Groep.GroepsWerkJaar.OrderByDescending(gwj => gwj.WerkJaar).FirstOrDefault(); var mijnAfdelingsIds = mijnGelieerdePersoon.Lid.Where(l => Equals(l.GroepsWerkJaar, huidigWerkjaar)).SelectMany(l => l.AfdelingIds); var zijnAfdelingsIds = gelieerdePersoon.Lid.Where(l => Equals(l.GroepsWerkJaar, huidigWerkjaar)).SelectMany(l => l.AfdelingIds); if (mijnAfdelingsIds.Any(afdid => zijnAfdelingsIds.Contains(afdid))) { result |= relevantGebruikersRecht.AfdelingsPermissies; } return(result); }