Пример #1
0
 private void undoCreateHomeFolder(OrgUtente utente)
 {
     try
     {
         IObjectService objSrvc      = this.GetObjectServiceInstance();
         string         homePath     = "/" + TypeUtente.getHomeFolderName(utente.UserId);
         ObjectIdentity homeIdentity =
             new ObjectIdentity(new ObjectPath(homePath),
                                DctmConfigurations.GetRepositoryName());
         ObjectIdentitySet idSet = new ObjectIdentitySet(homeIdentity);
         objSrvc.Delete(idSet, null);
     }
     catch (Exception ex)
     {
         //se siamo arrivati qui, significa che siamo già in una condizione di errore
         //non è così grave: rimane un folder, che non pregiudica un eventuale nuovo tentativo dei definire l'utente
         //in ogni caso è inutile rilanciare l'eccezione: già il chiamante è in gestione di una ecc.
         logger.Debug(DEBUG_HEADER + "Impossibile annullare l'inserimento dell'home folder: " + ex.ToString());
     }
 }
Пример #2
0
        /// <summary>
        /// Inserimento di un nuovo utente in amministrazione
        /// </summary>
        /// <param name="utente"></param>
        /// <returns></returns>
        public EsitoOperazione InserisciUtente(OrgUtente utente)
        {
            EsitoOperazione retValue = new EsitoOperazione();

            string logMsg      = string.Empty;
            bool   userCreated = false;
            bool   pathCreated = false;

            // test sui campi obbligatori
            if (string.IsNullOrEmpty(utente.Codice) ||
                string.IsNullOrEmpty(utente.Email) ||
                string.IsNullOrEmpty(utente.IDPeople) ||
                string.IsNullOrEmpty(utente.UserId))
            {
                retValue.Codice      = -1;
                retValue.Descrizione = ERR_HEADER + "InserisciUtente: dati insufficienti";
                logger.Debug(retValue.Descrizione);
            }
            else
            {
                try
                {
                    IObjectService objSrvc = this.GetObjectServiceInstance();
                    string         repo    = DctmConfigurations.GetRepositoryName();

                    string         homePath            = string.Concat("/", TypeUtente.getHomeFolderName(utente.UserId));
                    ObjectIdentity identityHomeCabinet = objSrvc.CreatePath(new ObjectPath(homePath), repo);
                    pathCreated = true;

                    ObjectIdentity userIdentity = new ObjectIdentity(repo);
                    DataObject     userData     = new DataObject(userIdentity, ObjectTypes.UTENTE);

                    // Reperimento properties utente
                    userData.Properties.Properties.AddRange(Dfs4DocsPa.getUserProperties(utente));
                    userData.Properties.Set <string>("default_folder", homePath);

                    DataPackage dataPackage = new DataPackage(userData);

                    dataPackage = objSrvc.Create(dataPackage, null);

                    if (dataPackage.DataObjects.Count > 0)
                    {
                        userCreated = true;

                        // Impotazione proprietà "is_private = 1", per fare in modo
                        // che il cabinet sia visibile solamente all'utente che l'ha creato
                        // e 'owner_name' con il nome dell'utente
                        DataObject homeCabinetData = new DataObject(identityHomeCabinet, "dm_cabinet");
                        //homeCabinetData.Properties.Set<int>("is_private", 1);  //Vecchio 6.0
                        homeCabinetData.Properties.Set <string>("is_private", "1");
                        homeCabinetData.Properties.Set <string>("owner_name", TypeUtente.getUserName(utente));

                        dataPackage = new DataPackage(homeCabinetData);
                        dataPackage = objSrvc.Update(dataPackage, null);

                        if (dataPackage.DataObjects.Count > 0)
                        {
                            this.inserisciUtenteInAmministrazione(utente, userData);

                            retValue.Codice      = 0;
                            retValue.Descrizione = string.Empty;
                            logger.Debug(DEBUG_HEADER + "InserisciUtente completata con SUCCESSO");
                        }
                        else
                        {
                            throw new ApplicationException();
                        }
                    }
                    else
                    {
                        undoCreateHomeFolder(utente);
                        pathCreated = false;
                        throw new ApplicationException();
                    }
                }
                catch (Exception ex)
                {
                    string errorMessage = string.Format("Errore in {0}: {1}", DEBUG_HEADER, ex.ToString());

                    logger.Debug(errorMessage);
                    retValue.Codice      = -1;
                    retValue.Descrizione = ERR_HEADER + "InserisciUtente";

                    if (pathCreated)
                    {
                        this.undoCreateHomeFolder(utente);
                    }

                    if (userCreated)
                    {
                        this.undoCreateUser(utente);
                    }
                }
            }

            return(retValue);
        }