mirror of
https://github.com/Kareadita/Kavita.git
synced 2026-06-05 22:35:17 -04:00
28f082b653
Co-authored-by: Ansh Raj <anshraj220109+github@proton.me> Co-authored-by: Amelia <77553571+Fesaa@users.noreply.github.com> Co-authored-by: Weblate (bot) <hosted@weblate.org> Co-authored-by: Adam Havránek <adamhavra@seznam.cz> Co-authored-by: Gregory.Open <gregory.open@proton.me> Co-authored-by: Lyrq <lyrq.ku@gmail.com> Co-authored-by: oxygen44k <iiccpp@outlook.com> Co-authored-by: Grez Kull <grezkull@users.noreply.hosted.weblate.org>
73 lines
2.5 KiB
C#
73 lines
2.5 KiB
C#
using System.Threading.Tasks;
|
|
using Kavita.API.Database;
|
|
using Kavita.Common.Helpers;
|
|
using Kavita.Models.Constants;
|
|
using Kavita.Models.DTOs.KavitaPlus;
|
|
using Kavita.Server.Attributes;
|
|
using Kavita.Server.Extensions;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Kavita.Server.Controllers;
|
|
|
|
[KPlus]
|
|
[Route("api/kavita-plus-audit")]
|
|
public class KavitaPlusAuditController(IUnitOfWork unitOfWork) : BaseApiController
|
|
{
|
|
/// <summary>
|
|
/// Returns a paged, filtered list of all Kavita+ audit events. Admin only.
|
|
/// </summary>
|
|
[HttpPost("entries")]
|
|
[Authorize(Policy = PolicyGroups.AdminPolicy)]
|
|
public async Task<ActionResult<PagedList<KavitaPlusAuditEntryDto>>> GetEntries(
|
|
KavitaPlusAuditFilterDto filter, [FromQuery] UserParams? userParams)
|
|
{
|
|
userParams ??= UserParams.Default;
|
|
|
|
var res = await unitOfWork.KavitaPlusAuditRepository.GetPagedAsync(filter, userParams);
|
|
Response.AddPaginationHeader(res);
|
|
|
|
return Ok(res);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns Kavita+ audit info scoped to a single series, for the popover.
|
|
/// Scrobble events are filtered to the calling user unless they are an admin.
|
|
/// </summary>
|
|
[HttpGet("entries/series/{seriesId:int}")]
|
|
[SeriesAccess]
|
|
public async Task<ActionResult<KavitaPlusAuditSeriesInfoDto>> GetSeriesInfo(int seriesId)
|
|
{
|
|
var isAdmin = User.IsInRole(PolicyConstants.AdminRole);
|
|
var result = await unitOfWork.KavitaPlusAuditRepository
|
|
.GetSeriesInfoAsync(seriesId, UserId, isAdmin);
|
|
return Ok(result);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns aggregate stats for the admin audit feed header strip.
|
|
/// </summary>
|
|
[HttpGet("stats")]
|
|
[Authorize(Policy = PolicyGroups.AdminPolicy)]
|
|
public async Task<ActionResult<KavitaPlusAuditStatsDto>> GetStats()
|
|
{
|
|
return Ok(await unitOfWork.KavitaPlusAuditRepository.GetStatsAsync());
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the calling user's own Kavita+ activity, paged and filtered.
|
|
/// </summary>
|
|
[HttpPost("my-activity")]
|
|
public async Task<ActionResult<PagedList<KavitaPlusAuditEntryDto>>> GetMyActivity(
|
|
KavitaPlusAuditFilterDto filter, [FromQuery] UserParams? userParams)
|
|
{
|
|
userParams ??= UserParams.Default;
|
|
|
|
var res = await unitOfWork.KavitaPlusAuditRepository
|
|
.GetMyActivityAsync(UserId, filter, userParams);
|
|
Response.AddPaginationHeader(res);
|
|
|
|
return Ok(res);
|
|
}
|
|
}
|