Beispiel #1
0
        public ActionResult RegisterForForums()
        {
            try
            {
                var r3musForum = new r3musForumDBContext();
                var siteUser   = UserManager.FindById(User.Identity.GetUserId());
                var forumRole  = r3musForum.MembershipRoles.Where(role => role.RoleName == "Standard Members").FirstOrDefault();

                var    forumUser = r3musForum.MembershipUsers.Where(user => (user.UserName == siteUser.UserName) || (user.Email == siteUser.EmailAddress)).FirstOrDefault();
                string useName;

                if (siteUser.UserName.IndexOf(" ") != -1)
                {
                    useName = siteUser.UserName.Substring(0, siteUser.UserName.IndexOf(" "));
                }
                else
                {
                    useName = siteUser.UserName;
                }

                if (forumUser != null)
                {
                    forumUser.PasswordSalt = string.Concat("R3MUS_", useName);
                    forumUser.Password     = GenerateSaltedHash(string.Concat("R3MUSUser_", useName), forumUser.PasswordSalt);
                    r3musForum.SaveChanges();
                    TempData.Add("Message", "Your access to the forums should now be restored. You can now access the forums using the link in Services at the top of the page.");
                }
                else
                {
                    var len = siteUser.Avatar.Length;
                    forumUser = new MembershipUser()
                    {
                        Id                          = new Guid(siteUser.Id),
                        UserName                    = siteUser.UserName,
                        Password                    = string.Concat("R3MUSUser_", useName),
                        Email                       = siteUser.EmailAddress,
                        PasswordSalt                = string.Concat("R3MUS_", useName),
                        Avatar                      = siteUser.Avatar,
                        IsApproved                  = true,
                        IsLockedOut                 = false,
                        CreateDate                  = DateTime.Now,
                        LastLoginDate               = DateTime.Now,
                        LastPasswordChangedDate     = DateTime.Now,
                        LastLockoutDate             = DateTime.Now,
                        FailedPasswordAttemptCount  = 3,
                        FailedPasswordAnswerAttempt = 3,
                        Slug                        = useName,
                        DisableEmailNotifications   = true,
                        IsExternalAccount           = true
                    };
                    forumUser.Password = GenerateSaltedHash(forumUser.Password, forumUser.PasswordSalt);
                    r3musForum.MembershipUsers.Add(forumUser);

                    var roleLink = new MembershipUsersInRole()
                    {
                        Id             = Guid.NewGuid(),
                        UserIdentifier = forumUser.Id,
                        RoleIdentifier = forumRole.Id,
                        MembershipUser = forumUser,
                        MembershipRole = forumRole
                    };

                    r3musForum.MembershipUsersInRoles.Add(roleLink);
                    r3musForum.SaveChanges();

                    TempData.Add("Message", "Registration Complete! You can now access the forums using the link in Services at the top of the page.");
                }
            }
            catch (DbEntityValidationException ex)
            {
                TempData.Add("Message", "An error occurred: Please contact Clyde en Marland with this message; ");
                TempData.Add("ErrorMessage", ex.Message);
            }
            catch (Exception ex)
            {
                TempData.Add("Message", "An error occurred: Please contact Clyde en Marland with this message; ");
                TempData.Add("ErrorMessage", ex.Message);
            }
            return(RedirectToAction("Index"));
        }
        public static void SyncUsers()
        {
            var r3musDB = new r3musDbContext();
            var r3musForum = new r3mus_ForumDBEntities();

            try
            {
                var siteUsers = r3musDB.Users.ToList();
                var forumUsers = r3musForum.MembershipUsers.ToList();

                var forumRole = r3musForum.MembershipRoles.Where(role => role.RoleName == "Standard Members").FirstOrDefault();

                siteUsers.ForEach(siteUser =>
                {
                    var forumUser = forumUsers.Where(user => user.UserName == siteUser.UserName).FirstOrDefault();
                    if (forumUser == null)
                    {
                        forumUser = new MembershipUser()
                        {
                            Id = new Guid(siteUser.Id),
                            UserName = siteUser.UserName,
                            Password = string.Concat("R3MUSUser_", siteUser.UserName.Substring(0, siteUser.UserName.IndexOf(" "))),
                            Email = siteUser.EmailAddress,
                            PasswordSalt = string.Concat("R3MUS_", siteUser.UserName.Substring(0, siteUser.UserName.IndexOf(" "))),
                            IsApproved = true,
                            IsLockedOut = false,
                            CreateDate = DateTime.Now,
                            LastLoginDate = DateTime.Now,
                            LastPasswordChangedDate = DateTime.Now,
                            LastLockoutDate = DateTime.Now,
                            FailedPasswordAttemptCount = 3,
                            FailedPasswordAnswerAttempt = 3,
                            Slug = string.Empty,
                            DisableEmailNotifications = true,
                            IsExternalAccount = true
                        };
                        forumUser.Password = GenerateSaltedHash(forumUser.Password, forumUser.PasswordSalt);
                        r3musForum.MembershipUsers.Add(forumUser);

                        var role = new MembershipUsersInRole()
                        {
                            Id = Guid.NewGuid(),
                            UserIdentifier = forumUser.Id,
                            RoleIdentifier = forumRole.Id,
                            MembershipUser = forumUser,
                            MembershipRole = forumRole
                        };

                        r3musForum.MembershipUsersInRoles.Add(role);
                    }
                }
                    );
                r3musForum.SaveChanges();
            }
            catch (DbEntityValidationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }