public async Task <int> SignUpAsync(string username, string email, string password, string role = "User") { var user = new User(username, email, password); var result = await _userManager.CreateAsync(user, password); if (!result.Succeeded) { throw new IdentityResultException(result.Errors.FirstOrDefault().Description); } await _userManager.AddToRoleAsync(user, role); if (_userManager.Options.SignIn.RequireConfirmedEmail) { await GenerateEmailConfirmationTokenAsync(user); } else { user.EmailConfirmed = true; } await _athleteService.CreateAsync(user.Id); return(user.Id); }
public async Task <JwtDto> LoginWithFacebookAsync(string accessToken) { var validatedTokenResult = await _facebookAuthService.ValidateAccessTokenAsync(accessToken); if (!validatedTokenResult.FacebookTokenValidationData.IsValid) { throw new InvalidFacebookTokenException(); } var userInfo = await _facebookAuthService.GetUserInfoAsync(accessToken); var user = await _userRepository.GetByEmailAsync(userInfo.Email); // if user does not exist create user and sign in // else user exists, just sign in if (user is null) { user = new User(userInfo.Email, userInfo.Email); await _userManager.CreateAsync(user); await _userManager.AddToRoleAsync(user, RoleId.User.ToString()); await _athleteService.CreateAsync(user.Id); } var jwt = _jwtHandler.CreateToken(user.Id, user.UserName, RoleId.User.ToString()); jwt.RefreshToken = await CreateRefreshTokenAsync(user.Id); return(jwt); }
public async Task HandleAsync(CreateAthlete command) { await _athleteService.CreateAsync(command.UserId); }