Добавлен playlist shared

This commit is contained in:
FrigaT
2026-04-11 15:41:24 +03:00
parent 8444fc5f8e
commit ba9d97239e
84 changed files with 61796 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
@page "/settings/{id:guid}"
@attribute [Authorize]
@using System.Security.Claims
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.EntityFrameworkCore
@using PlaylistShared.Data.Entities
@inject AuthenticationStateProvider AuthenticationStateProvider
@inject AppDbContext Db
@inject NavigationManager Navigation
<h3>Настройки плейлиста</h3>
@if (playlist == null)
{
<p>Загрузка...</p>
}
else if (!isOwner)
{
<p>Только владелец может изменять настройки.</p>
}
else
{
<EditForm Model="@playlist.Permissions" OnValidSubmit="@SaveSettings">
<div class="mb-3">
<label>Кто может просматривать</label>
<InputSelect @bind-Value="playlist.Permissions.View" class="form-control">
<option value="@AccessLevel.All">Все</option>
<option value="@AccessLevel.Authorized">Авторизованные</option>
<option value="@AccessLevel.None">Никто</option>
</InputSelect>
</div>
<div class="mb-3">
<label>Кто может добавлять треки</label>
<InputSelect @bind-Value="playlist.Permissions.Add" class="form-control">
<option value="@AccessLevel.All">Все</option>
<option value="@AccessLevel.Authorized">Авторизованные</option>
<option value="@AccessLevel.None">Никто</option>
</InputSelect>
</div>
<div class="mb-3">
<label>Кто может удалять треки</label>
<InputSelect @bind-Value="playlist.Permissions.Delete" class="form-control">
<option value="@DeleteAccessLevel.All">Все</option>
<option value="@DeleteAccessLevel.Authorized">Авторизованные</option>
<option value="@DeleteAccessLevel.AdderOnly">Тот, кто добавил</option>
<option value="@DeleteAccessLevel.OwnerOnly">Только владелец</option>
</InputSelect>
</div>
<button type="submit" class="btn btn-primary">Сохранить</button>
</EditForm>
}
@code {
[Parameter] public Guid id { get; set; }
private SharedPlaylist? playlist;
private bool isOwner;
private string? currentUserId;
protected override async Task OnInitializedAsync()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
currentUserId = authState.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
playlist = await Db.SharedPlaylists
.Include(p => p.Owner)
.FirstOrDefaultAsync(p => p.Id == id);
if (playlist != null)
{
isOwner = currentUserId == playlist.OwnerUserId;
}
}
private async Task SaveSettings()
{
if (playlist != null)
{
Db.SharedPlaylists.Update(playlist);
await Db.SaveChangesAsync();
Navigation.NavigateTo("/myplaylists");
}
}
}