88 lines
2.7 KiB
C#
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; }
|
|
}
|