コード例 #1
0
        /// <summary>
        /// Registers new user to the application
        /// </summary>
        /// <param name="userToRegister">Data of new user</param>
        /// <param name="password">Password of new user</param>
        /// <returns>Result state</returns>
        public async Task <IServiceResult> RegisterAsync(UserToRegisterDto userToRegister)
        {
            try
            {
                userToRegister.Username = userToRegister.Username.ToLower();
                UserEntity user = _userMapper.Map(userToRegister);

                IdentityResult signUpResult = await _signInManager.UserManager.CreateAsync(user, userToRegister.Password);

                if (signUpResult.Succeeded)
                {
                    // assign role to newly registered user
                    await AssignClientRole(user);

                    // send confirmation email
                    await SendConfirmationEmail(user);

                    return(new ServiceResult(ResultType.Correct));
                }

                // user registration failed - no user has been added to database
                return(new ServiceResult(ResultType.Failed, GetErrorsFromResult(signUpResult)));
            }
            catch (Exception e)
            {
                // in case of role assignment or confirmation email sending failure
                // remove new user from database - procedure has not been completed
                UserEntity user = await _signInManager.UserManager.FindByNameAsync(userToRegister.Username);

                if (user != null)
                {
                    await _signInManager.UserManager.DeleteAsync(user);
                }

                return(new ServiceResult(ResultType.Error, new List <string> {
                    e.Message
                }));
            }
        }
コード例 #2
0
 public UserEntity Map(UserToRegisterDto userToRegisterDto) => _mapper.Map <UserEntity>(userToRegisterDto);