Добавлено управление сессиями

This commit is contained in:
FrigaT
2026-04-14 01:39:25 +03:00
parent 40ea9166d2
commit fbfc6990e6
22 changed files with 1509 additions and 51 deletions

View File

@@ -23,7 +23,7 @@ public class SharedPlaylistService
public async Task<SharedPlaylistDto> CreateAsync(Guid creatorUserId, SharePlaylistDto dto)
{
var entity = new SharedPlaylistEntity
var entity = new SharedPlaylist
{
Id = Guid.NewGuid(),
CreatorUserId = creatorUserId,
@@ -51,7 +51,7 @@ public class SharedPlaylistService
return entity == null ? null : _mapper.Map<SharedPlaylistDto>(entity);
}
public async Task<SharedPlaylistEntity?> GetEntityByTokenAsync(string token)
public async Task<SharedPlaylist?> GetEntityByTokenAsync(string token)
{
return await _db.SharedPlaylists
.Include(sp => sp.Creator)
@@ -80,21 +80,21 @@ public class SharedPlaylistService
return true;
}
public async Task<bool> CanViewAsync(SharedPlaylistEntity playlist, Guid? currentUserId)
public async Task<bool> CanViewAsync(SharedPlaylist playlist, Guid? currentUserId)
{
if (currentUserId == playlist.CreatorUserId) return true;
return playlist.ViewPermission == ViewPermission.Everyone ||
(playlist.ViewPermission == ViewPermission.AuthorizedOnly && currentUserId.HasValue);
}
public async Task<bool> CanAddTrackAsync(SharedPlaylistEntity playlist, Guid? currentUserId)
public async Task<bool> CanAddTrackAsync(SharedPlaylist playlist, Guid? currentUserId)
{
if (currentUserId == playlist.CreatorUserId) return true;
return playlist.AddPermission == EditPermission.Everyone ||
(playlist.AddPermission == EditPermission.AuthorizedOnly && currentUserId.HasValue);
}
public async Task<bool> CanRemoveTrackAsync(SharedPlaylistEntity playlist, Guid? currentUserId, string trackId)
public async Task<bool> CanRemoveTrackAsync(SharedPlaylist playlist, Guid? currentUserId, string trackId, string sessionId)
{
if (currentUserId == playlist.CreatorUserId) return true;
return playlist.RemovePermission switch
@@ -102,7 +102,9 @@ public class SharedPlaylistService
EditPermission.Everyone => true,
EditPermission.AuthorizedOnly => currentUserId.HasValue,
EditPermission.AddedByUserOnly when currentUserId.HasValue =>
await _trackLogService.IsTrackAddedByUserAsync(playlist.Id, trackId, currentUserId.Value),
await _trackLogService.IsTrackAddedByCurrentUserOrSessionAsync(playlist.Id, trackId, currentUserId, sessionId),
EditPermission.AddedByUserOnly when !currentUserId.HasValue =>
await _trackLogService.IsTrackAddedByCurrentUserOrSessionAsync(playlist.Id, trackId, null, sessionId),
_ => false
};
}
@@ -121,7 +123,7 @@ public class SharedPlaylistService
.TrimEnd('=');
}
public async Task<List<SharedPlaylistEntity>> GetAllByUserAsync(Guid userId)
public async Task<List<SharedPlaylist>> GetAllByUserAsync(Guid userId)
{
return await _db.SharedPlaylists
.Where(sp => sp.CreatorUserId == userId && !sp.IsDeleted)