/// <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 })); } }
public UserEntity Map(UserToRegisterDto userToRegisterDto) => _mapper.Map <UserEntity>(userToRegisterDto);