using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

using Monitoring.Common;
using Monitoring.Core.Domain.UserPrimitives;

namespace Monitoring.Controllers;
/// <summary>
/// Базовый контроллер для всех API контроллеров. Предоставляет общие функциональности.
/// </summary>
[ApiController]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class BaseController : ControllerBase
{
	/// <summary>
	/// Возвращает идентификатор пользователя текущего пользователя.
	/// </summary>
	protected UserId UserId => User.GetUserId();

	/// <summary>
	/// Возвращает роль текущего пользователя.
	/// </summary>
	protected string Role => User.GetUserRole();
}
