public async Task <(bool, UserModel)> SocialLoginAsync(UserSocialLogin userSocialLogin) { var user = await _context.Users.Where(u => u.Email == userSocialLogin.Email) .SingleOrDefaultAsync(); if (user == null) { return(true, await SocialSignUpAsync(userSocialLogin)); } if (user.Email == userSocialLogin.Email) { return(true, _mapper.Map <UserModel>(user)); } else { return(false, null); } }
private async Task <UserModel> SocialSignUpAsync(UserSocialLogin userSocialLogin) { var user = _mapper.Map <UserSocialLogin, User>(userSocialLogin, cfg => cfg.AfterMap((src, dest) => { dest.RegisteredDate = DateTime.Now; dest.Age = new DateTime((DateTime.UtcNow - Convert.ToDateTime(src.BirthDate)).Ticks).Year; dest.RoleId = (int)RoleType.Student; })); if (user != null) { _context.Users.Add(user); await _context.SaveChangesAsync(); return(_mapper.Map <UserModel>(user)); } return(null); }
public async Task <IActionResult> SocialLogin(UserSocialLogin userSocialLogin) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var(state, user) = await _authService.SocialLoginAsync(userSocialLogin); if (state) { var access_token = new JwtSecurityTokenHandler().WriteToken(await _tokenService.GenerateAccessTokenAsync(user.Id)); var refresh_token = (await _tokenService.GenerateRefreshTokenAsync(user)).Token; return(Ok(new { access_token, refresh_token })); } return(NotFound(new { title = "Couldnt login via exernal provider" })); }