//--------------------------------------------------------------------------------------------- public static void RemoveRestrictionForElementDonnantDesRestrictions( IElementARestrictionsSpecifiques elt, CGroupeRestrictionSurType groupe, IElementDonnantDesRestrictions elementDonnantDesRestrictions) { CRelationElement_RestrictionSpecifique rel = GetRelationForGroupeRestriction(elt, groupe); if (rel != null) { CRelationElement_RestrictionSpecifique_Application app = rel.GetRelationFor(elementDonnantDesRestrictions); if (app != null) { app.Delete(true); } } }
//--------------------------------------------------------------------------------------------- public static void AddRestrictionForElementDonnantDesRestrictions( IElementARestrictionsSpecifiques elt, CGroupeRestrictionSurType groupe, IElementDonnantDesRestrictions elementDonnantDesRestrictions) { CRelationElement_RestrictionSpecifique rel = GetRelationForGroupeRestriction(elt, groupe); if (rel == null) { rel = new CRelationElement_RestrictionSpecifique(elt.ContexteDonnee); rel.CreateNewInCurrentContexte(); rel.ElementLie = elt as CObjetDonneeAIdNumerique; rel.GroupeRestriction = groupe; } CRelationElement_RestrictionSpecifique_Application app = rel.GetRelationFor(elementDonnantDesRestrictions); if (app == null) { app = new CRelationElement_RestrictionSpecifique_Application(elt.ContexteDonnee); app.CreateNewInCurrentContexte(); app.RelationElement_Restriction = rel; app.ElementARestrictions = elementDonnantDesRestrictions; } }
//-------------------------------------------------------------------------------- /// <summary> /// Complete les restrictions pour un objet donné /// </summary> /// <param name="restriction"></param> public static void CompleteRestriction(IElementARestrictionsSpecifiques element, CRestrictionUtilisateurSurType restriction) { List <CRelationElement_RestrictionSpecifique> lst = GetRelationsRestrictions(element); if (lst.Count == 0) { return; } CContexteDonnee contexte = element.ContexteDonnee; CSessionClient session = CSessionClient.GetSessionForIdSession(contexte.IdSession); IInfoUtilisateur info = null; //TESTDBKEYTODO CDbKey keyUtilisateur = null; if (session != null) { info = session.GetInfoUtilisateur(); if (info == null) { return; } if (info.GetDonneeDroit(CDroitDeBaseSC2I.c_droitAdministration) != null) { return; } keyUtilisateur = info.KeyUtilisateur; } //Application des restrictions qui s'appliquent à tout le monde foreach (CRelationElement_RestrictionSpecifique rel in lst.ToArray()) { if (rel.Applications.Count == 0) { CListeRestrictionsUtilisateurSurType liste = rel.GroupeRestriction.ListeRestrictions; CRestrictionUtilisateurSurType resTmp = liste.GetRestriction(element.GetType()); restriction.Combine(resTmp); lst.Remove(rel); } } if (lst == null || lst.Count == 0 || info == null) { return; } CDonneesActeurUtilisateur user = new CDonneesActeurUtilisateur(contexte); if (user.ReadIfExists(keyUtilisateur)) { CActeur acteur = user.Acteur; while (acteur != null) { foreach (CRelationElement_RestrictionSpecifique rel in lst.ToArray()) { CRelationElement_RestrictionSpecifique_Application app = rel.GetRelationFor(acteur); if (app != null) { CListeRestrictionsUtilisateurSurType restrictions = rel.GroupeRestriction.ListeRestrictions; CRestrictionUtilisateurSurType resTmp = restrictions.GetRestriction(element.GetType()); restriction.Combine(resTmp); lst.Remove(rel); } } acteur = acteur.ActeurParent; } acteur = user.Acteur; if (lst.Count == 0) { return; } foreach (CGroupeActeur groupe in acteur.TousLesGroupesActeur) { foreach (CRelationElement_RestrictionSpecifique rel in lst.ToArray()) { if (rel.GetRelationFor(groupe) != null) { CListeRestrictionsUtilisateurSurType restrictions = rel.GroupeRestriction.ListeRestrictions; CRestrictionUtilisateurSurType resTmp = restrictions.GetRestriction(element.GetType()); restriction.Combine(resTmp); lst.Remove(rel); } } if (lst.Count == 0) { return; } } foreach (CRelationUtilisateur_Profil relProfil in user.RelationsProfils) { foreach (CRelationElement_RestrictionSpecifique rel in lst.ToArray()) { if (rel.GetRelationFor(relProfil.Profil) != null) { CListeRestrictionsUtilisateurSurType restrictions = rel.GroupeRestriction.ListeRestrictions; CRestrictionUtilisateurSurType resTmp = restrictions.GetRestriction(element.GetType()); restriction.Combine(resTmp); lst.Remove(rel); if (lst.Count == 0) { return; } } } } } }