Ejemplo n.º 1
0
        public Boolean CreateAccount(String accountName, String password, String emailAddress, out String errorMessage)
        {
            IEventPublisher eventPublisher = DependencyResolver.Current.GetService<IEventPublisher>();
            NewUserEvent e = new NewUserEvent { Username = accountName, EmailAddress = emailAddress, IPAddress = HttpContext.Current.Request.UserHostAddress };
            eventPublisher.Publish(e);
            // If any of the anti-bot event handlers are running synchronously, we better check!
            if (e.Bot) {
                errorMessage = "User was rejected";
                return false;
            }

            IdentityResult result = this.userManager.Create(new ApplicationUser {
                UserName = accountName,
                Email = emailAddress,
                AccessFailedCount = 0,
                LockoutEnabled = true,
                LastActivityDate = DateTime.UtcNow,
                Approved = true,
                CreationDate = DateTime.UtcNow,
                LastLockoutDate = DateTime.UtcNow,
                LastLoginDate = new DateTime(1970, 1, 1)
            }, password);
            errorMessage = String.Empty;
            if (!result.Succeeded) {
                errorMessage = String.Join(",", result.Errors);
            }
            else {
                ApplicationUser user = this.userManager.FindByName(accountName);

                IConfiguration config = DependencyResolver.Current.GetService<IConfiguration>();
                ForumUser u = new ForumUser(user.Id, user.UserName, user.Email, HttpContext.Current.Request.UserHostAddress);
                u.Timezone = config.DefaultTimezone;
                u.Culture = config.DefaultCulture;
                context.ForumUsers.Add(u);
                context.SaveChanges();

                foreach (Int32 groupId in config.NewUserGroups) {
                    if (groupId > 0) {
                        Group group = this.context.Groups.Find(groupId);
                        this.context.GroupMembers.Add(new GroupMember(group, u));
                    }
                }

                context.SaveChanges();
            }

            return result.Succeeded;
        }