public async Task <User> Handle(Command 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 token = ""; if (user == null) { user = new AppUser { DisplayName = userInfo.Name, Id = userInfo.Id, Email = userInfo.Email, UserName = "******" + userInfo.Id, RefreshToken = _jwtGenerator.GenerateRefreshToken(), RefreshTokenExpiry = DateTime.UtcNow.AddDays(30) }; //try create local user token = _jwtGenerator.CreateToken(user); var userCreated = await _userActivitiesApp.CreateUser(user.DisplayName, token); if (!userCreated) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { throw new RestException(HttpStatusCode.BadRequest, new { User = "******" }); } } if (token == "") { token = _jwtGenerator.CreateToken(user); } return(new User { Email = user.Email, DisplayName = user.DisplayName, Username = user.UserName, Token = token, RefreshToken = user.RefreshToken }); }
public async Task <User> Handle(Command request, CancellationToken cancellationToken) { if (await _context.Users.AnyAsync(x => x.Email == request.Email)) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email already exists" }); } if (await _context.Users.AnyAsync(x => x.UserName == request.Username)) { throw new RestException(HttpStatusCode.BadRequest, new { Username = "******" }); } var user = new AppUser { DisplayName = request.DisplayName, Email = request.Email, UserName = request.Username, RefreshToken = _jwtGenerator.GenerateRefreshToken(), RefreshTokenExpiry = DateTime.UtcNow.AddDays(30) }; var token = _jwtGenerator.CreateToken(user); //try create local user var userCreated = await _userActivitiesApp.CreateUser(user.DisplayName, token); if (userCreated) { var result = await _userManager.CreateAsync(user, request.Password); if (result.Succeeded) { return(new User { Email = user.Email, DisplayName = user.DisplayName, Username = user.UserName, Token = token, RefreshToken = user.RefreshToken }); } } throw new Exception("Problem creating user"); }