backend complete
This commit is contained in:
38
AobaServer/Controllers/Api/MediaApi.cs
Normal file
38
AobaServer/Controllers/Api/MediaApi.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using AobaCore;
|
||||
using AobaCore.Models;
|
||||
|
||||
using AobaServer.Utils;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
using MongoDB.Bson;
|
||||
|
||||
namespace AobaServer.Controllers.Api;
|
||||
|
||||
[ApiController, Authorize]
|
||||
[Route("/api/media")]
|
||||
public class MediaApi(AobaService aoba) : ControllerBase
|
||||
{
|
||||
[HttpPost("upload")]
|
||||
public async Task<IActionResult> UploadAsync([FromForm] IFormFile file, CancellationToken cancellationToken)
|
||||
{
|
||||
var media = await aoba.UploadFileAsync(file.OpenReadStream(), file.FileName, User.GetId(), cancellationToken);
|
||||
|
||||
if (media.HasError)
|
||||
return Problem(detail: media.Error.Message, statusCode: StatusCodes.Status400BadRequest);
|
||||
|
||||
return Ok(new
|
||||
{
|
||||
media.Value,
|
||||
url = media.Value.GetMediaUrl()
|
||||
});
|
||||
}
|
||||
|
||||
[HttpDelete("{id}")]
|
||||
public async Task<IActionResult> Delete(ObjectId id, CancellationToken cancellationToken)
|
||||
{
|
||||
await aoba.DeleteFileAsync(id, cancellationToken);
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
@@ -1,23 +1,37 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using AobaCore;
|
||||
|
||||
using AobaServer.Models;
|
||||
using AobaServer.Utils;
|
||||
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
using System.Net;
|
||||
|
||||
namespace AobaServer.Controllers;
|
||||
|
||||
|
||||
|
||||
//allow login via http during debug testing
|
||||
#if DEBUG
|
||||
[AllowAnonymous]
|
||||
[Route("auth")]
|
||||
public class AuthController : Controller
|
||||
public class AuthController(AccountsService accountsService, AuthInfo authInfo) : Controller
|
||||
{
|
||||
[HttpGet("login")]
|
||||
public IActionResult Login([FromQuery] string returnUrl)
|
||||
[HttpPost("login")]
|
||||
public async Task<IActionResult> Login([FromForm] string username, [FromForm] string password, CancellationToken cancellationToken)
|
||||
{
|
||||
ViewData["returnUrl"] = returnUrl;
|
||||
return View();
|
||||
}
|
||||
var user = await accountsService.VerifyLoginAsync(username, password, cancellationToken);
|
||||
|
||||
[HttpGet("register/{token}")]
|
||||
public IActionResult Register(string token)
|
||||
{
|
||||
|
||||
return View(token);
|
||||
if (user == null)
|
||||
return Problem("Invalid login Credentials", statusCode: StatusCodes.Status400BadRequest);
|
||||
Response.Cookies.Append("token", user.GetToken(authInfo), new CookieOptions
|
||||
{
|
||||
IsEssential = true,
|
||||
SameSite = SameSiteMode.Strict,
|
||||
Secure = true,
|
||||
});
|
||||
return Ok();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user