Merge pull request #212 from Moonlight-Panel/AddLoginRegisterDeny

Add config option to prevent users from login and register
This commit is contained in:
Marcel Baumgartner
2023-07-07 18:11:45 +02:00
committed by GitHub
2 changed files with 22 additions and 2 deletions

View File

@@ -17,6 +17,8 @@ public class ConfigV1
[Description("The url moonlight is accesible with from the internet")] [Description("The url moonlight is accesible with from the internet")]
public string AppUrl { get; set; } = "http://your-moonlight-url-without-slash"; public string AppUrl { get; set; } = "http://your-moonlight-url-without-slash";
[JsonProperty("Auth")] public AuthData Auth { get; set; } = new();
[JsonProperty("Database")] public DatabaseData Database { get; set; } = new(); [JsonProperty("Database")] public DatabaseData Database { get; set; } = new();
[JsonProperty("DiscordBotApi")] public DiscordBotApiData DiscordBotApi { get; set; } = new(); [JsonProperty("DiscordBotApi")] public DiscordBotApiData DiscordBotApi { get; set; } = new();
@@ -39,8 +41,7 @@ public class ConfigV1
[JsonProperty("Subscriptions")] public SubscriptionsData Subscriptions { get; set; } = new(); [JsonProperty("Subscriptions")] public SubscriptionsData Subscriptions { get; set; } = new();
[JsonProperty("DiscordNotifications")] [JsonProperty("DiscordNotifications")] public DiscordNotificationsData DiscordNotifications { get; set; } = new();
public DiscordNotificationsData DiscordNotifications { get; set; } = new();
[JsonProperty("Statistics")] public StatisticsData Statistics { get; set; } = new(); [JsonProperty("Statistics")] public StatisticsData Statistics { get; set; } = new();
@@ -50,6 +51,17 @@ public class ConfigV1
[JsonProperty("Sentry")] public SentryData Sentry { get; set; } = new(); [JsonProperty("Sentry")] public SentryData Sentry { get; set; } = new();
} }
public class AuthData
{
[JsonProperty("DenyLogin")]
[Description("Prevent every new login")]
public bool DenyLogin { get; set; } = false;
[JsonProperty("DenyRegister")]
[Description("Prevent every new user to register")]
public bool DenyRegister { get; set; } = false;
}
public class CleanupData public class CleanupData
{ {

View File

@@ -18,6 +18,7 @@ public class UserService
private readonly IdentityService IdentityService; private readonly IdentityService IdentityService;
private readonly IpLocateService IpLocateService; private readonly IpLocateService IpLocateService;
private readonly DateTimeService DateTimeService; private readonly DateTimeService DateTimeService;
private readonly ConfigService ConfigService;
private readonly string JwtSecret; private readonly string JwtSecret;
@@ -32,6 +33,7 @@ public class UserService
{ {
UserRepository = userRepository; UserRepository = userRepository;
TotpService = totpService; TotpService = totpService;
ConfigService = configService;
MailService = mailService; MailService = mailService;
IdentityService = identityService; IdentityService = identityService;
IpLocateService = ipLocateService; IpLocateService = ipLocateService;
@@ -44,6 +46,9 @@ public class UserService
public async Task<string> Register(string email, string password, string firstname, string lastname) public async Task<string> Register(string email, string password, string firstname, string lastname)
{ {
if (ConfigService.Get().Moonlight.Auth.DenyRegister)
throw new DisplayException("This operation was disabled");
// Check if the email is already taken // Check if the email is already taken
var emailTaken = UserRepository.Get().FirstOrDefault(x => x.Email == email) != null; var emailTaken = UserRepository.Get().FirstOrDefault(x => x.Email == email) != null;
@@ -108,6 +113,9 @@ public class UserService
public async Task<string> Login(string email, string password, string totpCode = "") public async Task<string> Login(string email, string password, string totpCode = "")
{ {
if (ConfigService.Get().Moonlight.Auth.DenyLogin)
throw new DisplayException("This operation was disabled");
// First password check and check if totp is enabled // First password check and check if totp is enabled
var needTotp = await CheckTotp(email, password); var needTotp = await CheckTotp(email, password);