Добавление треков неаторизованным пользователям. Убран лишний код
This commit is contained in:
@@ -30,25 +30,6 @@ public class PlaylistsController : ControllerBase
|
||||
_yandexService = yandexService;
|
||||
}
|
||||
|
||||
[HttpGet("info/{ownerUid}/{kind}")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> 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<object>.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<object>.Ok(yandexPlaylist));
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public async Task<ActionResult<ApiResponse<List<YandexPlaylistInfo>>>> GetMyPlaylists()
|
||||
{
|
||||
|
||||
@@ -11,6 +11,5 @@ public class AppMappingProfile : Profile
|
||||
CreateMap<SharedPlaylistEntity, SharedPlaylistDto>()
|
||||
.ForMember(dest => dest.Creator, opt => opt.MapFrom(src => src.Creator));
|
||||
CreateMap<ApplicationUser, ApplicationUserDto>();
|
||||
CreateMap<TrackAdditionLogEntity, TrackAdditionLogDto>();
|
||||
}
|
||||
}
|
||||
@@ -121,12 +121,6 @@ public class SharedPlaylistService
|
||||
.TrimEnd('=');
|
||||
}
|
||||
|
||||
public async Task<SharedPlaylistEntity?> GetByYandexIdsAsync(string ownerUid, string kind)
|
||||
{
|
||||
return await _db.SharedPlaylists
|
||||
.FirstOrDefaultAsync(sp => sp.YandexPlaylistOwnerUid == ownerUid && sp.YandexPlaylistKind == kind && !sp.IsDeleted);
|
||||
}
|
||||
|
||||
public async Task<List<SharedPlaylistEntity>> GetAllByUserAsync(Guid userId)
|
||||
{
|
||||
return await _db.SharedPlaylists
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -146,10 +146,18 @@
|
||||
<MudImage Src="@FormatCoverUrl(context.CoverUri, "50x50")" Height="50" Width="50" Class="rounded" />
|
||||
}
|
||||
</MudTd>
|
||||
<MudTd>@context.Title</MudTd>
|
||||
<MudTd>
|
||||
<MudLink Href="@($"https://music.yandex.ru/track/{context.Id}")"
|
||||
Target="_blank"
|
||||
Underline="Underline.Hover"
|
||||
Style="cursor: pointer; display: inline-flex; align-items: center;">
|
||||
@context.Title
|
||||
<MudIcon Icon="@Icons.Material.Filled.OpenInNew" Size="Size.Small" Class="ml-1" />
|
||||
</MudLink>
|
||||
</MudTd>
|
||||
<MudTd>@string.Join(", ", context.Artists)</MudTd>
|
||||
<MudTd>@FormatDuration(context.DurationMs)</MudTd>
|
||||
@if (_isAuthenticated && _canRemove)
|
||||
@if (_canRemove)
|
||||
{
|
||||
<MudTd>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Delete" Color="Color.Error" OnClick="() => RemoveTrack(context)" />
|
||||
@@ -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}\"?",
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
{
|
||||
"ApiBaseUrl": "https://api.playlistshare.frigat.duckdns.org"
|
||||
"ApiBaseUrl": "https://playlistshare.frigat.duckdns.org"
|
||||
}
|
||||
@@ -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!;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace PlaylistShared.Shared.DTO;
|
||||
|
||||
/// <summary>Запрос на добавление или удаление треков.</summary>
|
||||
public class TrackOperationDto
|
||||
{
|
||||
/// <summary>Токен шеринг-плейлиста (для проверки прав).</summary>
|
||||
[JsonPropertyName("sharedPlaylistToken")]
|
||||
public string SharedPlaylistToken { get; set; } = null!;
|
||||
|
||||
/// <summary>Список идентификаторов треков в Яндекс.Музыке.</summary>
|
||||
[JsonPropertyName("trackIds")]
|
||||
public List<string> TrackIds { get; set; } = new();
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace PlaylistShared.Shared.Models;
|
||||
|
||||
/// <summary>DTO лога добавления трека (без навигации).</summary>
|
||||
public class TrackAdditionLogDto
|
||||
{
|
||||
/// <summary>Уникальный идентификатор записи.</summary>
|
||||
[JsonPropertyName("id")]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>Идентификатор шеринг-плейлиста.</summary>
|
||||
[JsonPropertyName("sharedPlaylistId")]
|
||||
public Guid SharedPlaylistId { get; set; }
|
||||
|
||||
/// <summary>Идентификатор трека в Яндекс.Музыке.</summary>
|
||||
[JsonPropertyName("trackId")]
|
||||
public string TrackId { get; set; } = null!;
|
||||
|
||||
/// <summary>Идентификатор пользователя, добавившего трек.</summary>
|
||||
[JsonPropertyName("addedByUserId")]
|
||||
public Guid AddedByUserId { get; set; }
|
||||
|
||||
/// <summary>Дата и время добавления (UTC).</summary>
|
||||
[JsonPropertyName("addedAtUtc")]
|
||||
public DateTime AddedAtUtc { get; set; }
|
||||
}
|
||||
@@ -16,8 +16,6 @@ services:
|
||||
ports:
|
||||
- "7001:80"
|
||||
environment:
|
||||
- ASPNETCORE_ENVIRONMENT=Development
|
||||
- DOTNET_ENVIRONMENT=Development
|
||||
- ASPNETCORE_URLS=http://+:80
|
||||
networks:
|
||||
- playlistshared_network
|
||||
|
||||
Reference in New Issue
Block a user