[backend/core] Prevent system users from authenticating or creating notes
This commit is contained in:
parent
5390990448
commit
846888b2c7
3 changed files with 5 additions and 0 deletions
|
@ -54,6 +54,8 @@ public class AuthController(DatabaseContext db, UserService userSvc, UserRendere
|
|||
p.UsernameLower == request.Username.ToLowerInvariant());
|
||||
if (user == null)
|
||||
throw GracefulException.Forbidden("Invalid username or password");
|
||||
if (user.IsSystemUser)
|
||||
throw GracefulException.BadRequest("Cannot log in as system user");
|
||||
var settings = await db.UserSettings.FirstOrDefaultAsync(p => p.User == user);
|
||||
if (settings?.Password == null)
|
||||
throw GracefulException.Forbidden("Invalid username or password");
|
||||
|
|
|
@ -110,6 +110,8 @@ public class NoteService(
|
|||
throw GracefulException.UnprocessableEntity($"Note was rejected by {policy.Name}");
|
||||
if (data.User.IsLocalUser && (data.Text?.Length ?? 0) + (data.Cw?.Length ?? 0) > config.Value.CharacterLimit)
|
||||
throw GracefulException.UnprocessableEntity($"Text & content warning cannot exceed {config.Value.CharacterLimit} characters in total");
|
||||
if (data.User.IsSystemUser)
|
||||
throw GracefulException.BadRequest("System users cannot create notes");
|
||||
if (data.Text is { Length: > 100000 })
|
||||
throw GracefulException.UnprocessableEntity("Text cannot be longer than 100.000 characters");
|
||||
if (data.Cw is { Length: > 100000 })
|
||||
|
|
|
@ -71,6 +71,7 @@ public class AuthorizeModel(DatabaseContext db) : PageModel
|
|||
user = await db.Users.FirstOrDefaultAsync(p => p.IsLocalUser &&
|
||||
p.UsernameLower == username.ToLowerInvariant()) ??
|
||||
throw Forbidden();
|
||||
if (user.IsSystemUser) throw GracefulException.BadRequest("Cannot log in as system user");
|
||||
var userSettings = await db.UserSettings.FirstOrDefaultAsync(p => p.User == user);
|
||||
if (userSettings?.Password == null)
|
||||
throw Forbidden();
|
||||
|
|
Loading…
Add table
Reference in a new issue