Radicade Public Code

This commit is contained in:
JogmansonReal
2026-10-16 23:33:13 -07:00
commit 55175acdf6
832 changed files with 363261 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using RadicadeServer.Clubs;
using RadicadeServer.DB;
using RadicadeServer.Extensions;
using RadicadeServer.Utils;
namespace RadicadeServer.Admin
{
[Route("admin/clubs")]
[EnableCors("AdminPanel")]
public class AdminClubAPI(RecDBContext db) : Controller
{
private Task<IActionResult?> RejectInvalidKey(string key)
{
return Task.FromResult<IActionResult?>(key.IsAdminKey() ? null : Unauthorized("Invalid secret"));
}
[HttpPost("upload/image")]
public async Task<IActionResult> UploadImage([FromQuery] string key, [FromQuery] long clubId, [FromForm] IFormFile file)
{
var rejection = await RejectInvalidKey(key);
if (rejection != null) return rejection;
var clubs = await ClubStore.LoadAsync(db);
var club = clubs.FirstOrDefault(x => x.clubId == clubId);
if (club == null) return NotFound("Club does not exist.");
if (file == null || file.Length == 0) return BadRequest("No file provided.");
var allowed = new[] { ".png", ".jpg", ".jpeg", ".gif", ".webp", ".bmp" };
var ext = Path.GetExtension(file.FileName).ToLowerInvariant();
if (string.IsNullOrEmpty(ext) || !allowed.Contains(ext))
return BadRequest($"Unsupported image format '{(string.IsNullOrEmpty(ext) ? "no extension" : ext)}'. Use png/jpg/jpeg/gif/webp.");
Directory.CreateDirectory(DBConfig.CDNImages);
var name = Guid.NewGuid().ToString() + ext;
var path = Path.Join(DBConfig.CDNImages, name);
using (var stream = new FileStream(path, FileMode.Create))
{
await file.CopyToAsync(stream);
}
club.imageName = name;
await ClubStore.SaveAsync(db, clubs);
return Ok($"Uploaded {name}!\nURL: {DBConfig.ServerUrl}/images/img/{name}");
}
[HttpGet("set/image")]
public async Task<IActionResult> SetImage([FromQuery] string key, [FromQuery] long clubId, [FromQuery] string imgName)
{
var rejection = await RejectInvalidKey(key);
if (rejection != null) return rejection;
var clubs = await ClubStore.LoadAsync(db);
var club = clubs.FirstOrDefault(x => x.clubId == clubId);
if (club == null) return NotFound("Club does not exist.");
imgName = Path.GetFileName(imgName ?? "").Trim();
if (string.IsNullOrEmpty(imgName)) imgName = ClubStore.DefaultImageName;
club.imageName = imgName;
await ClubStore.SaveAsync(db, clubs);
return Ok($"Set to {imgName}!\nURL: {DBConfig.ServerUrl}/images/img/{imgName}");
}
}
}