Files
Backend-Api/ProgramManager/src/Application/GozareshgirProgramManager.Application/_Common/Interfaces/IAuthHelper.cs

88 lines
2.7 KiB
C#

using System.Security.Claims;
namespace GozareshgirProgramManager.Application._Common.Interfaces;
/// <summary>
/// رابط کمکی برای کار با JWT و HttpContext
/// این interface فقط متدهای helper دارد و هیچ عملیات دیتابیسی ندارد
/// </summary>
public interface IAuthHelper
{
// ==================== Token Generation ====================
// LoginSession SignIn(long userId, string userName, string fullName, long accountId, List<string> roles);
// /// <summary>
// /// تولید Access Token
// /// </summary>
// string GenerateAccessToken(long userId, string userName, string fullName, long? accountId, List<string> roles);
// /// <summary>
// /// تولید Refresh Token
// /// </summary>
// string GenerateRefreshToken();
// /// <summary>
// /// دریافت تاریخ انقضای Refresh Token
// /// </summary>
// DateTime GetRefreshTokenExpiration();
// ==================== Token Validation ====================
//
// /// <summary>
// /// اعتبارسنجی توکن و استخراج Claims
// /// </summary>
// ClaimsPrincipal? ValidateToken(string token);
// /// <summary>
// /// اعتبارسنجی توکن منقضی شده (بدون چک زمان انقضا)
// /// </summary>
// ClaimsPrincipal? ValidateExpiredToken(string token);
// /// <summary>
// /// استخراج UserId از توکن (حتی اگر منقضی شده باشد)
// /// </summary>
// long? GetUserIdFromToken(string token);
// ==================== HttpContext Helpers ====================
/// <summary>
/// دریافت IP Address کاربر جاری
/// </summary>
string? GetClientIpAddress();
// /// <summary>
// /// دریافت Refresh Token از Cookie
// /// </summary>
// string? GetRefreshTokenFromCookie();
// ==================== Current User Claims ====================
/// <summary>
/// بررسی احراز هویت کاربر جاری
/// </summary>
bool IsAuthenticated();
/// <summary>
/// دریافت شناسه کاربر جاری از Claims
/// </summary>
long? GetCurrentUserId();
/// <summary>
/// دریافت نام کامل کاربر جاری از Claims
/// </summary>
string? GetCurrentFullName();
bool HasPermission(int permission);
List<int> GetPermissions();
}
public class LoginSession
{
public string AccessToken { get; set; }
public string RefreshToken { get; set; }
public DateTime RefreshTokenExpiration { get; set; }
public DateTime AccessTokenExpiration { get; set; }
}