/// <summary> /// Creates and persists a new user. /// </summary> /// <param name="request">The request.</param> /// <returns>The new user.</returns> public User CreateUser(CreateUserRequest request) { lock (_threadLocker) { using (var entityContext = _entityContextFactory.CreateEntityContext()) { if (!_passwordValidator.IsPasswordValid(request.Password)) throw new InvalidUserException(MembershipCreateStatus.InvalidPassword); MembershipCreateStatus createStatus; if (request.AllowDuplicateEmails) createStatus = _statusChecker.CheckCreateStatus(request.UserName); else createStatus = _statusChecker.CheckCreateStatus(request.UserName, request.Email); if (createStatus != MembershipCreateStatus.Success) throw new InvalidUserException(createStatus); var user = new User(request.UserName, request.Email, request.Password) { ApplicationName = Utils.Common.Constants.MembershipProviderApplicationName, IsApproved = request.IsApproved, NamePrefix = request.NamePrefix, FirstName = request.FirstName, MiddleName = request.MiddleName, LastName = request.LastName, NameSuffix = request.NameSuffix, IsVerified = request.IsVerified, IsSocialMediaAccount = request.IsSocialMediaAccount }; int questionId; if (Int32.TryParse(request.PasswordQuestion, out questionId)) { user.SecurityQuestionId = questionId; user.SecurityAnswer = SymmetricUtility.Encrypt(request.PasswordAnswer, _symmetricKeyStore.ReadKey(), _symmetricKeyStore.ReadIV()); } if (request.RoleIds != null && request.RoleIds.Any()) { var roles = entityContext.EntitySet<Role>(); foreach (var roleId in request.RoleIds) { var role = roles.SingleOrDefault(r => r.Id == roleId); if (role != null) user.AddRole(role); } } entityContext.EntitySet<User>().Add(user); entityContext.SaveChanges(); return user; } } }
private User CreateUser(AddStaffProfileRequest request) { var createUserRequest = new CreateUserRequest { UserName = request.UserName, Password = request.Password, Email = request.EmailAddress, NamePrefix = request.NamePrefix, FirstName = request.FirstName, MiddleName = request.MiddleName, LastName = request.LastName, NameSuffix = request.NameSuffix, IsApproved = true, IsVerified = true, RoleIds = FindRoles(request) }; var user = _userFactory.CreateUser(createUserRequest); return user; }