Add Telegram bot integration and enhance user management features

- Introduced Telegram.Bot package for bot functionality.
- Updated user management to include Telegram linking and blocking features.
- Enhanced activation request handling with notifications via Telegram.
- Added new database entities for Telegram link tokens and login requests.
- Implemented traffic synchronization for client stats in the XuiPanelGateway.
- Updated application structure to support new test projects and improved dependency injection for Telegram services.
This commit is contained in:
Leonid Pershin
2026-07-02 01:01:03 +03:00
parent 1a8d33efa3
commit 7b6fe9ad78
142 changed files with 7570 additions and 22 deletions
@@ -0,0 +1,17 @@
using PnvPanel.Application.Common.Interfaces;
namespace PnvPanel.Application.Tests.TestSupport;
public sealed class FakeCurrentUser : ICurrentUser
{
public Guid? UserId { get; set; }
public string? UserName { get; set; }
public bool IsAuthenticated => UserId is not null;
public static FakeCurrentUser Authenticated(Guid userId, string userName = "testuser")
=> new() { UserId = userId, UserName = userName };
public static FakeCurrentUser Anonymous() => new();
}
@@ -0,0 +1,21 @@
using Microsoft.EntityFrameworkCore;
using PnvPanel.Infrastructure.Persistence;
namespace PnvPanel.Application.Tests.TestSupport;
/// <summary>
/// EF Core InMemory provider, не Sqlite/Npgsql — модель использует Postgres-специфичные типы
/// (uuid[] на Inbound.AllowedRoleIds, jsonb на AuditLog.Metadata), не имеющие реляционных
/// аналогов. InMemory игнорирует HasColumnType и не требует их маппинга.
/// </summary>
public static class InMemoryDbContextFactory
{
public static AppDbContext Create()
{
var options = new DbContextOptionsBuilder<AppDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
return new AppDbContext(options);
}
}