public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var userInfo = await m_facebookAccessor.FacebookLogin(request.AccessToken); if (userInfo == null) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } var user = await m_userManager.FindByEmailAsync(userInfo.Email); var refreshToken = m_jwtGenerator.GenerateRefreshtoken(); if (user != null) { user.RefreshTokens.Add(refreshToken); await m_userManager.UpdateAsync(user); } else { user = await this.CreateUser(userInfo, refreshToken); } return(new User(user, m_jwtGenerator, refreshToken.Token)); }
public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var user = await m_userManager.FindByEmailAsync(request.Email); if (user == null) { throw new RestException(HttpStatusCode.Unauthorized); } if (!user.EmailConfirmed) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email is not confirmed " }); } var result = await m_signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (!result.Succeeded) { throw new RestException(HttpStatusCode.Unauthorized); } var refreshToken = m_jwtGenerator.GenerateRefreshtoken(); user.RefreshTokens.Add(refreshToken); await m_userManager.UpdateAsync(user); return(new User(user, m_jwtGenerator, refreshToken.Token)); }
public async Task <User> Handle(Command request, CancellationToken cancellationToken) { var user = await m_userManager.FindByNameAsync(m_userAccesor.GetCurrentUsername()); var oldToken = user.RefreshTokens.SingleOrDefault(t => t.Token == request.RefreshToken); if (oldToken != null && !oldToken.IsActive) { throw new RestException(HttpStatusCode.Unauthorized); } // oldToken.IsActive == true if (oldToken != null) { oldToken.Revoked = DateTime.UtcNow; } var newRefreshToken = m_jwtGenerator.GenerateRefreshtoken(); user.RefreshTokens.Add(newRefreshToken); await m_userManager.UpdateAsync(user); return(new User(user, m_jwtGenerator, newRefreshToken.Token)); }
public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var user = await m_userManager.FindByNameAsync(m_userAccessor.GetCurrentUsername()); var refreshToken = m_jwtGenerator.GenerateRefreshtoken(); user.RefreshTokens.Add(refreshToken); await m_userManager.UpdateAsync(user); return(new User(user, m_jwtGenerator, refreshToken.Token)); }