Exemplo n.º 1
0
        public bool UpdateContributor(GroupUserModel groupUserModel)
        {
            DatabaseGroupUser databaseGroupUser = GetDatabaseGroupUserWithSqlLogin(groupUserModel.SqlLogin, groupUserModel.DbId);

            if (databaseGroupUser == null)
            {
                return(false);
            }

            // Modification du mot de passe sur le serveur
            string serverName = null;

            try
            {
                // Obtention de la base de données
                DatabaseDB databaseDB = GetDatabase(groupUserModel.DbId);
                if (databaseDB == null)
                {
                    return(false);
                }

                // Obtention du serveur
                DatabaseServerName databaseServerName = this.db.DatabaseServerNames.Find(databaseDB.ServerId);
                if (databaseServerName == null)
                {
                    return(false);
                }
                serverName = databaseServerName.Name;

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.IPLocale, databaseServerName.PortLocal);
                if (management == null)
                {
                    return(false);
                }

                management.UpdateContributor(databaseDB.NomBD, groupUserModel.SqlLogin, groupUserModel.GroupType, groupUserModel.Password);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout du contributeur {0} sur le serveur '{1}'", groupUserModel.ToString(), serverName), ex);
            }

            try
            {
                // Maj du type
                databaseGroupUser.GroupType = groupUserModel.GroupType;
                // Modification du contributeur dans le groupe
                db.Entry(databaseGroupUser).State = EntityState.Modified;
                this.db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans la modification du contributeur {0} dans le référentiel", groupUserModel.ToString()), ex);
            }

            return(true);
        }
Exemplo n.º 2
0
        private bool InternalRemoveDatabase(DatabaseDB database)
        {
            string serverName = "Serveur non trouvé";

            try
            {
                // Obtention du serveur
                DatabaseServerName databaseServerName = this.db.DatabaseServerNames.Find(database.ServerId);
                if (databaseServerName == null)
                {
                    return(false);
                }

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.IPLocale, databaseServerName.PortLocal);
                if (management == null)
                {
                    return(false);
                }

                // et suppression de la base de données sur le serveur de BD
                management.RemoveDatabase(database.NomBD);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans la suppression de la base de données {0} sur le serveur '{1}'", database.ToString(), serverName), ex);
            }

            // Suppression des contributeurs associés
            db.DatabaseGroupUsers.RemoveRange(database.DatabaseGroupUsers);
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new Exception(string.Format("Erreur dans la suppression des contributeurs de la base de données '{0}' dans le référentiel", database.ToString()));
            }

            // Suppression de la base de données
            db.DatabaseDBs.Remove(database);
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new Exception(string.Format("Erreur dans la suppression de la base de données '{0}' dans le référentiel", database.ToString()));
            }

            return(true);
        }
        public DatabaseServerUser RemoveAccount(int serverId, string userLogin)
        {
            DatabaseServerUser databaseServerUser = null;
            DatabaseServerName databaseServerName = null;
            string             serverName         = "Serveur non trouvé";

            try
            {
                // Obtention du serveur
                databaseServerName = this.db.DatabaseServerName.Find(serverId);
                if (databaseServerName == null)
                {
                    return(null);
                }
                serverName = databaseServerName.Name;
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(String.Format("Erreur dans l'obtention du compte utilisateur {0} du serveur '{1}' dans le référentiel, Erreur: {2}", userLogin, serverName, ex.Message));
            }

            try
            {
                var databaseServerUsers = db.DatabaseServerUser.Include(su => su.Server).AsEnumerable();
                databaseServerUser = databaseServerUsers.SingleOrDefault(su => su.ServerId == serverId && su.UserLogin.Equals(userLogin, StringComparison.InvariantCultureIgnoreCase));
                if (databaseServerUser == null)
                {
                    return(null);
                }

                db.DatabaseServerUser.Remove(databaseServerUser);
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(String.Format("Erreur dans la suppression du compte utilisateur {0} sur le serveur '{1}' dans le référentiel, Erreur: {2}", userLogin, serverName, ex.Message));
            }

            try
            {
                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.Iplocale, databaseServerName.PortLocal);
                // Modification du mot de passe du login SQL sur le serveur
                management.RemoveUser(databaseServerUser.SqlLogin);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(String.Format("Erreur dans la suppression du compte utilisateur {0} sur le serveur '{1}', Erreur: {2}", userLogin, serverName, ex.Message));
            }

            return(databaseServerUser);
        }
        public DatabaseServerUser AddAccount(ServerAccountModel serverAccount)
        {
            DatabaseServerUser databaseServerUser = new DatabaseServerUser
            {
                ServerId  = serverAccount.ServerId,
                UserLogin = serverAccount.UserLogin
            };

            string serverName = "Serveur non trouvé";

            try
            {
                // Obtention du serveur
                DatabaseServerName databaseServerName = this.db.DatabaseServerName.Find(serverAccount.ServerId);
                if (databaseServerName == null)
                {
                    return(null);
                }
                serverName = databaseServerName.Name;

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.Iplocale, databaseServerName.PortLocal);
                // Création du login SQL
                databaseServerUser.SqlLogin = management.MakeSqlLogin(serverAccount.UserLogin);
                // Ajout du login SQL sur le serveur
                management.AddOrUpdateUser(databaseServerUser.SqlLogin, serverAccount.Password);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout du compte utilisateur {0} sur le serveur '{1}', Erreur: {2}", serverAccount.ToString(), serverName, ex.Message));
            }

            // Ajout de l'utilisateur pour cette BD
            try
            {
                db.DatabaseServerUser.Add(databaseServerUser);
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout du compte utilisateur {0} dans le référentiel", serverAccount.ToString()), ex);
            }

            return(databaseServerUser);
        }
        public bool UpdateAccount(ServerAccountModel serverAccount)
        {
            DatabaseServerUser databaseServerUser = null;
            DatabaseServerName databaseServerName = null;
            string             serverName         = "Serveur non trouvé";

            try
            {
                // Obtention du serveur
                databaseServerName = this.db.DatabaseServerName.Find(serverAccount.ServerId);
                if (databaseServerName == null)
                {
                    return(false);
                }
                serverName = databaseServerName.Name;

                // Obtention du login SQL de l'utilisateur
                var databaseServerUsers = db.DatabaseServerUser.Include(su => su.Server).AsEnumerable();
                databaseServerUser = databaseServerUsers.SingleOrDefault(su => su.ServerId == serverAccount.ServerId && su.UserLogin.Equals(serverAccount.UserLogin, StringComparison.InvariantCultureIgnoreCase));
                if (databaseServerUser == null)
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(String.Format("Erreur dans l'obtention du compte utilisateur {0} dans le référentiel, Erreur: {1}", serverAccount.ToString(), ex.Message));
            }

            try
            {
                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.Iplocale, databaseServerName.PortLocal);
                // Modification du mot de passe du login SQL sur le serveur
                management.AddOrUpdateUser(databaseServerUser.SqlLogin, serverAccount.Password);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(String.Format("Erreur dans la modification du compte utilisateur {0} sur le serveur '{1}', Erreur: {2}", serverAccount.ToString(), serverName, ex.Message));
            }

            return(true);
        }
Exemplo n.º 6
0
        private bool InternalRemoveContributor(DatabaseGroupUser databaseGroupUser)
        {
            string serverName = "Serveur non trouvé";

            try
            {
                // Obtention du serveur
                DatabaseServerName databaseServerName = db.DatabaseServerName.Find(databaseGroupUser.Db.ServerId);
                if (databaseServerName == null)
                {
                    return(false);
                }
                serverName = databaseServerName.Name;

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.Iplocale, databaseServerName.PortLocal);
                if (management == null)
                {
                    return(false);
                }

                // et suppression de la base de données sur le serveur de BD
                management.RemoveContributorFromDatabase(databaseGroupUser.Db.NomBd, databaseGroupUser.SqlLogin);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans la suppression du contributeur '{0}' de la base de données' {1}' sur le serveur '{2}'", databaseGroupUser.SqlLogin, databaseGroupUser.Db.NomBd, serverName), ex);
            }

            // Suppression du contributeur
            db.DatabaseGroupUser.Remove(databaseGroupUser);
            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new Exception(string.Format("Erreur dans la suppression du contributeur '{0}' de la base de données '{0}' dans le référentiel", databaseGroupUser.SqlLogin, databaseGroupUser.Db.NomBd));
            }

            return(true);
        }
Exemplo n.º 7
0
        public DatabaseDB AddDatabase(DatabaseModel database)
        {
            // Vérification du nom
            if (!RegularExpression.IsCorrectFileName(database.NomBD))
            {
                throw new DatabaseException("Le nom ne doit pas comporter des caractères spéciaux.");
            }

            // Le nom de la base de données doit être unique sur un serveur donné
            if (GetDatabase(database.ServerId, database.NomBD) != null)
            {
                throw new DatabaseException("Le nom de la base de données existe déjà.");
            }

            string             serverName         = "Serveur non trouvé";
            DatabaseServerUser databaseServerUser = null;

            try
            {
                // Obtention du serveur
                DatabaseServerName databaseServerName = this.db.DatabaseServerNames.Find(database.ServerId);
                if (databaseServerName == null)
                {
                    return(null);
                }

                // Obtention du compte utilisateur du serveur
                ServerAccountService serverAccountService = new ServerAccountService(this.ServiceEpsiContext);
                databaseServerUser = serverAccountService.GetAccountByServerLogin(database.ServerId, database.UserLogin);
                if (databaseServerUser == null)
                {
                    return(null);
                }

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.IPLocale, databaseServerName.PortLocal);
                if (management == null)
                {
                    return(null);
                }

                // et céation de la base de données sur le serveur de BD
                management.CreateDatabase(database.NomBD, databaseServerUser.SqlLogin);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout de la base de données {0} sur le serveur '{1}'", database.ToString(), serverName), ex);
            }

            // Ajout de la base de données dans le référentiel
            DatabaseDB databaseDB = new DatabaseDB
            {
                ServerId     = database.ServerId,
                NomBD        = database.NomBD,
                DateCreation = DateTime.Now,
                Commentaire  = database.Commentaire
            };

            db.DatabaseDBs.Add(databaseDB);

            try
            {
                db.SaveChanges();

                // puis du créateur comme contributeur avec tous les droits
                DatabaseGroupUser databaseGroupUser = new DatabaseGroupUser
                {
                    DbId             = databaseDB.Id,
                    UserLogin        = databaseServerUser.UserLogin,
                    UserFullName     = database.UserFullName,
                    SqlLogin         = databaseServerUser.SqlLogin,
                    GroupType        = DatabaseValues.ADMINISTRATEUR,
                    AddedByUserLogin = databaseServerUser.UserLogin
                };
                db.DatabaseGroupUsers.Add(databaseGroupUser);
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                if (!Exists(databaseDB.ServerId))
                {
                    return(null);
                }
                else
                {
                    LogManager.GetLogger().Error(ex);
                    throw new DatabaseException(string.Format("Erreur dans l'ajout de la base de données dans le référentiel", database.ToString()), ex);
                }
            }

            // Enregistrement dans les logs
            WriteLogs("BDD Création - " + string.Format("L'utilisateur '<b>{0}</b>' a créé la bdd '{1}' de type '{2}'", database.UserLogin, database.NomBD, database.ServerId));
            return(databaseDB);
        }
Exemplo n.º 8
0
        public DatabaseGroupUser AddContributor(string userLogin, GroupUserModel groupUserModel)
        {
            string serverName = null;

            try
            {
                // Obtention de la base de données
                DatabaseDB databaseDB = GetDatabase(groupUserModel.DbId);
                if (databaseDB == null)
                {
                    return(null);
                }

                // Obtention du serveur
                DatabaseServerName databaseServerName = this.db.DatabaseServerNames.Find(databaseDB.ServerId);
                if (databaseServerName == null)
                {
                    return(null);
                }
                serverName = databaseServerName.Name;

                // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP
                DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.IPLocale, databaseServerName.PortLocal);
                if (management == null)
                {
                    return(null);
                }

                management.AddContributor(databaseDB.NomBD, groupUserModel.SqlLogin, groupUserModel.GroupType, groupUserModel.Password);
            }
            catch (Exception ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout du contributeur {0} sur le serveur '{1}'", groupUserModel.ToString(), serverName), ex);
            }

            DatabaseGroupUser contributor = new DatabaseGroupUser
            {
                DbId             = groupUserModel.DbId,
                SqlLogin         = groupUserModel.SqlLogin,
                AddedByUserLogin = userLogin,
                GroupType        = groupUserModel.GroupType,
                UserLogin        = groupUserModel.UserLogin,
                UserFullName     = groupUserModel.UserFullName
            };

            try
            {
                // Ajout du contributeur dans le groupe
                this.db.DatabaseGroupUsers.Add(contributor);
                this.db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex)
            {
                LogManager.GetLogger().Error(ex);
                throw new DatabaseException(string.Format("Erreur dans l'ajout du contributeur {0} dans le référentiel", groupUserModel.ToString()), ex);
            }

            // Envoi du mail

            /*
             * if (userLoginSQL != null)
             *  contributor.UserLoginSQL = userLoginSQL;
             *
             *
             *  if (userEpsi != null)
             *  {
             *      contributor.UserEpsiFullName = userEpsi.Nom + " " + userEpsi.Prenom;
             *
             *      // Envoi du mail
             *      if (!string.IsNullOrWhiteSpace(userEpsi.Mail))
             *      {
             *          StringBuilder body = new StringBuilder();
             *          body.AppendFormat("Bonjour, </b><br /><br />Vous avez été ajouté comme contributeur dans la base de données '{0}' par l'utilisateur '{1}'", infos.Name, infos.Createur);
             *          if (accountAdded)
             *          {
             *              body.AppendFormat("<br /><br />Un compte a été créé sur le serveur '{0}' avec un mot de passe aléatoire.<br />", infos.DatabaseServerName.Name);
             *              body.Append("Vous devez vous connecter à <a href='https://ingenium.montpellier.epsi.fr/'>Ingénium</a> pour modifier le mot de passe de ce compte.");
             *          }
             *          body.Append("Connectez-vous à <a href='https://ingenium.montpellier.epsi.fr/'>Ingénium</a> pour voir vos base de données.");
             *          body.Append(@"</b><br /><br />L'administrateur réseau<br />EPSI Montpellier");
             *
             *          SendMail(userEpsi.Mail, "EPSI - Base de données - Ajout de contributeur", body.ToString());
             *      }
             *  }
             * }*/

            return(contributor);

            /*
             * {
             *  Message = message,
             *  Status = status,
             *  UserEpsiFullName = contributor.UserEpsiFullName,
             *  UserId = userId,
             *  LoginSQL = contributor.UserLoginSQL,
             *  GroupType = groupType,
             *  GroupTypeDescription = DatabaseService.GetGroupDescription(groupType)
             * });*/
        }