Yeditepe.Auth.Abstractions
1.0.0
dotnet add package Yeditepe.Auth.Abstractions --version 1.0.0
NuGet\Install-Package Yeditepe.Auth.Abstractions -Version 1.0.0
<PackageReference Include="Yeditepe.Auth.Abstractions" Version="1.0.0" />
<PackageVersion Include="Yeditepe.Auth.Abstractions" Version="1.0.0" />
<PackageReference Include="Yeditepe.Auth.Abstractions" />
paket add Yeditepe.Auth.Abstractions --version 1.0.0
#r "nuget: Yeditepe.Auth.Abstractions, 1.0.0"
#:package Yeditepe.Auth.Abstractions@1.0.0
#addin nuget:?package=Yeditepe.Auth.Abstractions&version=1.0.0
#tool nuget:?package=Yeditepe.Auth.Abstractions&version=1.0.0
Yeditepe.Auth.Abstractions
Yeditepe.Auth kütüphanesi için interface ve DTO tanımları. Bu paket, tam implementasyona ihtiyaç duymadan authentication servislerine bağımlılık almak isteyen projeler için tasarlanmıştır.
Kurulum
dotnet add package Yeditepe.Auth.Abstractions
Ne Zaman Kullanılır?
Bu paketi aşağıdaki durumlarda kullanın:
- Domain Layer: Sadece interface'lere ihtiyaç duyduğunuzda
- Application Layer: Service interface'lerini inject etmek istediğinizde
- Test Projeleri: Mock'lamak için interface'lere ihtiyaç duyduğunuzda
- Shared Libraries: Authentication bağımlılığı olmadan DTO'ları paylaşmak istediğinizde
Tam implementasyon için Yeditepe.Auth paketini kullanın.
İçerik
Interfaces
ICurrentUserService
Mevcut kullanıcı bilgilerine erişim sağlar.
public interface ICurrentUserService
{
Guid? UserId { get; }
string? Email { get; }
Guid? TenantId { get; }
Guid? ApplicationId { get; }
string? DeviceId { get; }
IReadOnlyList<string> Roles { get; }
IReadOnlyList<string> Permissions { get; }
bool IsAuthenticated { get; }
bool IsInRole(string role);
bool HasPermission(string permission);
bool HasAnyPermission(params string[] permissions);
bool HasAllPermissions(params string[] permissions);
}
ITokenService
JWT token işlemleri için servis.
public interface ITokenService
{
string GenerateAccessToken(
Guid userId,
string email,
Guid tenantId,
string deviceId,
UserAuthorizationResult authorization,
UserInfo? userInfo = null);
ClaimsPrincipal? ValidateToken(string token);
ClaimsPrincipal? DecodeToken(string token);
Guid? GetUserId(ClaimsPrincipal principal);
Guid? GetTenantId(ClaimsPrincipal principal);
Guid? GetApplicationId(ClaimsPrincipal principal);
string? GetDeviceId(ClaimsPrincipal principal);
}
IIdentityClient
Identity Platform ile iletişim için HTTP client.
public interface IIdentityClient
{
Task<IdentityLoginResult> LoginAsync(
string email,
string password,
Guid tenantId,
string deviceId,
string? deviceFingerprint = null,
bool trustDevice = false,
string? userAgent = null,
CancellationToken cancellationToken = default);
Task<IdentityRefreshResult> RefreshAsync(
string refreshToken,
string deviceId,
CancellationToken cancellationToken = default);
Task<bool> UserExistsAsync(
string email,
CancellationToken cancellationToken = default);
Task LogoutAsync(
string refreshToken,
string deviceId,
CancellationToken cancellationToken = default);
Task LogoutAllAsync(
Guid userId,
CancellationToken cancellationToken = default);
}
ICorpPanelClient
CorpPanel ile iletişim için HTTP client.
public interface ICorpPanelClient
{
Task<UserTenantsResult> GetUserTenantsAsync(
Guid identityUserId,
CancellationToken cancellationToken = default);
Task<UserAuthorizationResult?> GetUserAuthorizationAsync(
Guid identityUserId,
Guid tenantId,
Guid applicationId,
CancellationToken cancellationToken = default);
Task UpdateLastAccessedTenantAsync(
Guid identityUserId,
Guid tenantId,
CancellationToken cancellationToken = default);
Task<TenantResult?> GetTenantAsync(
Guid tenantId,
CancellationToken cancellationToken = default);
}
Data Transfer Objects (DTOs)
Identity Platform DTOs
// Login sonucu - base class
public abstract record IdentityLoginResult;
// Başarılı login
public record IdentityLoginSuccessResult : IdentityLoginResult
{
public string AccessToken { get; init; }
public string RefreshToken { get; init; }
public DateTime ExpiresAt { get; init; }
}
// MFA gerekli
public record IdentityMfaRequiredResult : IdentityLoginResult
{
public string SessionToken { get; init; }
public List<string> AvailableChannels { get; init; }
public DateTime ExpiresAt { get; init; }
}
// Refresh sonucu
public record IdentityRefreshResult
{
public string AccessToken { get; init; }
public string RefreshToken { get; init; }
public DateTime ExpiresAt { get; init; }
}
CorpPanel DTOs
// Kullanıcının tenant'ları
public record UserTenantsResult(
bool Success,
Guid? LastAccessedTenantId,
IReadOnlyList<CorpPanelTenantResult> Tenants);
// Tenant bilgisi
public record CorpPanelTenantResult(
Guid TenantId,
string TenantCode,
string TenantName,
string AccessLevel,
bool IsActive,
string? FirstName,
string? LastName,
string? FullName);
// Yetkilendirme sonucu
public record UserAuthorizationResult(
Guid PrincipalId,
Guid TenantPrincipalId,
bool IsActive,
string? FirstName,
string? LastName,
IReadOnlyList<string> Roles,
IReadOnlyList<string> Permissions);
// Tenant sonucu
public record TenantResult(
Guid Id,
string Name,
string Code,
bool IsActive);
User Info
public record UserInfo
{
public Guid UserId { get; init; }
public string Email { get; init; }
public string? FirstName { get; init; }
public string? LastName { get; init; }
public string? FullName { get; init; }
public IReadOnlyList<string> Roles { get; init; }
public IReadOnlyList<string> Permissions { get; init; }
}
Kullanım Örnekleri
Domain Service'de Kullanım
// Domain.csproj - Sadece Abstractions referansı
// <PackageReference Include="Yeditepe.Auth.Abstractions" />
public class OrderDomainService
{
private readonly ICurrentUserService _currentUser;
public OrderDomainService(ICurrentUserService currentUser)
{
_currentUser = currentUser;
}
public bool CanUserAccessOrder(Order order)
{
// Aynı tenant'ta mı?
if (order.TenantId != _currentUser.TenantId)
return false;
// Admin her şeye erişebilir
if (_currentUser.IsInRole("Admin"))
return true;
// Kendi siparişi mi?
if (order.CreatedByUserId == _currentUser.UserId)
return true;
// İzni var mı?
return _currentUser.HasPermission("orders.view.all");
}
}
Test Projelerinde Mock'lama
using Moq;
public class OrderServiceTests
{
[Fact]
public void CanUserAccessOrder_WhenAdmin_ReturnsTrue()
{
// Arrange
var mockCurrentUser = new Mock<ICurrentUserService>();
mockCurrentUser.Setup(x => x.TenantId).Returns(Guid.NewGuid());
mockCurrentUser.Setup(x => x.IsInRole("Admin")).Returns(true);
var service = new OrderDomainService(mockCurrentUser.Object);
var order = new Order { TenantId = mockCurrentUser.Object.TenantId!.Value };
// Act
var result = service.CanUserAccessOrder(order);
// Assert
Assert.True(result);
}
}
Application Layer'da Kullanım
// Application.csproj - Sadece Abstractions referansı
// <PackageReference Include="Yeditepe.Auth.Abstractions" />
public class CreateOrderCommandHandler
{
private readonly ICurrentUserService _currentUser;
private readonly IOrderRepository _orderRepository;
public CreateOrderCommandHandler(
ICurrentUserService currentUser,
IOrderRepository orderRepository)
{
_currentUser = currentUser;
_orderRepository = orderRepository;
}
public async Task<OrderDto> Handle(CreateOrderCommand command)
{
if (!_currentUser.HasPermission("orders.create"))
{
throw new ForbiddenException("orders.create permission required");
}
var order = new Order
{
TenantId = _currentUser.TenantId!.Value,
CreatedByUserId = _currentUser.UserId!.Value,
// ...
};
await _orderRepository.AddAsync(order);
return order.ToDto();
}
}
Paket Yapısı
Yeditepe.Auth.Abstractions/
├── ICurrentUserService.cs # Mevcut kullanıcı servisi interface'i
├── ITokenService.cs # Token servisi interface'i
├── IIdentityClient.cs # Identity Platform client interface'i
├── ICorpPanelClient.cs # CorpPanel client interface'i
├── IdentityLoginResult.cs # Login sonuç DTO'ları
├── IdentityRefreshResult.cs # Refresh sonuç DTO'su
├── UserTenantsResult.cs # Tenant listesi DTO'su
├── UserAuthorizationResult.cs # Yetkilendirme DTO'su
├── TenantResult.cs # Tenant bilgisi DTO'su
└── UserInfo.cs # Kullanıcı bilgisi DTO'su
Bağımlılıklar
Bu paket sıfır dış bağımlılık ile tasarlanmıştır. Sadece .NET BCL kullanır.
İlişkili Paketler
| Paket | Açıklama |
|---|---|
Yeditepe.Auth |
Tam implementasyon (API projeleri için) |
Yeditepe.Auth.Abstractions |
Sadece interface'ler (bu paket) |
Lisans
MIT License - Yeditepe Software © 2024
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Yeditepe.Auth.Abstractions:
| Package | Downloads |
|---|---|
|
Yeditepe.Auth
Shared authentication library for Yeditepe Pro applications. Provides authentication services for multi-tenant applications integrated with Identity Platform and CorpPanel. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 326 | 12/17/2025 |