using HanyadikHetVan.Data.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using System;
using System.Net.Mime;
using System.Security.Claims;

namespace HanyadikHetVan.Controllers.V1
{
    [ApiVersion("1.0")]
    [Route("api/v{version:apiVersion}/[controller]")]
    [ApiController]
    public class TestController : Controller
    {
        private UserManager<User> _userManager;

        public TestController(UserManager<User> userManager)
        {
            _userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
        }

        [HttpGet("unprotected")]
        [Produces(MediaTypeNames.Application.Json)]
        public string Unprotected()
        {

            return "Unprotected";
        }

        [Authorize]
        [HttpGet("protected")]
        [Produces(MediaTypeNames.Application.Json)]
        public string Protected()
        {
            return this.User.FindFirst("user_role").Value;
        }

        [Authorize(Policy = "AdminPolicy", AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
        [HttpGet("roleprotected")]
        [Produces(MediaTypeNames.Application.Json)]
        public string RoleProtected()
        {
            return this.User.FindFirst(ClaimTypes.NameIdentifier).Value;
        }
    }
}
