mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-07-24 14:11:29 +00:00
Add command to remove user's 2fa configuration. (#1094)
* Add command to remove user's 2fa configuration. * Use collection expression, because I'm metal like that
This commit is contained in:
parent
92ce4c5af5
commit
509240db39
1 changed files with 47 additions and 0 deletions
|
@ -0,0 +1,47 @@
|
|||
#nullable enable
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using LBPUnion.ProjectLighthouse.Database;
|
||||
using LBPUnion.ProjectLighthouse.Logging;
|
||||
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
|
||||
using LBPUnion.ProjectLighthouse.Types.Logging;
|
||||
using LBPUnion.ProjectLighthouse.Types.Maintenance;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace LBPUnion.ProjectLighthouse.Administration.Maintenance.Commands;
|
||||
|
||||
public class RemoveTwoFactorCommand : ICommand
|
||||
{
|
||||
public string Name() => "Remove Two Factor Authentication";
|
||||
public string[] Aliases()
|
||||
=>
|
||||
[
|
||||
"removeTwoFactor", "rm2fa",
|
||||
];
|
||||
public string Arguments() => "<username/userId>";
|
||||
public int RequiredArgs() => 1;
|
||||
|
||||
public async Task Run(IServiceProvider provider, string[] args, Logger logger)
|
||||
{
|
||||
DatabaseContext database = provider.GetRequiredService<DatabaseContext>();
|
||||
UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == args[0]);
|
||||
if (user == null)
|
||||
{
|
||||
_ = int.TryParse(args[0], out int userId);
|
||||
user = await database.Users.FirstOrDefaultAsync(u => u.UserId == userId);
|
||||
if (user == null)
|
||||
{
|
||||
logger.LogError($"Could not find user by parameter '{args[0]}'", LogArea.Command);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
user.TwoFactorSecret = "";
|
||||
user.TwoFactorBackup = "";
|
||||
|
||||
await database.SaveChangesAsync();
|
||||
|
||||
logger.LogSuccess($"The two factor authentication for user {user.Username} (id: {user.UserId}) has been removed.", LogArea.Command);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue