public async Task <object> Post([FromBody] FacebookSignInModel loginModel) { if (loginModel != null && loginModel.AccessToken != null) { return(await _facebookSignInService.LogIn(loginModel)); } return(Unauthorized(new { Message = "Token inválido" })); }
public async Task <object> LogIn(FacebookSignInModel signInModel) { var isValidToken = await IsValidAccessToken(signInModel.AccessToken); if (!isValidToken) { return(new { Authenticated = false, Message = "Falha ao autenticar" }); } var userData = await GetUserData(signInModel.AccessToken); var user = await _userManager.FindByEmailAsync(userData.Email); if (user == null) { var appUser = new ApplicationUser { Id = Guid.NewGuid().ToString(), Email = userData.Email, UserName = userData.Email, NomeCompleto = userData.Name, LinkFoto = userData.FacebookPicture.Data.Url.AbsoluteUri, Cpf = signInModel.Cpf, Endereco = signInModel.Endereco, Telefone = signInModel.Telefone, }; var creationResult = await _userManager.CreateAsync(appUser); if (!creationResult.Succeeded) { return(new { Authenticated = false, Message = "Falha ao criar o usuário" }); } var createdUser = await _userManager.FindByEmailAsync(appUser.Email); if (signInModel.Tipo == "PRESTADOR") { Prestador prestador = new Prestador { Biografia = signInModel.Biografia, User = createdUser, Id = Guid.NewGuid() }; await _userManager.AddToRoleAsync(createdUser, Roles.Prestador); _identityDbContext.SaveChanges(); _applicationDbContext.Add <Prestador>(prestador); _applicationDbContext.Add <ServicoPrestado>( new ServicoPrestado() { Servico = _applicationDbContext.Find <Servico>(signInModel.Servico), Prestador = _applicationDbContext.Find <Prestador>(createdUser), Unidade = _applicationDbContext.Find <UnidadeDeCobranca>(signInModel.UnidadeDeCobranca), Preco = signInModel.Preco } ); _applicationDbContext.SaveChanges(); return("Succeeded"); } else if (signInModel.Tipo == "CLIENTE") { Contratante contratante = new Contratante { Id = Guid.NewGuid(), User = createdUser }; await _userManager.AddToRoleAsync(createdUser, Roles.Cliente); _identityDbContext.SaveChanges(); _applicationDbContext.Add <Contratante>(contratante); _applicationDbContext.SaveChanges(); return("Succeeded"); } return(new { Authenticated = true, Message = "Usuário criado com sucesso", AccessToken = _accessManager.GenerateToken(user).AccessToken }); } return(_accessManager.GenerateToken(user)); }