add option to disable mail
This commit is contained in:
parent
2763432672
commit
8a4a38a294
4 changed files with 39 additions and 14 deletions
|
@ -149,6 +149,16 @@ public static class Routes
|
||||||
error = "Invalid request body"
|
error = "Invalid request body"
|
||||||
}, Utilities.JsonSerializerOptions);
|
}, Utilities.JsonSerializerOptions);
|
||||||
}
|
}
|
||||||
|
// Is mailer enabled?
|
||||||
|
if (Program.Mailer == null)
|
||||||
|
{
|
||||||
|
context.Response.StatusCode = 400;
|
||||||
|
return Results.Json(new ResetPasswordResponse
|
||||||
|
{
|
||||||
|
success = false,
|
||||||
|
error = "Password reset is disabled"
|
||||||
|
}, Utilities.JsonSerializerOptions);
|
||||||
|
}
|
||||||
// Check username and E-Mail
|
// Check username and E-Mail
|
||||||
var user = await Program.Database.GetUser(payload.username);
|
var user = await Program.Database.GetUser(payload.username);
|
||||||
if (user == null || user.Email != payload.email)
|
if (user == null || user.Email != payload.email)
|
||||||
|
|
|
@ -47,16 +47,17 @@ public class MySQLConfig
|
||||||
|
|
||||||
public class SMTPConfig
|
public class SMTPConfig
|
||||||
{
|
{
|
||||||
public string Host { get; set; }
|
public bool Enabled { get; set; }
|
||||||
public int Port { get; set; }
|
public string? Host { get; set; }
|
||||||
public string Username { get; set; }
|
public int? Port { get; set; }
|
||||||
public string Password { get; set; }
|
public string? Username { get; set; }
|
||||||
public string FromName { get; set; }
|
public string? Password { get; set; }
|
||||||
public string FromEmail { get; set; }
|
public string? FromName { get; set; }
|
||||||
public string VerificationCodeSubject { get; set; }
|
public string? FromEmail { get; set; }
|
||||||
public string VerificationCodeBody { get; set; }
|
public string? VerificationCodeSubject { get; set; }
|
||||||
public string ResetPasswordSubject { get; set; }
|
public string? VerificationCodeBody { get; set; }
|
||||||
public string ResetPasswordBody { get; set; }
|
public string? ResetPasswordSubject { get; set; }
|
||||||
|
public string? ResetPasswordBody { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class hCaptchaConfig
|
public class hCaptchaConfig
|
||||||
|
|
|
@ -9,6 +9,14 @@ public class Mailer
|
||||||
private SMTPConfig Config;
|
private SMTPConfig Config;
|
||||||
public Mailer(SMTPConfig config)
|
public Mailer(SMTPConfig config)
|
||||||
{
|
{
|
||||||
|
if (config.Host == null || config.Port == null || config.Username == null || config.Password == null ||
|
||||||
|
config.FromName == null || config.FromEmail == null || config.VerificationCodeSubject == null ||
|
||||||
|
config.VerificationCodeBody == null || config.ResetPasswordSubject == null ||
|
||||||
|
config.ResetPasswordBody == null)
|
||||||
|
{
|
||||||
|
Utilities.Log(LogLevel.FATAL,"SMTPConfig is missing required fields");
|
||||||
|
Environment.Exit(1);
|
||||||
|
}
|
||||||
Config = config;
|
Config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +37,7 @@ public class Mailer
|
||||||
.Replace("$CODE", code)
|
.Replace("$CODE", code)
|
||||||
};
|
};
|
||||||
using var client = new SmtpClient();
|
using var client = new SmtpClient();
|
||||||
await client.ConnectAsync(Config.Host, Config.Port, SecureSocketOptions.StartTlsWhenAvailable);
|
await client.ConnectAsync(Config.Host, (int)Config.Port, SecureSocketOptions.StartTlsWhenAvailable);
|
||||||
await client.AuthenticateAsync(Config.Username, Config.Password);
|
await client.AuthenticateAsync(Config.Username, Config.Password);
|
||||||
await client.SendAsync(message);
|
await client.SendAsync(message);
|
||||||
await client.DisconnectAsync(true);
|
await client.DisconnectAsync(true);
|
||||||
|
@ -53,7 +61,7 @@ public class Mailer
|
||||||
.Replace("$CODE", code)
|
.Replace("$CODE", code)
|
||||||
};
|
};
|
||||||
using var client = new SmtpClient();
|
using var client = new SmtpClient();
|
||||||
await client.ConnectAsync(Config.Host, Config.Port, SecureSocketOptions.StartTlsWhenAvailable);
|
await client.ConnectAsync(Config.Host, (int)Config.Port, SecureSocketOptions.StartTlsWhenAvailable);
|
||||||
await client.AuthenticateAsync(Config.Username, Config.Password);
|
await client.AuthenticateAsync(Config.Username, Config.Password);
|
||||||
await client.SendAsync(message);
|
await client.SendAsync(message);
|
||||||
await client.DisconnectAsync(true);
|
await client.DisconnectAsync(true);
|
||||||
|
|
|
@ -9,7 +9,7 @@ public class Program
|
||||||
public static IConfig Config { get; private set; }
|
public static IConfig Config { get; private set; }
|
||||||
public static Database Database { get; private set; }
|
public static Database Database { get; private set; }
|
||||||
public static hCaptchaClient? hCaptcha { get; private set; }
|
public static hCaptchaClient? hCaptcha { get; private set; }
|
||||||
public static Mailer Mailer { get; private set; }
|
public static Mailer? Mailer { get; private set; }
|
||||||
public static string[] BannedPasswords { get; set; }
|
public static string[] BannedPasswords { get; set; }
|
||||||
public static readonly Random Random = new Random();
|
public static readonly Random Random = new Random();
|
||||||
public static async Task Main(string[] args)
|
public static async Task Main(string[] args)
|
||||||
|
@ -42,7 +42,13 @@ public class Program
|
||||||
await Database.Init();
|
await Database.Init();
|
||||||
Utilities.Log(LogLevel.INFO, "Connected to database");
|
Utilities.Log(LogLevel.INFO, "Connected to database");
|
||||||
// Create mailer
|
// Create mailer
|
||||||
Mailer = new Mailer(Config.SMTP);
|
if (!Config.SMTP.Enabled && Config.Registration.EmailVerificationRequired)
|
||||||
|
{
|
||||||
|
Utilities.Log(LogLevel.FATAL, "Email verification is required but SMTP is disabled");
|
||||||
|
Environment.Exit(1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Mailer = Config.SMTP.Enabled ? new Mailer(Config.SMTP) : null;
|
||||||
// Create hCaptcha client
|
// Create hCaptcha client
|
||||||
if (Config.hCaptcha.Enabled)
|
if (Config.hCaptcha.Enabled)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue