using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Net.Http.Headers; using System; using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Threading.Tasks; using Teso_API.Models; namespace Teso_API.AuthControllers { [Route("api/logout")] [ApiController] public class LogOutController : ControllerBase { public IConfiguration _configuration; private readonly TESOContext _context; public LogOutController(TESOContext context, IConfiguration config) { _context = context; _configuration = config; } [HttpGet] public async Task Post() { var accessToken = Request.Headers[HeaderNames.Authorization]; string token = accessToken; try { token = token.Substring(6).Trim(); var handler = new JwtSecurityTokenHandler(); var jwtToken = handler.ReadToken(token) as JwtSecurityToken; string userGUID = jwtToken.Claims.First(claim => claim.Type == "userGUID").Value; UserAuth userAuth = await _context.UserAuths.AsQueryable().Where(uid => uid.UserGUID == userGUID).FirstOrDefaultAsync(); userAuth.DeviceToken = null; _context.Entry(userAuth).State = EntityState.Modified; await _context.SaveChangesAsync(); return Ok(); } catch { return BadRequest(); } } } }