Registering Controller
This commit is contained in:
@@ -1,98 +0,0 @@
|
|||||||
using LightlessSync.API.Routes;
|
|
||||||
using LightlessSyncShared.Data;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
|
|
||||||
namespace LightlessSyncAuthService.Controllers;
|
|
||||||
|
|
||||||
[Route(LightlessAuth.User)]
|
|
||||||
[Authorize(Policy = "Internal")]
|
|
||||||
public class UserController : Controller
|
|
||||||
{
|
|
||||||
protected readonly ILogger Logger;
|
|
||||||
protected readonly IDbContextFactory<LightlessDbContext> LightlessDbContextFactory;
|
|
||||||
public UserController(ILogger<UserController> logger, IDbContextFactory<LightlessDbContext> lightlessDbContext)
|
|
||||||
{
|
|
||||||
Logger = logger;
|
|
||||||
LightlessDbContextFactory = lightlessDbContext;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Route(LightlessAuth.Ban_Uid)]
|
|
||||||
[HttpPost]
|
|
||||||
public async Task MarkForBanUid(string uid)
|
|
||||||
{
|
|
||||||
using var dbContext = await LightlessDbContextFactory.CreateDbContextAsync();
|
|
||||||
|
|
||||||
Logger.LogInformation("Banning user with UID {UID}", uid);
|
|
||||||
|
|
||||||
//Mark User as banned, and not marked for ban
|
|
||||||
var auth = await dbContext.Auth.FirstOrDefaultAsync(f => f.UserUID == uid);
|
|
||||||
if (auth != null)
|
|
||||||
{
|
|
||||||
auth.MarkForBan = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
await dbContext.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Route(LightlessAuth.User_Unban_Uid)]
|
|
||||||
[HttpPost]
|
|
||||||
public async Task UnBanUserByUid(string uid)
|
|
||||||
{
|
|
||||||
using var dbContext = await LightlessDbContextFactory.CreateDbContextAsync();
|
|
||||||
|
|
||||||
Logger.LogInformation("Unbanning user with UID {UID}", uid);
|
|
||||||
|
|
||||||
//Mark User as not banned, and not marked for ban (if marked)
|
|
||||||
var auth = await dbContext.Auth.FirstOrDefaultAsync(f => f.UserUID == uid);
|
|
||||||
if (auth != null)
|
|
||||||
{
|
|
||||||
auth.IsBanned = false;
|
|
||||||
auth.MarkForBan = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove all bans associated with this user
|
|
||||||
var bannedFromLightlessIds = dbContext.BannedUsers.Where(b => b.BannedUid == uid);
|
|
||||||
dbContext.BannedUsers.RemoveRange(bannedFromLightlessIds);
|
|
||||||
|
|
||||||
// Remove all character/discord bans associated with this user
|
|
||||||
var lodestoneAuths = dbContext.LodeStoneAuth.Where(l => l.User != null && l.User.UID == uid).ToList();
|
|
||||||
foreach (var lodestoneAuth in lodestoneAuths)
|
|
||||||
{
|
|
||||||
var bannedRegs = dbContext.BannedRegistrations.Where(b => b.DiscordIdOrLodestoneAuth == lodestoneAuth.HashedLodestoneId || b.DiscordIdOrLodestoneAuth == lodestoneAuth.DiscordId.ToString());
|
|
||||||
dbContext.BannedRegistrations.RemoveRange(bannedRegs);
|
|
||||||
}
|
|
||||||
|
|
||||||
await dbContext.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Route(LightlessAuth.User_Unban_Discord)]
|
|
||||||
[HttpPost]
|
|
||||||
public async Task UnBanUserByDiscordId(string discordId)
|
|
||||||
{
|
|
||||||
Logger.LogInformation("Unbanning user with discordId: {discordId}", discordId);
|
|
||||||
using var dbContext = await LightlessDbContextFactory.CreateDbContextAsync();
|
|
||||||
|
|
||||||
var userByDiscord = await dbContext.LodeStoneAuth.Include(l => l.User).FirstOrDefaultAsync(l => l.DiscordId.ToString() == discordId);
|
|
||||||
|
|
||||||
if (userByDiscord?.User == null)
|
|
||||||
{
|
|
||||||
Logger.LogInformation("Unbanning user with discordId: {discordId} but no user found", discordId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var bannedRegs = dbContext.BannedRegistrations.Where(b => b.DiscordIdOrLodestoneAuth == discordId || b.DiscordIdOrLodestoneAuth == userByDiscord.HashedLodestoneId);
|
|
||||||
//Mark User as not banned, and not marked for ban (if marked)
|
|
||||||
var auth = await dbContext.Auth.FirstOrDefaultAsync(f => f.UserUID == userByDiscord.User.UID);
|
|
||||||
if (auth != null)
|
|
||||||
{
|
|
||||||
auth.IsBanned = false;
|
|
||||||
auth.MarkForBan = false;
|
|
||||||
}
|
|
||||||
// Remove all bans associated with this user
|
|
||||||
var bannedFromLightlessIds = dbContext.BannedUsers.Where(b => b.BannedUid == auth.UserUID || b.BannedUid == auth.PrimaryUserUID);
|
|
||||||
dbContext.BannedUsers.RemoveRange(bannedFromLightlessIds);
|
|
||||||
|
|
||||||
await dbContext.SaveChangesAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,6 @@ using LightlessSyncShared.Metrics;
|
|||||||
using LightlessSyncShared.Services;
|
using LightlessSyncShared.Services;
|
||||||
using LightlessSyncShared.Utils;
|
using LightlessSyncShared.Utils;
|
||||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||||
using StackExchange.Redis.Extensions.Core.Configuration;
|
|
||||||
using StackExchange.Redis.Extensions.System.Text.Json;
|
|
||||||
using StackExchange.Redis;
|
using StackExchange.Redis;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using LightlessSyncAuthService.Services;
|
using LightlessSyncAuthService.Services;
|
||||||
@@ -17,7 +15,6 @@ using LightlessSyncShared.Data;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Prometheus;
|
using Prometheus;
|
||||||
using LightlessSyncShared.Utils.Configuration;
|
using LightlessSyncShared.Utils.Configuration;
|
||||||
using StackExchange.Redis.Extensions.Core.Abstractions;
|
|
||||||
|
|
||||||
namespace LightlessSyncAuthService;
|
namespace LightlessSyncAuthService;
|
||||||
|
|
||||||
@@ -88,7 +85,7 @@ public class Startup
|
|||||||
services.AddControllers().ConfigureApplicationPartManager(a =>
|
services.AddControllers().ConfigureApplicationPartManager(a =>
|
||||||
{
|
{
|
||||||
a.FeatureProviders.Remove(a.FeatureProviders.OfType<ControllerFeatureProvider>().First());
|
a.FeatureProviders.Remove(a.FeatureProviders.OfType<ControllerFeatureProvider>().First());
|
||||||
a.FeatureProviders.Add(new AllowedControllersFeatureProvider(typeof(JwtController), typeof(OAuthController), typeof(UserController)));
|
a.FeatureProviders.Add(new AllowedControllersFeatureProvider(typeof(JwtController), typeof(OAuthController)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,30 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using LightlessSyncServer.Hubs;
|
|
||||||
using Microsoft.AspNetCore.Http.Connections;
|
|
||||||
using Microsoft.AspNetCore.SignalR;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using AspNetCoreRateLimit;
|
using AspNetCoreRateLimit;
|
||||||
|
using LightlessSync.API.SignalR;
|
||||||
|
using LightlessSyncAuthService.Controllers;
|
||||||
|
using LightlessSyncServer.Controllers;
|
||||||
|
using LightlessSyncServer.Hubs;
|
||||||
|
using LightlessSyncServer.Services;
|
||||||
using LightlessSyncShared.Data;
|
using LightlessSyncShared.Data;
|
||||||
using LightlessSyncShared.Metrics;
|
using LightlessSyncShared.Metrics;
|
||||||
using LightlessSyncServer.Services;
|
using LightlessSyncShared.RequirementHandlers;
|
||||||
using LightlessSyncShared.Utils;
|
|
||||||
using LightlessSyncShared.Services;
|
using LightlessSyncShared.Services;
|
||||||
using Prometheus;
|
using LightlessSyncShared.Utils;
|
||||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
using LightlessSyncShared.Utils.Configuration;
|
||||||
using Microsoft.IdentityModel.Tokens;
|
|
||||||
using System.Text;
|
|
||||||
using StackExchange.Redis;
|
|
||||||
using StackExchange.Redis.Extensions.Core.Configuration;
|
|
||||||
using System.Net;
|
|
||||||
using StackExchange.Redis.Extensions.System.Text.Json;
|
|
||||||
using LightlessSync.API.SignalR;
|
|
||||||
using MessagePack;
|
using MessagePack;
|
||||||
using MessagePack.Resolvers;
|
using MessagePack.Resolvers;
|
||||||
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
using Microsoft.AspNetCore.Http.Connections;
|
||||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||||
using LightlessSyncServer.Controllers;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using LightlessSyncShared.RequirementHandlers;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using LightlessSyncShared.Utils.Configuration;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
|
using Prometheus;
|
||||||
|
using StackExchange.Redis;
|
||||||
|
using StackExchange.Redis.Extensions.Core.Configuration;
|
||||||
|
using StackExchange.Redis.Extensions.System.Text.Json;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
namespace LightlessSyncServer;
|
namespace LightlessSyncServer;
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ public class Startup
|
|||||||
a.FeatureProviders.Remove(a.FeatureProviders.OfType<ControllerFeatureProvider>().First());
|
a.FeatureProviders.Remove(a.FeatureProviders.OfType<ControllerFeatureProvider>().First());
|
||||||
if (lightlessConfig.GetValue<Uri>(nameof(ServerConfiguration.MainServerAddress), defaultValue: null) == null)
|
if (lightlessConfig.GetValue<Uri>(nameof(ServerConfiguration.MainServerAddress), defaultValue: null) == null)
|
||||||
{
|
{
|
||||||
a.FeatureProviders.Add(new AllowedControllersFeatureProvider(typeof(LightlessServerConfigurationController), typeof(LightlessBaseConfigurationController), typeof(ClientMessageController)));
|
a.FeatureProviders.Add(new AllowedControllersFeatureProvider(typeof(LightlessServerConfigurationController), typeof(LightlessBaseConfigurationController), typeof(ClientMessageController), typeof(UserController)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user