Backend for the Teso project written in 2022
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.6 KiB

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<ActionResult> 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();
}
}
}
}