예제 #1
0
        public bool Acknowledge()
        {
            CResultAErreur result = CResultAErreur.True;

            if (DateAcquittement != null)
            {
                return(false);
            }

            BeginEdit();

            CDonneesActeurUtilisateur utilisateurEnCours =
                CDonneesActeurUtilisateur.GetUserForSession(ContexteDonnee.IdSession, ContexteDonnee);

            if (utilisateurEnCours != null)
            {
                ResponsableAcquittement = utilisateurEnCours.Acteur;
                DateAcquittement        = DateTime.Now;
                // Acquitte les alarmes filles en cascade
                foreach (CAlarme alarmeFille in AlarmesFilles)
                {
                    alarmeFille.Acknowledge();
                }
            }

            result = CommitEdit();

            return(result.Result);
        }
예제 #2
0
        /// ////////////////////////////////////////////////////
        private bool ShouldAffiche(CMenuCustom menu)
        {
            bool bAfficheGroupes = false;
            bool bAfficheProfils = false;
            bool bAffiche        = true;

            CDbKey[] keysGroupes = menu.KeysGroupes;
            if (keysGroupes != null && keysGroupes.Length > 0)
            {
                bAffiche = false;
                //TESTDBKEYOK
                CDbKey[] lstGroupesSession = CTimosApp.SessionClient.GetInfoUtilisateur().ListeKeysGroupes;
                foreach (CDbKey keyVoyant in keysGroupes)
                {
                    foreach (CDbKey key in lstGroupesSession)
                    {
                        if (keyVoyant == key)
                        {
                            bAfficheGroupes = true;
                        }
                    }
                }
            }

            //TESTDBKEYOK
            CDbKey[] keysProfils = menu.KeysProfils;
            if (keysProfils != null && keysProfils.Length > 0)
            {
                bAffiche = false;
                CDonneesActeurUtilisateur user = CDonneesActeurUtilisateur.GetUserForSession(
                    CTimosApp.SessionClient.IdSession,
                    m_menuCustom.ContexteDonnee);
                foreach (CDbKey keyVoyant in keysProfils)
                {
                    CProfilUtilisateur profilVoyant = new CProfilUtilisateur(m_menuCustom.ContexteDonnee);
                    if (profilVoyant.ReadIfExists(keyVoyant))
                    {
                        if (user.IsInProfil(profilVoyant))
                        {
                            bAfficheGroupes = true;
                        }
                    }
                }
            }

            if (!bAffiche)
            {
                return(bAfficheGroupes || bAfficheProfils);
            }

            return(bAffiche);
        }
예제 #3
0
        private void m_arbre_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
        {
            if (!e.Node.Checked || m_elementADroits == null || m_bIsInitialising)
            {
                return;
            }

            // Utilistauer connecté
            CDonneesActeurUtilisateur userConnecte = null;
            CObjetDonnee objet = m_elementADroits as CObjetDonnee;

            if (objet != null)
            {
                userConnecte = CDonneesActeurUtilisateur.GetUserForSession(objet.ContexteDonnee.IdSession, objet.ContexteDonnee);
            }

            CDroitNode node = (CDroitNode)e.Node;

            if (userConnecte != null)
            {
                // Verifie que l'utilisateur tente d'affecter un droit qu'il n'a pas !
                if (userConnecte.GetDonneeDroit(node.Droit.Code) == null)
                {
                    node.Checked = false;
                    CFormAlerte.Afficher(I.T("You don't have right to affect this system Right : @1|10010", node.Droit.Libelle));
                    return;
                }
            }


            if (node.Relation == null)
            {
                CRelationElement_Droit relation = m_elementADroits.GetNewObjetRelationDroit();
                relation.Droit = (CDroitUtilisateur)node.Droit;
                relation.ElementDefinisseur = m_elementADroits;
                node.Relation = relation;
            }
            m_arbre.SelectedNode = node;
            if (node.Checked && !m_bLockEdition)
            {
                m_listeExtensions.Enabled = true;
                m_wndListeOptions.Enabled = true;
            }
            else
            {
                m_listeExtensions.Enabled = false;
                m_wndListeOptions.Enabled = false;
            }
        }
예제 #4
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);
        }