예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
 public async Task HandleAsync(CreateAthlete command)
 {
     await _athleteService.CreateAsync(command.UserId);
 }