protected virtual MongoCollection <T> GetCollection(out GenericError error)
        {
            string        connString = GetConnection(out error);
            MongoDatabase database   = MongoDatabase.Create(connString);

            return(database.GetCollection <T>(CollectionName));
        }
Beispiel #2
0
        private static void ConvertCollection()
        {
            var database = MongoDatabase.Create(url);

            var fromCollectionSettings = database.CreateCollectionSettings <BsonDocument>(fromCollectionName);

            fromCollectionSettings.GuidRepresentation = fromRepresentation;
            var fromCollection = database.GetCollection(fromCollectionSettings);

            if (!fromCollection.Exists())
            {
                throw new ApplicationException("From collection does not exist.");
            }

            var toCollectionSettings = database.CreateCollectionSettings <BsonDocument>(toCollectionName);

            toCollectionSettings.GuidRepresentation = toRepresentation;
            var toCollection = database.GetCollection(toCollectionSettings);

            if (toCollection.Exists())
            {
                throw new ApplicationException("To collection already exists.");
            }

            foreach (var document in fromCollection.FindAll())
            {
                ConvertDocument(document);
                toCollection.Insert(document);
            }
        }
Beispiel #3
0
        public override void Initialize(string name, NameValueCollection config)
        {
            this.ApplicationName                      = config["applicationName"] ?? HostingEnvironment.ApplicationVirtualPath;
            this.enablePasswordReset                  = Boolean.Parse(config["enablePasswordReset"] ?? "true");
            this.enablePasswordRetrieval              = Boolean.Parse(config["enablePasswordRetrieval"] ?? "false");
            this.maxInvalidPasswordAttempts           = Int32.Parse(config["maxInvalidPasswordAttempts"] ?? "5");
            this.minRequiredNonAlphanumericCharacters = Int32.Parse(config["minRequiredNonAlphanumericCharacters"] ?? "1");
            this.minRequiredPasswordLength            = Int32.Parse(config["minRequiredPasswordLength"] ?? "7");
            this.passwordAttemptWindow                = Int32.Parse(config["passwordAttemptWindow"] ?? "10");
            this.passwordFormat = (MembershipPasswordFormat)Enum.Parse(typeof(MembershipPasswordFormat), config["passwordFormat"] ?? "Hashed");
            this.passwordStrengthRegularExpression = config["passwordStrengthRegularExpression"] ?? String.Empty;
            this.requiresQuestionAndAnswer         = Boolean.Parse(config["requiresQuestionAndAnswer"] ?? "false");
            this.requiresUniqueEmail = Boolean.Parse(config["requiresUniqueEmail"] ?? "true");

            if (this.PasswordFormat == MembershipPasswordFormat.Hashed && this.EnablePasswordRetrieval)
            {
                throw new ProviderException("Configured settings are invalid: Hashed passwords cannot be retrieved. Either set the password format to different type, or set enablePasswordRetrieval to false.");
            }

            this.mongoCollection = MongoDatabase.Create(
                ConfigurationManager.ConnectionStrings[config["connectionStringName"] ?? "MongoConnection"].ConnectionString ?? "mongodb://localhost")
                                   .GetCollection(config["collection"] ?? "Users");
            this.mongoCollection.EnsureIndex("ApplicationName");
            this.mongoCollection.EnsureIndex("ApplicationName", "Email");
            this.mongoCollection.EnsureIndex("ApplicationName", "Username");

            base.Initialize(name, config);
        }
Beispiel #4
0
        public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
        {
            MembershipUser retval = null;
            ObjectId       id     = default(ObjectId);
            string         key    = providerUserKey.ToString();

            if (!string.IsNullOrWhiteSpace(key) && !ObjectId.TryParse(key, out id))
            {
                throw new Exception("The providerUserKey parameter cannot be converted to a valid ObjectID.");
            }

            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                var users = db.GetCollection <MongoUser>(typeof(MongoUser).Name);
                var user  = users.AsQueryable().SingleOrDefault(u => u._id == id);

                if (user != null)
                {
                    retval = user.ToMembershipUser();
                    if (userIsOnline)
                    {
                        user.LastActivityDate = DateTime.Now;
                        users.Save(user);
                    }
                }
            }

            return(retval);
        }
Beispiel #5
0
    public void Polymorphic_objects_should_deserialize()
    {
        var database   = MongoDatabase.Create("connection_string");
        var collection = database.GetCollection("vehicles");
        var car        = new Car
        {
            wheels = new List <Wheel>
            {
                new WheelA {
                    propA = 123
                },
                new WheelB {
                    propB = 456
                }
            }
        };

        collection.Insert(car);
        var fetched = collection.AsQueryable <Car>()
                      .SingleOrDefault(x => x.Id == car.Id);

        Assert.IsNotNull(fetched.wheels);
        Assert.AreEqual(2, fetched.wheels.Count);
        Assert.IsInstanceOfType(fetched.wheels[0], typeof(WheelA));
        Assert.IsInstanceOfType(fetched.wheels[1], typeof(WheelB));
        Assert.AreEqual(123, (fetched.wheels[0] as WheelA).propA);
        Assert.AreEqual(456, (fetched.wheels[1] as WheelB).propB);
    }
Beispiel #6
0
        static void ConfigureDefaultMongoDbIfNecessary(MessageBusConfigurator cfg)
        {
            string connstr, collection;

            if (!Util.ParseMongoEndpoint(cfg.Endpoint, out connstr, out collection))
            {
                throw new Exception("Invalid mongo connection string: " + cfg.Endpoint);
            }
            var dic = new Dictionary <string, string>();

            foreach (var cs in cfg.GetConnectionStrings())
            {
                if (cs.Name == null || dic.ContainsKey(cs.Name))
                {
                    continue;
                }
                dic[cs.Name] = cs.ConnectionString;
            }
            var cstr = Util.GetMongoConnectionStringForEndpoint(cfg.Endpoint, dic);

            cfg.CustomizeContainer(wc =>
            {
                if (!MessageBusConfigurator.IsServiceRegistered(wc, typeof(MongoDatabase)))
                {
                    wc.Register(Component.For <MongoDatabase>()
                                .Instance(MongoDatabase.Create(cstr)));
                }
            });
        }
Beispiel #7
0
        public override string GetPassword(string username, string answer)
        {
            if (!EnablePasswordRetrieval)
            {
                throw new ProviderException("Password Retrieval Not Enabled.");
            }
            else if (PasswordFormat == MembershipPasswordFormat.Hashed)
            {
                throw new ProviderException("Cannot retrieve Hashed passwords.");
            }

            MongoUser user = null;
            var       db   = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                user = db.GetCollection <MongoUser>(typeof(MongoUser).Name).AsQueryable().SingleOrDefault(u => u.UserName == username);
            }

            if (user == null)
            {
                throw new MembershipPasswordException("The supplied user name is not found.");
            }
            else if (user.IsLockedOut)
            {
                throw new MembershipPasswordException("The supplied user is locked out.");
            }
            else if (RequiresQuestionAndAnswer && !CheckPassword(answer, user.PasswordAnswer))
            {
                UpdateFailureCount(username, "passwordAnswer");
                throw new MembershipPasswordException("Incorrect password answer.");
            }

            return(UnEncodePassword(user.Password));
        }
Beispiel #8
0
        protected void Button2_Click(object sender, EventArgs e)
        {
            string connString = WebConfigurationManager.AppSettings["mongoConnectionString"];

            var             db         = MongoDatabase.Create(connString);
            MongoCollection collection = db.GetCollection("guids");

            collection.RemoveAll();

            MongoCursor <BsonDocument> cursor = collection.FindAllAs <BsonDocument>();

            DataTable dt = new DataTable();

            dt.Columns.Add("Date", typeof(DateTime));
            dt.Columns.Add("Value", typeof(String));

            foreach (var item in cursor)
            {
                dt.Rows.Add(item["Date"], item["Value"]);
            }


            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
Beispiel #9
0
        public static IContainer Initialize()
        {
            var pluralizer = PluralizationService.CreateService(CultureInfo.CurrentCulture);

            ObjectFactory.Initialize(x =>
            {
                x.Scan(scan =>
                {
                    scan.TheCallingAssembly();
                    scan.WithDefaultConventions();
                });
                x.For <MongoDatabase>().Use(() => MongoDatabase.Create(Config.MongoUrl));
                x.For(typeof(MongoCollection <>)).Use(context =>
                {
                    var db             = context.GetInstance <MongoDatabase>();
                    var type           = context.BuildStack.Current.RequestedType;
                    var modelType      = type.GetGenericArguments()[0];
                    var collectionName = pluralizer.Pluralize(modelType.Name);
                    return(db.GetCollection(modelType, collectionName));
                });
                x.For <IMailSender>().Use <SendGridMailSender>();
                x.For <NetworkCredential>().Use(new NetworkCredential(Config.SendGrid.User,
                                                                      Config.SendGrid.Password));
            });
            return(ObjectFactory.Container);
        }
Beispiel #10
0
        public override bool ValidateUser(string username, string password)
        {
            bool isValid = false;

            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                var users = db.GetCollection <MongoUser>(typeof(MongoUser).Name);
                var user  = users.AsQueryable().SingleOrDefault(u => u.UserName == username);

                if (user != null && !string.IsNullOrWhiteSpace(user.UserName) && user.IsApproved && !user.IsLockedOut)
                {
                    if (CheckPassword(password, user.Password))
                    {
                        user.LastLoginDate = DateTime.Now;
                        users.Save(user);
                        isValid = true;
                    }
                    else
                    {
                        UpdateFailureCount(username, "password");
                    }
                }
            }

            return(isValid);
        }
Beispiel #11
0
        public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
        {
            CheckRolesExist(roleNames);

            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())
            {
                foreach (string username in usernames)
                {
                    var permissions = db.GetCollection <MongoPermission>(typeof(MongoPermission).Name);
                    var permission  = permissions.AsQueryable().SingleOrDefault(p => p.Username == username);
                    if (permission != null)
                    {
                        permission.Roles.RemoveAll(r => roleNames.Contains(r));

                        if (permission.Roles.Count == 0)
                        {
                            permissions.Remove(Query.EQ("_id", permission._id));
                        }
                        else
                        {
                            permissions.Save(permission);
                        }
                    }
                }
            }
        }
Beispiel #12
0
        private void InitializeConnection(string connectionString)
        {
            var database = MongoDatabase.Create(connectionString);

            _collection = database.GetCollection <User>("users");
            _collection.CreateIndex(IndexKeys <User> .Hashed(index => index.Id));
        }
Beispiel #13
0
        public MongoQueue(MongoQueConfig config)
        {
            // our queue name will be the same as the message class
            _database = MongoDatabase.Create(config.ConnectionString);

            if (!_database.CollectionExists(_queueName))
            {
                try
                {
                    Log.InfoFormat("Creating queue '{0}' size {1}", _queueName, config.QueueSize);

                    var options = CollectionOptions
                                  .SetCapped(true)               // use a capped collection so space is pre-allocated and re-used
                                  .SetAutoIndexId(true)
                                  .SetMaxSize(config.QueueSize); // limit the size of the collection and pre-allocated the space to this number of bytes

                    _database.CreateCollection(_queueName, options);
                    var col = _database.GetCollection(_queueName);
                    col.EnsureIndex(new[] { "Dequeued" });
                    col.EnsureIndex(new[] { "Equeued" });
                }
                catch
                {
                    // assume that any exceptions are because the collection already exists ...
                }
            }

            // get the queue collection for our messages
            _queue = _database.GetCollection <MongoMessage <T> >(_queueName);
        }
        public virtual IPersistStreams Build()
        {
            var connectionString = this.TransformConnectionString(this.GetConnectionString());
            var database         = MongoDatabase.Create(connectionString);

            return(new MongoPersistenceEngine(database, this.serializer));
        }
Beispiel #15
0
        protected Catalog()
        {
            var dbUrl            = ConfigurationManager.AppSettings["MONGOLAB_URI"] ?? "mongodb://localhost/BandAppDb";
            var connectionString = string.Format(CultureInfo.InvariantCulture, "{0}?safe=true", dbUrl);

            _database = MongoDatabase.Create(connectionString); // TODO: remove usage of obsolete method
        }
Beispiel #16
0
        public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
        {
            MembershipUserCollection users   = new MembershipUserCollection();
            List <MongoUser>         results = null;
            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())
            {
                results = db.GetCollection <MongoUser>(typeof(MongoUser).Name).AsQueryable().Where(u => u.Email == emailToMatch).ToList();
            }

            int counter    = 0;
            int startIndex = pageSize * pageIndex;
            int endIndex   = startIndex + pageSize - 1;

            results.ForEach(u =>
            {
                if (counter >= startIndex && counter <= endIndex)
                {
                    users.Add(u.ToMembershipUser());
                    counter++;
                }
            });

            totalRecords = counter - startIndex;
            return(users);
        }
Beispiel #17
0
        public TimesheetsController()
        {
            var connectionString = ConfigurationManager.AppSettings["MONGOHQ_URL"];

            _mongoDb = MongoDatabase.Create(connectionString);

            _repository = _mongoDb.GetCollection <Timesheet>(typeof(Timesheet).Name);
        }
Beispiel #18
0
 public MongoRepositoryService(bool safe = false)
 {
     db = MongoDatabase.Create(WebConfigurationManager.ConnectionStrings["MongoDB"].ConnectionString);
     if (safe)
     {
         safeMode = SafeMode.True;
     }
 }
Beispiel #19
0
        public IStoreSagaData CreatePersister()
        {
            db = MongoDatabase.Create(ConnectionStrings.MongoDb);

            db.Drop();

            return(new MongoDbSagaPersister(ConnectionStrings.MongoDb)
                   .AllowAutomaticSagaCollectionNames());
        }
Beispiel #20
0
        public void SetUp()
        {
            TimeMachine.Reset();

            db = MongoDatabase.Create(ConnectionStrings.MongoDb);
            db.Drop();

            DoSetUp();
        }
Beispiel #21
0
        public override string ResetPassword(string username, string answer)
        {
            if (!EnablePasswordReset)
            {
                throw new ProviderException("Password Reset Not Enabled.");
            }
            else if (answer == null && RequiresQuestionAndAnswer)
            {
                UpdateFailureCount(username, "passwordAnswer");
                throw new ProviderException("Password answer required for password reset.");
            }

            string newPassword = Membership.GeneratePassword(NewPasswordLength, MinRequiredNonAlphanumericCharacters);

            ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, newPassword, true);

            OnValidatingPassword(args);
            if (args.Cancel)
            {
                if (args.FailureInformation != null)
                {
                    throw args.FailureInformation;
                }
                else
                {
                    throw new MembershipPasswordException("Reset password canceled due to password validation failure.");
                }
            }

            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                var users = db.GetCollection <MongoUser>(typeof(MongoUser).Name);
                var user  = users.AsQueryable().SingleOrDefault(u => u.UserName == username);

                if (string.IsNullOrWhiteSpace(user.UserName))
                {
                    throw new MembershipPasswordException("The supplied user name is not found.");
                }
                else if (user.IsLockedOut)
                {
                    throw new MembershipPasswordException("The supplied user is locked out.");
                }
                else if (RequiresQuestionAndAnswer && !CheckPassword(answer, user.PasswordAnswer))
                {
                    UpdateFailureCount(username, "passwordAnswer");
                    throw new MembershipPasswordException("Incorrect password answer.");
                }

                user.Password = EncodePassword(newPassword);
                user.LastPasswordChangedDate = DateTime.Now;
                users.Save(user);
            }

            return(newPassword);
        }
Beispiel #22
0
        private void DropCollection(string name)
        {
            var connectionString = ConfigurationManager.ConnectionStrings["mongo-queue"].ConnectionString;
            var db = MongoDatabase.Create(connectionString);

            if (db.CollectionExists(name))
            {
                db.DropCollection(name);
            }
        }
Beispiel #23
0
        public MongoDBStorage()
        {
            string connectionString = ConfigurationManager.ConnectionStrings["MongoDBStorage"].ConnectionString;
            var    database         = MongoDatabase.Create(connectionString);

            Revisions = database.GetCollection <RevisionModel>("revisions");
            Users     = database.GetCollection <UserModel>("users");

            CreateAdmin();
        }
Beispiel #24
0
        public override void Initialize(string name, NameValueCollection config)
        {
            this.mongoCollection = MongoDatabase.Create(ConnectionHelper.GetDatabaseConnectionString(config)).GetCollection(config["collection"] ?? "WebEvents");

            config.Remove("collection");
            config.Remove("connectionString");
            config.Remove("database");

            base.Initialize(name, config);
        }
Beispiel #25
0
        public override string[] GetAllRoles()
        {
            string[] retval = new string[0];
            var      db     = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                retval = db.GetCollection <MongoRole>(typeof(MongoRole).Name).AsQueryable().Select(r => r.Name).ToArray();
            }
            return(retval);
        }
Beispiel #26
0
        public override bool RoleExists(string roleName)
        {
            bool retval = false;
            var  db     = MongoDatabase.Create(ConnectionString);

            using (db.RequestStart())
            {
                retval = db.GetCollection <MongoRole>(typeof(MongoRole).Name).AsQueryable().Count(r => r.Name == roleName) > 0;
            }
            return(retval);
        }
Beispiel #27
0
        public override string GetUserNameByEmail(string email)
        {
            string retval = null;
            var    db     = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                var user = db.GetCollection <MongoUser>(typeof(MongoUser).Name).AsQueryable().SingleOrDefault(u => u.Email == email);
                retval = user != null ? user.UserName : null;
            }
            return(retval);
        }
Beispiel #28
0
        public override void Initialize(string name, NameValueCollection config)
        {
            this.mongoCollection = MongoDatabase.Create(
                ConfigurationManager.ConnectionStrings[config["connectionStringName"] ?? "MongoConnection"].ConnectionString ?? "mongodb://localhost")
                                   .GetCollection(config["collection"] ?? "WebEvents");

            config.Remove("collection");
            config.Remove("connectionStringName");

            base.Initialize(name, config);
        }
Beispiel #29
0
        public override bool UnlockUser(string username)
        {
            var db = MongoDatabase.Create(ConnectionString); using (db.RequestStart())

            {
                var users = db.GetCollection <MongoUser>(typeof(MongoUser).Name);
                var user  = users.AsQueryable().SingleOrDefault(u => u.UserName == username);
                user.IsLockedOut = false;
                users.Save(user);
            }
            return(true);
        }
Beispiel #30
0
        public MongoDBEventStore(string connectionString = DEFAULT_DATABASE_URI, IEventTypeResolver typeResolver = null, IEventConverter converter = null)
        {
            _database = MongoDatabase.Create(connectionString);
            _commits  = _database.GetCollection <MongoCommit>("Commits");
            _events   = _database.GetCollection <BsonDocument>("SourcedEvents");

            _converter  = converter ?? new NullEventConverter();
            _formatter  = new JsonEventFormatter(typeResolver ?? new SimpleEventTypeResolver());
            _translator = new StringEventTranslator();

            EnsureIndexes();
        }