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; }