public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var user = await _userManager.FindByEmailAsync(request.Email); if (null == user) { throw new RestException(HttpStatusCode.Unauthorized); } if (!user.EmailConfirmed) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email not verified" }); } var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (result.Succeeded) { var refreshToken = _jWTGenerator.GenerateRefreshToken(); user.RefreshTokens.Add(refreshToken); await _userManager.UpdateAsync(user); return(new User(user, _jWTGenerator, refreshToken.Token)); } throw new RestException(HttpStatusCode.Unauthorized); }
public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername()); var refreshToken = _jWTGenerator.GenerateRefreshToken(); user.RefreshTokens.Add(refreshToken); await _userManager.UpdateAsync(user); return(new User(user, _jWTGenerator, refreshToken.Token)); }
public async Task <User> Handle(Query request, CancellationToken cancellationToken) { var userInfo = await _facebookAccessor.FacebookLogin(request.AccessToken); if (userInfo == null) { throw new RestException(HttpStatusCode.BadGateway, new { User = "******" }); } var user = await _userManager.FindByEmailAsync(userInfo.Email); var refreshToken = _jWTGenerator.GenerateRefreshToken(); if (user != null) { user.RefreshTokens.Add(refreshToken); await _userManager.UpdateAsync(user); return(new User(user, _jWTGenerator, refreshToken.Token)); } user = new AppUser { DisplayName = userInfo.Name, Email = userInfo.Email, Id = userInfo.Id, UserName = "******" + userInfo.Id, EmailConfirmed = true }; var photo = new Photo { Id = "fb_" + userInfo.Id, Url = userInfo.picture.Data.Url, IsMain = true }; user.Photos.Add(photo); user.RefreshTokens.Add(refreshToken); var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } return(new User(user, _jWTGenerator, refreshToken.Token)); }
public async Task <User> Handle(Command request, CancellationToken cancellationToken) { //hanlder logic var user = await _userManager.FindByNameAsync(_userAccessor.GetCurrentUsername()); var oldToken = user.RefreshTokens.SingleOrDefault(x => x.Token == request.RefreshToken); if (oldToken != null && !oldToken.IsActive) { throw new RestException(HttpStatusCode.Unauthorized); } if (oldToken != null) { oldToken.Revoked = DateTime.UtcNow; } var newRefreshToken = _jWTGenerator.GenerateRefreshToken(); user.RefreshTokens.Add(newRefreshToken); await _userManager.UpdateAsync(user); return(new User(user, _jWTGenerator, newRefreshToken.Token)); }