//-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee ds)
        {
            CResultAErreur result = CResultAErreur.True;
            //envoie les notifications sur modification de données utilisateur
            DataTable table = ds.Tables[GetNomTable()];

            foreach (DataRow row in table.Rows)
            {
                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    CRelationActeurUtilisateur_Droit rel = new CRelationActeurUtilisateur_Droit(row);
                    //TESTDBKEYOK
                    CDonneeNotificationChangementDroitUtilisateur notDroit = new CDonneeNotificationChangementDroitUtilisateur(IdSession, rel.DonneeActeurUtilisateur.DbKey);
                    CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { notDroit });
                }
            }
            return(result);
        }
示例#2
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee ds)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(ds);

            if (!result)
            {
                return(result);
            }

            //Et envoie les notifications sur modification de données utilisateur
            DataTable table = ds.Tables[GetNomTable()];
            ArrayList lst   = new ArrayList(table.Rows);

            foreach (DataRow row in lst)
            {
                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    CActeur acteur = new CActeur(row);

                    //sc2i.data.dynamic.CNettoyeurValeursChamps.NettoieChamps(acteur);

                    //Notification modification user
                    CDonneesActeurUtilisateur donneePart = (CDonneesActeurUtilisateur)acteur.GetDonneesRole(CRoleActeur.GetRole(CDonneesActeurUtilisateur.c_codeRole));
                    if (donneePart != null)
                    {
                        //TESTDBKEYOK
                        CDonneeNotificationChangementDroitUtilisateur notDroit = new CDonneeNotificationChangementDroitUtilisateur(IdSession, donneePart.DbKey);
                        CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { notDroit });
                    }
                    if (acteur.ActeurParent != null &&
                        acteur.ActeurParent.IsChildOf(acteur))
                    {
                        result.EmpileErreur(I.T("A cyclic member relationship has been detected|134"));
                    }
                }
            }
            return(result);
        }
示例#3
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee ds)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(ds);

            CDonneesActeurUtilisateur userConnecte = CDonneesActeurUtilisateur.GetUserForSession(ds.IdSession, ds);

            CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);

            // Un utilisateur ne peut pas affecter un Profil de Licence à un autre utilisateur,
            // si ce profil est plus fort que le sien
            CInfoLicenceUserProfil profil = (CInfoLicenceUserProfil)session.GetPropriete(CInfoLicenceUserProfil.c_nomIdentification);

            //envoie les notifications sur modification de données utilisateur
            DataTable table = ds.Tables[GetNomTable()];

            foreach (DataRow row in table.Rows)
            {
                if (row.RowState != DataRowState.Unchanged)
                {
                    if (userConnecte != null)
                    {
                        // Vérifie premièrement que l'utilisateur connecté à le droit de gestion de utilisateurs
                        if (userConnecte.GetDonneeDroit(CDroitDeBase.c_droitBaseGestionUtilisateurs) == null)
                        {
                            result.EmpileErreur(I.T("You don't have System Right to Manage Application Users|10012"));
                            return(result);
                        }
                    }
                }

                if (row.RowState == DataRowState.Added || row.RowState == DataRowState.Modified)
                {
                    if (userConnecte != null)
                    {
                        // Verifie ensuite que l'utilisteur connecté tente de donner un droit qu'il n'a pas !
                        CDonneesActeurUtilisateur user = new CDonneesActeurUtilisateur(row);
                        foreach (CRelationActeurUtilisateur_Droit relDroit in user.RelationsDroits)
                        {
                            if (userConnecte.GetDonneeDroit(relDroit.Droit.Code) == null)
                            {
                                result.EmpileErreur(I.T("You don't have right to affect this system Right : @1|10019", relDroit.Droit.Libelle));
                                return(result);
                            }
                        }
                        // Vérifie que l'utilisateur connecté ne tente pas d'affecter un profil de licence supérieur au sien
                        string strIdProfil = user.IdProfilLicence;
                        CInfoLicenceUserProfil profilModifie = CGestionnaireProfilLicenceSurClient.GetProfil(strIdProfil);
                        if (profil == null || profilModifie != null && profilModifie.Priorite > profil.Priorite)
                        {
                            result.EmpileErreur(I.T("You can not affect a Licence Profile greater than your Profile : @1|20140", profilModifie.Nom));
                        }
                    }


                    //TESTDBKEYOK
                    CDonneeNotificationChangementDroitUtilisateur notDroit = new CDonneeNotificationChangementDroitUtilisateur(IdSession, CDbKey.CreateFromStringValue((string)row[CDonneesActeurUtilisateur.c_champIdUniversel]));
                    CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { notDroit });
                }
            }
            return(result);
        }