Пример #1
0
        /// <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;
                }
            }
        }
Пример #2
0
 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;
 }