/// ///////////////////////////////////////////////////
        public IDonneeDroitUtilisateur GetDonneeDroit(string strCode)
        {
            CDonneesActeurUtilisateur user = Utilisateur;

            if (user == null)//C'est une session système
            {
                return(new CDonneeDroitSysteme(strCode));
            }
            return(user.GetDonneeDroit(strCode));
        }
        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;
            }
        }
Exemple #3
0
        //---------------------------------------------------------------------------
        public void Init(CWorkflow workflowRacine)
        {
            if (workflowRacine == null)
            {
                Visible = false;
                return;
            }
            Visible          = true;
            m_stackWorkflows = new Stack <CWorkflow>();
            m_workflowRacine = workflowRacine;
            AfficheWorkflow(m_workflowRacine);

            //TESTDBKEYOK
            CDonneesActeurUtilisateur user = CUtilSession.GetUserForSession(workflowRacine.ContexteDonnee);

            m_bCanManage = user != null && (
                user.GetDonneeDroit(CDroitDeBase.c_droitBaseGestionWorkflows) != null ||
                user.DbKey == workflowRacine.KeyManager);
            Refresh();
        }
Exemple #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);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void m_btnActions_Click(object sender, System.EventArgs e)
        {
            CListeObjetsDonnees listeCheckes = m_panelListe.GetElementsCheckes();

            if (listeCheckes.Count == 0)
            {
                CFormAlerte.Afficher(I.T("No element selected for action execution|1011"), EFormAlerteType.Exclamation);
                return;
            }

            CDonneesActeurUtilisateur user = CUtilSession.GetUserForSession(m_panelListe.ListeObjets.ContexteDonnee);
            bool bIsAdmin = user != null && user.GetDonneeDroit(CDroitDeBaseSC2I.c_droitAdministrationSysteme) != null;

            Hashtable listeActions = new Hashtable();

            using (CWaitCursor curseur = new CWaitCursor())
            {
                bool bFirst = true;
                //Cherche les actions applicables à tous les éléments
                foreach (CObjetDonneeAIdNumerique objet in listeCheckes)
                {
                    IDeclencheurAction[] declencheurs = CRecuperateurDeclencheursActions.GetActionsManuelles(objet, false);
                    Hashtable            newTbl       = new Hashtable();
                    foreach (IDeclencheurAction declencheur in declencheurs)
                    {
                        if (bFirst || listeActions[declencheur] != null)
                        {
                            newTbl[declencheur] = true;
                        }
                    }
                    bFirst = false;
                    if (newTbl.Count == 0 && !bIsAdmin)
                    {
                        CFormAlerte.Afficher(I.T("There is no action to execute on the selected elements|1012"), EFormAlerteType.Exclamation);
                        return;
                    }
                    listeActions = newTbl;
                }
            }
            m_menuActions.MenuItems.Clear();
            foreach (IDeclencheurAction declencheur in listeActions.Keys)
            {
                string strMenu = "";
                if (declencheur is IDeclencheurActionManuelle)
                {
                    strMenu = ((IDeclencheurActionManuelle)declencheur).MenuManuel;
                }
                string[] strMenus = strMenu.Split('/');
                Menu.MenuItemCollection listeSousMenus = m_menuActions.MenuItems;
                if (strMenus.Length > 0)
                {
                    foreach (string strSousMenu in strMenus)
                    {
                        if (strSousMenu.Trim().Length > 0)
                        {
                            MenuItem sousMenu = null;
                            foreach (MenuItem item in listeSousMenus)
                            {
                                if (item.Text == strSousMenu)
                                {
                                    sousMenu = item;
                                    break;
                                }
                            }
                            if (sousMenu == null)
                            {
                                sousMenu = new MenuItem(strSousMenu);
                                listeSousMenus.Add(sousMenu);
                            }
                            listeSousMenus = sousMenu.MenuItems;
                        }
                    }
                }
                CMenuItemDeclencheur itemAction = new CMenuItemDeclencheur(declencheur);
                itemAction.Click += new EventHandler(MenuDeclencheurClick);
                listeSousMenus.Add(itemAction);
            }

            if (bIsAdmin)
            {
                m_menuActions.MenuItems.Add(new MenuItem());
                MenuItem itemApplyFormula = new MenuItem(I.T("Apply formula|20834"));
                m_menuActions.MenuItems.Add(itemApplyFormula);
                itemApplyFormula.Click += new EventHandler(itemApplyFormula_Click);
            }
            m_menuActions.Show(m_btnActions, new Point(0, m_btnActions.Height));
        }