From 5717b1ec0cbe3a5d1e8e2d7318a7d5b21cca6ec0 Mon Sep 17 00:00:00 2001 From: FrigaT Date: Mon, 13 Apr 2026 18:01:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=82=D1=80=D0=B5=D0=BA=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=B0=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=BC=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=D0=BC.=20=D0=A3?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=BD=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PlaylistsController.cs | 19 ------------- .../Mapping/AppMappingProfile.cs | 1 - .../Services/SharedPlaylistService.cs | 6 ----- PlaylistShared.Api/appsettings.json | 8 +++--- .../Pages/SharedPlaylistView.razor | 23 +++++++--------- PlaylistShared.Pwa/wwwroot/appsettings.json | 2 +- .../DTO/ExternalLoginCallbackRequest.cs | 12 --------- .../DTO/TrackOperationDto.cs | 15 ----------- .../Models/TrackAdditionLogDto.cs | 27 ------------------- docker-compose.yml | 2 -- 10 files changed, 15 insertions(+), 100 deletions(-) delete mode 100644 PlaylistShared.Shared/DTO/ExternalLoginCallbackRequest.cs delete mode 100644 PlaylistShared.Shared/DTO/TrackOperationDto.cs delete mode 100644 PlaylistShared.Shared/Models/TrackAdditionLogDto.cs diff --git a/PlaylistShared.Api/Controllers/PlaylistsController.cs b/PlaylistShared.Api/Controllers/PlaylistsController.cs index 883f6b1..81df83c 100644 --- a/PlaylistShared.Api/Controllers/PlaylistsController.cs +++ b/PlaylistShared.Api/Controllers/PlaylistsController.cs @@ -30,25 +30,6 @@ public class PlaylistsController : ControllerBase _yandexService = yandexService; } - [HttpGet("info/{ownerUid}/{kind}")] - public async Task>> GetPlaylistInfo(string ownerUid, string kind) - { - var currentUserId = User.GetUserId(); - // Найти шеринг-плейлист по данным Яндекс - var shared = await _sharedService.GetEntityByTokenAsync(null); // не можем по токену, надо по параметрам - // Для простоты сделаем отдельный метод поиска по kind/ownerUid - var playlistEntity = await _sharedService.GetByYandexIdsAsync(ownerUid, kind); - if (playlistEntity == null) - return NotFound(ApiResponse.Fail(new ErrorResponse { StatusCode = 404, Message = "Плейлист не найден" })); - - if (!await _sharedService.CanViewAsync(playlistEntity, currentUserId)) - return Unauthorized(); - - var creator = await _userManager.FindByIdAsync(playlistEntity.CreatorUserId.ToString()); - var yandexPlaylist = await _yandexService.GetPlaylistAsync(creator, ownerUid, kind); - return Ok(ApiResponse.Ok(yandexPlaylist)); - } - [HttpGet] public async Task>>> GetMyPlaylists() { diff --git a/PlaylistShared.Api/Mapping/AppMappingProfile.cs b/PlaylistShared.Api/Mapping/AppMappingProfile.cs index 7b712c6..b948216 100644 --- a/PlaylistShared.Api/Mapping/AppMappingProfile.cs +++ b/PlaylistShared.Api/Mapping/AppMappingProfile.cs @@ -11,6 +11,5 @@ public class AppMappingProfile : Profile CreateMap() .ForMember(dest => dest.Creator, opt => opt.MapFrom(src => src.Creator)); CreateMap(); - CreateMap(); } } \ No newline at end of file diff --git a/PlaylistShared.Api/Services/SharedPlaylistService.cs b/PlaylistShared.Api/Services/SharedPlaylistService.cs index 64663bd..ae48aaf 100644 --- a/PlaylistShared.Api/Services/SharedPlaylistService.cs +++ b/PlaylistShared.Api/Services/SharedPlaylistService.cs @@ -121,12 +121,6 @@ public class SharedPlaylistService .TrimEnd('='); } - public async Task GetByYandexIdsAsync(string ownerUid, string kind) - { - return await _db.SharedPlaylists - .FirstOrDefaultAsync(sp => sp.YandexPlaylistOwnerUid == ownerUid && sp.YandexPlaylistKind == kind && !sp.IsDeleted); - } - public async Task> GetAllByUserAsync(Guid userId) { return await _db.SharedPlaylists diff --git a/PlaylistShared.Api/appsettings.json b/PlaylistShared.Api/appsettings.json index 8649f55..e768460 100644 --- a/PlaylistShared.Api/appsettings.json +++ b/PlaylistShared.Api/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=FRIGAT-PC;Database=PlaylistShared;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true" + "DefaultConnection": "Server=host.docker.internal;Database=PlaylistShared;User Id=playlist_user;Password=playlist_user123!;TrustServerCertificate=True;MultipleActiveResultSets=true" }, "Jwt": { "Key": "your-32-character-secret-key-for-jwt-minimum-length", @@ -8,11 +8,11 @@ "Audience": "PlaylistShared.Client" }, "Yandex": { - "ClientId": "your-yandex-oauth-client-id", - "ClientSecret": "your-yandex-oauth-client-secret" + "ClientId": "0916685f8a3641ca8fc382dbccf77236", + "ClientSecret": "f7398893cd814f8b84b85aeb2a0a6698" }, "Client": { - "BaseUrl": "https://localhost:5002" + "BaseUrl": "https://playlistshare.frigat.duckdns.org" }, "Logging": { "LogLevel": { diff --git a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor index 3a37a13..7881f6f 100644 --- a/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor +++ b/PlaylistShared.Pwa/Pages/SharedPlaylistView.razor @@ -146,10 +146,18 @@ } - @context.Title + + + @context.Title + + + @string.Join(", ", context.Artists) @FormatDuration(context.DurationMs) - @if (_isAuthenticated && _canRemove) + @if (_canRemove) { @@ -274,11 +282,6 @@ private async Task AddTrack() { - if (!_isAuthenticated) - { - Snackbar.Add("Для добавления треков необходимо войти", Severity.Warning); - return; - } if (string.IsNullOrWhiteSpace(_trackLink)) { Snackbar.Add("Введите ссылку на трек", Severity.Warning); @@ -314,12 +317,6 @@ private async Task RemoveTrack(YandexTrackDisplay track) { - if (!_isAuthenticated) - { - Snackbar.Add("Для удаления треков необходимо войти", Severity.Warning); - return; - } - var confirmed = await DialogService.ShowMessageBoxAsync( "Подтверждение удаления", $"Вы уверены, что хотите удалить трек \"{track.Title}\"?", diff --git a/PlaylistShared.Pwa/wwwroot/appsettings.json b/PlaylistShared.Pwa/wwwroot/appsettings.json index 4f18580..a143abe 100644 --- a/PlaylistShared.Pwa/wwwroot/appsettings.json +++ b/PlaylistShared.Pwa/wwwroot/appsettings.json @@ -1,3 +1,3 @@ { - "ApiBaseUrl": "https://api.playlistshare.frigat.duckdns.org" + "ApiBaseUrl": "https://playlistshare.frigat.duckdns.org" } \ No newline at end of file diff --git a/PlaylistShared.Shared/DTO/ExternalLoginCallbackRequest.cs b/PlaylistShared.Shared/DTO/ExternalLoginCallbackRequest.cs deleted file mode 100644 index a1587ad..0000000 --- a/PlaylistShared.Shared/DTO/ExternalLoginCallbackRequest.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Text.Json.Serialization; - -namespace PlaylistShared.Shared.DTO; - -public class ExternalLoginCallbackRequest -{ - [JsonPropertyName("code")] - public string Code { get; set; } = null!; - - [JsonPropertyName("state")] - public string State { get; set; } = null!; -} diff --git a/PlaylistShared.Shared/DTO/TrackOperationDto.cs b/PlaylistShared.Shared/DTO/TrackOperationDto.cs deleted file mode 100644 index 5bee3c6..0000000 --- a/PlaylistShared.Shared/DTO/TrackOperationDto.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Text.Json.Serialization; - -namespace PlaylistShared.Shared.DTO; - -/// Запрос на добавление или удаление треков. -public class TrackOperationDto -{ - /// Токен шеринг-плейлиста (для проверки прав). - [JsonPropertyName("sharedPlaylistToken")] - public string SharedPlaylistToken { get; set; } = null!; - - /// Список идентификаторов треков в Яндекс.Музыке. - [JsonPropertyName("trackIds")] - public List TrackIds { get; set; } = new(); -} \ No newline at end of file diff --git a/PlaylistShared.Shared/Models/TrackAdditionLogDto.cs b/PlaylistShared.Shared/Models/TrackAdditionLogDto.cs deleted file mode 100644 index 98b366c..0000000 --- a/PlaylistShared.Shared/Models/TrackAdditionLogDto.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Text.Json.Serialization; - -namespace PlaylistShared.Shared.Models; - -/// DTO лога добавления трека (без навигации). -public class TrackAdditionLogDto -{ - /// Уникальный идентификатор записи. - [JsonPropertyName("id")] - public Guid Id { get; set; } - - /// Идентификатор шеринг-плейлиста. - [JsonPropertyName("sharedPlaylistId")] - public Guid SharedPlaylistId { get; set; } - - /// Идентификатор трека в Яндекс.Музыке. - [JsonPropertyName("trackId")] - public string TrackId { get; set; } = null!; - - /// Идентификатор пользователя, добавившего трек. - [JsonPropertyName("addedByUserId")] - public Guid AddedByUserId { get; set; } - - /// Дата и время добавления (UTC). - [JsonPropertyName("addedAtUtc")] - public DateTime AddedAtUtc { get; set; } -} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index da476aa..fb59377 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,8 +16,6 @@ services: ports: - "7001:80" environment: - - ASPNETCORE_ENVIRONMENT=Development - - DOTNET_ENVIRONMENT=Development - ASPNETCORE_URLS=http://+:80 networks: - playlistshared_network