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