Increment View count
misc fixes
This commit is contained in:
@@ -23,4 +23,9 @@ public class AobaService(IMongoDatabase db)
|
||||
{
|
||||
return _media.UpdateOneAsync(m => m.Id == id, Builders<Media>.Update.Inc(m => m.ViewCount, 1));
|
||||
}
|
||||
|
||||
public Task IncrementFileViewCountAsync(ObjectId fileId)
|
||||
{
|
||||
return _media.UpdateOneAsync(m => m.MediaId == fileId, Builders<Media>.Update.Inc(m => m.ViewCount, 1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +1,28 @@
|
||||
using Microsoft.AspNetCore.Authentication;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using System.Text.Encodings.Web;
|
||||
|
||||
namespace AobaServer;
|
||||
|
||||
internal class AobaAuthenticationHandler : AuthenticationHandler<AuthenticationSchemeOptions>
|
||||
internal class AobaAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder) : AuthenticationHandler<AuthenticationSchemeOptions>(options, logger, encoder)
|
||||
{
|
||||
public AobaAuthenticationHandler(IOptionsMonitor<AuthenticationSchemeOptions> options, ILoggerFactory logger, UrlEncoder encoder) : base(options, logger, encoder)
|
||||
{
|
||||
}
|
||||
|
||||
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
protected override Task HandleChallengeAsync(AuthenticationProperties properties)
|
||||
{
|
||||
//Don't challenge API requests
|
||||
if (OriginalPath.StartsWithSegments("/api"))
|
||||
{
|
||||
Response.StatusCode = StatusCodes.Status401Unauthorized;
|
||||
Response.BodyWriter.Complete();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
//Redirect to login page
|
||||
Response.Redirect($"/auth/login?ReturnUrl={Uri.EscapeDataString(OriginalPath)}");
|
||||
Response.StatusCode = StatusCodes.Status401Unauthorized;
|
||||
Response.BodyWriter.Complete();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
protected override Task HandleForbiddenAsync(AuthenticationProperties properties)
|
||||
{
|
||||
//Don't show error page for api requests
|
||||
if (OriginalPath.StartsWithSegments("/api"))
|
||||
{
|
||||
Response.StatusCode = StatusCodes.Status403Forbidden;
|
||||
Response.BodyWriter.Complete();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
//Show Error page
|
||||
Response.Redirect($"/error/{StatusCodes.Status403Forbidden}");
|
||||
Response.StatusCode = StatusCodes.Status403Forbidden;
|
||||
Response.BodyWriter.Complete();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,13 @@ namespace AobaServer.Controllers.Api;
|
||||
public class AuthApi : ControllerBase
|
||||
{
|
||||
[HttpGet("login")]
|
||||
public async Task<IActionResult> LoginAsync()
|
||||
public Task<IActionResult> LoginAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
[HttpGet("register")]
|
||||
public async Task<IActionResult> RegisterAsync()
|
||||
public Task<IActionResult> RegisterAsync()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using MongoDB.Driver;
|
||||
namespace AobaServer.Controllers;
|
||||
|
||||
[Route("/m")]
|
||||
public class MediaController(MediaService mediaService, ILogger<MediaController> logger) : Controller
|
||||
public class MediaController(MediaService mediaService, AobaService aobaService, ILogger<MediaController> logger) : Controller
|
||||
{
|
||||
[HttpGet("{id}")]
|
||||
[ResponseCache(Duration = int.MaxValue)]
|
||||
@@ -23,6 +23,7 @@ public class MediaController(MediaService mediaService, ILogger<MediaController>
|
||||
return NotFound();
|
||||
}
|
||||
var mime = MimeTypesMap.GetMimeType(file.Value.FileInfo.Filename);
|
||||
_ = aobaService.IncrementFileViewCountAsync(id);
|
||||
return File(file, mime, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,9 +42,7 @@ builder.Services.AddAuthentication(options =>
|
||||
OnMessageReceived = ctx => //Retreive token from cookie if not found in headers
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ctx.Token))
|
||||
ctx.Token = ctx.Request.Cookies["token"];
|
||||
if (string.IsNullOrWhiteSpace(ctx.Token))
|
||||
ctx.Token = ctx.Request.Headers["Authorization"].FirstOrDefault()?.Replace("Bearer ", "");
|
||||
ctx.Token = ctx.Request.Headers.Authorization.FirstOrDefault()?.Replace("Bearer ", "");
|
||||
return Task.CompletedTask;
|
||||
},
|
||||
OnAuthenticationFailed = ctx =>
|
||||
@@ -59,7 +57,7 @@ builder.Services.AddAuthentication(options =>
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
};
|
||||
}).AddScheme<AuthenticationSchemeOptions, AobaAuthenticationHandler>("Aoba", cfg => { });
|
||||
}).AddScheme<AuthenticationSchemeOptions, AobaAuthenticationHandler>("Aoba", null);
|
||||
|
||||
builder.Services.AddAoba();
|
||||
builder.Services.Configure<FormOptions>(opt =>
|
||||
|
||||
Reference in New Issue
Block a user