Exemple #1
0
 public void TestConstructor2()
 {
     var h = MongoUser.HashPassword("u", "p");
     var u = new MongoUser("u", h, true);
     Assert.AreEqual("u", u.Username);
     Assert.AreEqual(h, u.PasswordHash);
     Assert.AreEqual(true, u.IsReadOnly);
 }
Exemple #2
0
 public void TestConstructor1()
 {
     var u = new MongoUser("u", new PasswordEvidence("p"), true);
     var ph = MongoUser.HashPassword("u", "p");
     Assert.AreEqual("u", u.Username);
     Assert.AreEqual(ph, u.PasswordHash);
     Assert.AreEqual(true, u.IsReadOnly);
 }
Exemple #3
0
        public static User ToDomainEntity(this MongoUser user, IEnumerable <MongoProject> projects = null)
        {
            var projs = projects?.Select(p => new BasicProject(p.Id.ToDomainIdentity(), p.Name));

            return(new User(
                       user.Id.ToDomainIdentity(),
                       user.Username,
                       user.DisplayName,
                       user.Password,
                       projs));
        }
 public static UseCase ToDomainEntity(this MongoUseCase useCase, MongoUser author, MongoProject project)
 {
     return(new UseCase(
                useCase.Id.ToDomainIdentity(),
                new BasicProject(project.Id.ToDomainIdentity(), project.Name),
                new BasicUser(author.Id.ToDomainIdentity(), author.DisplayName),
                useCase.Title,
                useCase.Note,
                useCase.Steps.Select(x => new UseCase.UseCaseStep {
         Content = x
     })));                                                                    //OrderMarker probably isnt needed
 }
Exemple #5
0
        //这里有个漏洞,对于数据库来说,对于local的验证和对于admin的验证是相同的。
        //如果是加入用户到服务器中,是加入到local还是admin,需要考虑一下。


        /// <summary>
        /// Add A User to Admin database
        /// </summary>
        /// <param name="strUser">Username</param>
        /// <param name="password">Password</param>
        /// <param name="isReadOnly">Is ReadOnly</param>
        public static void AddUserToSvr(String strUser, String password, Boolean isReadOnly)
        {
            MongoServer mongoSvr = SystemManager.GetCurrentServer();
            //必须使用MongoCredentials来添加用户不然的话,Password将使用明文登入到数据库中!
            //这样的话,在使用MongoCredentials登入的时候,会发生密码错误引发的认证失败
            MongoUser newUser = new MongoUser(strUser, password, true);

            if (mongoSvr.GetDatabase(DATABASE_NAME_ADMIN).FindUser(strUser) == null)
            {
                mongoSvr.GetDatabase(DATABASE_NAME_ADMIN).AddUser(newUser);
            }
        }
Exemple #6
0
 protected ObjectId GetAuthUserId()
 {
     if (System.Web.HttpContext.Current.User != null)
     {
         MongoUser user = db.GetItem <MongoUser>(x => x.UserName == System.Web.HttpContext.Current.User.Identity.Name);
         if (user != null)
         {
             return(user._id);
         }
     }
     return(ObjectId.Empty);
 }
        public static void Menu(string e, MongoUser m, NeoUser n)
        {
            Console.WriteLine("Do you want to:\n 1-Find new friend \n " +
                              "2-Write a post\n" +
                              "3-Look over s-bodies post\n" +
                              "4-Go out");
            var x = Console.ReadLine();

            switch (x)
            {
            case "1":
                Console.WriteLine("Write name of searched person ");
                string N = Console.ReadLine();
                Console.WriteLine("Write surname now");
                string S = Console.ReadLine();
                if (n.Relationship == true)
                {
                    Console.WriteLine("There is relationship");
                }
                else
                {
                    Console.WriteLine("There is not relationship");
                }
                Console.WriteLine("The lenght is", n.PathBetweenID(e, S));

                m.ToFollow(N, S, e);
                n.Follow(e, S);
                Menu(e, m, n);

                break;

            case "3":
                Console.WriteLine("Write name of searched person ");
                N = Console.ReadLine();
                Console.WriteLine("Write surname now");
                S = Console.ReadLine();
                m.PostReaction(N, S, e);
                Menu(e, m, n);
                break;

            case "2":
                m.CreatePost(e);
                Menu(e, m, n);
                break;

            case "4":
                Console.WriteLine("Bye:(");
                Thread.Sleep(1000);
                System.Environment.Exit(20);
                break;
            }
        }
        public ActionResult Login(MongoUser user, string returnUrl)
        {
            var isValidUser = ValidateUser(user);


            if (isValidUser)
            {
                FormsAuthentication.SetAuthCookie(user.Email, false);
                return(Redirect(returnUrl ?? "/Home/Index"));
            }

            return(View(user));
        }
Exemple #9
0
            public static void Menu(string e, MongoUser m, NeoUser n, CassandraUser c)
            {
                Console.WriteLine("Do you want to:\n 1 Find new friend \n " +
                                  "2-Write a post\n" +
                                  "3-Look over s-bodies post\n" +
                                  "4-Go out");
                var x = Console.ReadLine();

                switch (x)
                {
                case "1":
                    Console.WriteLine("Write FirstName of searched person ");
                    string FN = Console.ReadLine();
                    Console.WriteLine("Write LastName");
                    string LN = Console.ReadLine();
                    if (n.Relationship == true)
                    {
                        Console.WriteLine("There is relationship");
                    }
                    else
                    {
                        Console.WriteLine("There is not relationship");
                    }
                    Console.WriteLine("The lenght is", n.PathBetweenID(e, LN));
                    m.ToFollow(FN, LN, e);
                    n.Follow(e, LN);
                    Menu(e, m, n, c);

                    break;

                case "2":
                    ISession session;
                    c.NewPost(session);
                    break;

                case "3":
                    Console.WriteLine("Write FirstName of searched person ");
                    N = Console.ReadLine();
                    Console.WriteLine("Write LastName");
                    S = Console.ReadLine();
                    m.PostReaction(N, S, e);
                    Menu(e, m, n);
                    break;

                case "4":
                    Console.WriteLine("Bye:(");
                    Thread.Sleep(1000);
                    System.Environment.Exit(20);
                    break;
                }
            }
 private static User Map(MongoUser user)
 {
     return(new User
     {
         Id = user.Id,
         FirstName = user.FirstName,
         LastName = user.LastName,
         AddedDateTime = user.AddedDateTime,
         ScreenName = user.ScreenName,
         AdditionalInfo = user.AdditionalInfo,
         Photo = user.Photo,
         LastOnline = user.LastOnline
     });
 }
Exemple #11
0
        private async Task LoadSharedKeyAndQrCodeUriAsync(MongoUser user, EnableAuthenticatorViewModel model)
        {
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            model.SharedKey        = FormatKey(unformattedKey);
            model.AuthenticatorUri = GenerateQrCodeUri(user.Email, unformattedKey);
        }
Exemple #12
0
        public void InsertUser(string name, string password)
        {
            if (string.IsNullOrEmpty(name))
            {
                throw new ArgumentException(name);
            }
            if (string.IsNullOrEmpty(password))
            {
                throw new ArgumentException(password);
            }

            var mongoUser = new MongoUser(name, new PasswordEvidence(password), false);

            _database.AddUser(mongoUser);
        }
Exemple #13
0
 private LoginResponse ObterRespostaToken(string encodedToken, MongoUser user, IEnumerable <Claim> claims)
 {
     return(new LoginResponse
     {
         AccessToken = encodedToken,
         ExpiresIn = TimeSpan.FromHours(_appSettings.ExpiracaoHoras).TotalSeconds,
         UsuarioToken = new UserTokenResponse
         {
             Id = user.Id.ToString(),
             Email = user.Email,
             Claims = claims.Select(c => new UserClaimResponse {
                 Type = c.Type, Value = c.Value
             })
         }
     });
 }
Exemple #14
0
        public override bool Execute()
        {
            this.Log.LogMessage(string.Format("Adding user '{0}' into database '{1}'", this.UserName, this.Database));
            try
            {
                MongoUser user = this.GetMongoUser();
                this.Database.AddUser(user);
            }
            catch (Exception ex)
            {
                this.Log.LogErrorFromException(ex);
                return(false);
            }

            this.Log.LogMessage(string.Format("User '{0}' was successfully added", this.UserName));
            return(true);
        }
Exemple #15
0
        public override bool ChangePassword(string username, string oldPwd, string newPwd)
        {
            bool retval = false;

            if (ValidateUser(username, oldPwd))
            {
                ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, newPwd, true);
                OnValidatingPassword(args);

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

                MongoUser user = null;
                var       db   = MongoDatabase.Create(ConnectionString);
                using (db.RequestStart())
                {
                    var users = db.GetCollection <MongoUser>(typeof(MongoUser).Name);
                    user = users.AsQueryable().SingleOrDefault(u => u.UserName == username);
                    if (user == null)
                    {
                        throw new ProviderException("This user does not exist.");
                    }
                    user.Password = EncodePassword(newPwd);
                    user.LastPasswordChangedDate = DateTime.Now;
                    users.Save(user);
                }
                retval = true;
            }
            return(retval);
        }
        public ActionResult Register(WholeUser user, string returnUrl)
        {
            ViewBag.roleID = new SelectList(db.Roles, "id", "name");
            byte[] salt;
            new RNGCryptoServiceProvider().GetBytes(salt = new byte[16]);
            var pbkdf2 = new Rfc2898DeriveBytes(user.password, salt, 1000);

            byte[] hash      = pbkdf2.GetBytes(20);
            byte[] hashBytes = new byte[36];
            Array.Copy(salt, 0, hashBytes, 0, 16);
            Array.Copy(hash, 0, hashBytes, 16, 20);
            string savedPasswordHash = Convert.ToBase64String(hashBytes);

            var mongoUser = new MongoUser()
            {
                Email    = user.email,
                Password = savedPasswordHash
            };

            var client        = new MongoClient("mongodb+srv://alfex971:[email protected]/test?retryWrites=true");
            var mongoDatabase = client.GetDatabase("Accessories");
            var collection    = mongoDatabase.GetCollection <MongoUser>("User");

            collection.InsertOne(mongoUser);

            var sqlUser = new User()
            {
                email  = user.email,
                name   = user.name,
                phone  = user.phone,
                roleID = 1,
            };

            var savedUser = usersDao.InsertUser(sqlUser);

            FormsAuthentication.SetAuthCookie(user.email, false);
            return(Redirect("/Home/Index"));
        }
        protected void EnsureAccessRights()
        {
            var url = new MongoUrl(this.ConnectionString);
            MongoClientSettings settings = MongoClientSettings.FromUrl(url);

            settings.DefaultCredentials = null;

            MongoCredentials adminCredentials = this.GetAdminCredentials();
            var           client        = new MongoClient(settings);
            MongoServer   server        = client.GetServer();
            MongoDatabase adminDatabase = server.GetDatabase(this.MongoAdministratorDatabase);

            MongoUser user = adminDatabase.FindUser(this.MongoAdministratorName);

            if (IsUserAdmin(user))
            {
                return;
            }

            user = new MongoUser(adminCredentials, false);
            adminDatabase.AddUser(user);
            server.Disconnect();
        }
Exemple #18
0
        public void TestEquals()
        {
            var a1    = new MongoUser("u", "h", false);
            var a2    = new MongoUser("u", "h", false);
            var a3    = a2;
            var b     = new MongoUser("x", "h", false);
            var c     = new MongoUser("u", "x", false);
            var d     = new MongoUser("u", "h", true);
            var null1 = (MongoUser)null;
            var null2 = (MongoUser)null;

            Assert.AreNotSame(a1, a2);
            Assert.AreSame(a2, a3);
            Assert.IsTrue(a1.Equals((object)a2));
            Assert.IsFalse(a1.Equals((object)null));
            Assert.IsFalse(a1.Equals((object)"x"));

            Assert.IsTrue(a1 == a2);
            Assert.IsTrue(a2 == a3);
            Assert.IsFalse(a1 == b);
            Assert.IsFalse(a1 == c);
            Assert.IsFalse(a1 == d);
            Assert.IsFalse(a1 == null1);
            Assert.IsFalse(null1 == a1);
            Assert.IsTrue(null1 == null2);

            Assert.IsFalse(a1 != a2);
            Assert.IsFalse(a2 != a3);
            Assert.IsTrue(a1 != b);
            Assert.IsTrue(a1 != c);
            Assert.IsTrue(a1 != d);
            Assert.IsTrue(a1 != null1);
            Assert.IsTrue(null1 != a1);
            Assert.IsFalse(null1 != null2);

            Assert.AreEqual(a1.GetHashCode(), a2.GetHashCode());
        }
        public IActionResult Post([FromForm] RegisterViewModel model)
        {
            var user  = new User(model);
            var group = groupsCollection.Find(g => g.GroupId == user.GroupId).FirstOrDefault();

            if (group.Users.Count() == 0)
            {
                groupsCollection.UpdateOne(g => g.GroupId == user.GroupId, Builders <Group> .Update.Set(e => e.GroupLeaderId, user.Id));
            }
            var update = Builders <Group> .Update.Push(g => g.Users, user.Id);

            var updateRes = groupsCollection.UpdateOne(g => g.GroupId == user.GroupId, update);

            if (updateRes.MatchedCount == 0)
            {
                return(NotFound("Group with this id not found"));
            }
            usersCollection.InsertOne(user);

            if (ModelState.IsValid)
            {
                var userAccount = new MongoUser {
                    UserName = model.Username, Email = model.Email
                };
                var result = _userManager.CreateAsync(userAccount, model.Password).Result;
                if (result.Succeeded)
                {
                    _signInManager.SignInAsync(userAccount, isPersistent: false).Wait();
                    HttpContext.Session.SetString("userId", usersCollection
                                                  .Find(a => a.Username == model.Username)
                                                  .FirstOrDefault()
                                                  .Id
                                                  .ToString());
                }
            }
            return(new ObjectResult(user));
        }
Exemple #20
0
        public void TestEquals()
        {
            var a1 = new MongoUser("u", "h", false);
            var a2 = new MongoUser("u", "h", false);
            var a3 = a2;
            var b = new MongoUser("x", "h", false);
            var c = new MongoUser("u", "x", false);
            var d = new MongoUser("u", "h", true);
            var null1 = (MongoUser)null;
            var null2 = (MongoUser)null;

            Assert.AreNotSame(a1, a2);
            Assert.AreSame(a2, a3);
            Assert.IsTrue(a1.Equals((object)a2));
            Assert.IsFalse(a1.Equals((object)null));
            Assert.IsFalse(a1.Equals((object)"x"));

            Assert.IsTrue(a1 == a2);
            Assert.IsTrue(a2 == a3);
            Assert.IsFalse(a1 == b);
            Assert.IsFalse(a1 == c);
            Assert.IsFalse(a1 == d);
            Assert.IsFalse(a1 == null1);
            Assert.IsFalse(null1 == a1);
            Assert.IsTrue(null1 == null2);

            Assert.IsFalse(a1 != a2);
            Assert.IsFalse(a2 != a3);
            Assert.IsTrue(a1 != b);
            Assert.IsTrue(a1 != c);
            Assert.IsTrue(a1 != d);
            Assert.IsTrue(a1 != null1);
            Assert.IsTrue(null1 != a1);
            Assert.IsFalse(null1 != null2);

            Assert.AreEqual(a1.GetHashCode(), a2.GetHashCode());
        }
        public MongoUser GetUserFromModel(UserCreateUserRegistration model)
        {
            MongoUser user = new MongoUser();

            return(user);
        }
 private static bool IsUserAdmin(MongoUser user)
 {
     return(user != null && !user.IsReadOnly);
 }
        private async Task LoadAsync(MongoUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            Username = userName;
        }
Exemple #24
0
        public async Task <IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (remoteError != null)
            {
                ErrorMessage = $"Error from external provider: {remoteError}";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            // Sign in the user with this external login provider if the user already has a login.
            var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true);

            if (result.Succeeded)
            {
                _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
                return(LocalRedirect(returnUrl));
            }

            if (result.IsLockedOut)
            {
                return(RedirectToPage("./Lockout"));
            }
            else
            {
                // If the user does not have an account, then ask the user to create an account.
                ReturnUrl           = returnUrl;
                ProviderDisplayName = info.ProviderDisplayName;
                if (!info.Principal.HasClaim(c => c.Type == ClaimTypes.Name))
                {
                    ErrorMessage = "Missing username claim";
                    return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
                }

                string userName = info.Principal.FindFirst(ClaimTypes.Name).Value;
                var    user     = new MongoUser {
                    UserName = userName
                };

                var userRes = await _userManager.CreateAsync(user);

                if (userRes.Succeeded)
                {
                    userRes = await _userManager.AddLoginAsync(user, info);

                    if (userRes.Succeeded)
                    {
                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        await _signInManager.SignInAsync(user, isPersistent : false, info.LoginProvider);

                        return(RedirectToPage("./Manage/Index"));
                    }
                }

                foreach (var error in userRes.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }

                ProviderDisplayName = info.ProviderDisplayName;
                ReturnUrl           = returnUrl;
                return(Page());
            }
        }
Exemple #25
0
 public void AddMongoUser(MongoUser mongoUser)
 {
     IMongoCollection<BsonDocument> usersCollection = GetMongoCollection("usersNET");
     usersCollection.InsertOneAsync(mongoUser.ToBsonDocument());
 }
        public void Create(IUser user)
        {
            var mongoUser = MongoUser.FromUser(user);

            collection.InsertOne(mongoUser);
        }
 public void AddUser(MongoUser user)
 {
     _mongoDatabase.AddUser(user);
 }
 public void RemoveUser(MongoUser user)
 {
     _mongoDatabase.RemoveUser(user);
 }
Exemple #29
0
        public override MembershipUser CreateUser(string username,
                                                  string password,
                                                  string email,
                                                  string passwordQuestion,
                                                  string passwordAnswer,
                                                  bool isApproved,
                                                  object providerUserKey,
                                                  out MembershipCreateStatus status)
        {
            MembershipCreateStatus tempStatus = new MembershipCreateStatus();
            MembershipUser         retval     = null;

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

            OnValidatingPassword(args);

            if (args.Cancel)
            {
                tempStatus = MembershipCreateStatus.InvalidPassword;
            }
            else if (RequiresUniqueEmail && !string.IsNullOrWhiteSpace(GetUserNameByEmail(email)))
            {
                tempStatus = MembershipCreateStatus.DuplicateEmail;
            }
            else
            {
                MembershipUser user = GetUser(username, false);

                if (user == null)
                {
                    ObjectId id  = default(ObjectId);
                    string   key = providerUserKey != null?providerUserKey.ToString() : null;

                    if (!string.IsNullOrWhiteSpace(key) && !ObjectId.TryParse(key, out id))
                    {
                        tempStatus = MembershipCreateStatus.InvalidProviderUserKey;
                    }
                    else
                    {
                        var now     = DateTime.Now;
                        var newUser = new MongoUser()
                        {
                            _id                                    = id,
                            UserName                               = username,
                            Password                               = EncodePassword(password),
                            Email                                  = email,
                            PasswordQuestion                       = passwordQuestion,
                            PasswordAnswer                         = passwordAnswer,
                            IsApproved                             = isApproved,
                            CreationDate                           = now,
                            LastPasswordChangedDate                = now,
                            LastActivityDate                       = now,
                            LastLockoutDate                        = now,
                            FailedPasswordAttemptWindowStart       = now,
                            FailedPasswordAnswerAttemptWindowStart = now,
                            Comment                                = string.Empty,
                            ProviderName                           = this.Name
                        };

                        var db = MongoDatabase.Create(ConnectionString);
                        using (db.RequestStart())
                        {
                            db.GetCollection <MongoUser>(typeof(MongoUser).Name).Insert(newUser);
                        }

                        retval     = newUser.ToMembershipUser();
                        tempStatus = MembershipCreateStatus.Success;
                    }
                }
                else
                {
                    tempStatus = MembershipCreateStatus.DuplicateUserName;
                }
            }

            status = tempStatus;
            return(retval);
        }