Central Security Centre

* Security policy management
* Minimum password-length policy
* Mixed-case, number, and symbol requirements
* Password expiry and history settings
* MFA requirement policy
* Failed-login and lockout settings
* Session idle-time policy
* Single-session policy
* Automatic successful-login recording
* Automatic failed-login recording
* Automatic logout recording
* Authentication history
* IP allow and deny rules
* IPv4 CIDR support
* Administration and login rule scopes
* Trusted-device storage and revocation
* Security middleware registration
* Administration navigation
* Security permissions
* Module registration and tests
This commit is contained in:
Mark Gregory
2026-07-24 12:30:40 +01:00
parent 86f2bc75aa
commit 7fb71c4d24
21 changed files with 270 additions and 3 deletions
+9
View File
@@ -0,0 +1,9 @@
<?php
namespace Modules\Security\Models;
use Illuminate\Database\Eloquent\Model;
final class IpRule extends Model
{
protected $table='security_ip_rules';
protected $fillable=['name','type','address','description','applies_to_admin','applies_to_login','is_active','created_by'];
protected $casts=['applies_to_admin'=>'boolean','applies_to_login'=>'boolean','is_active'=>'boolean'];
}
+9
View File
@@ -0,0 +1,9 @@
<?php
namespace Modules\Security\Models;
use Illuminate\Database\Eloquent\Model;
final class LoginEvent extends Model
{
protected $table='security_login_events';
protected $fillable=['user_id','email','event','ip_address','user_agent','session_id','reason','metadata','occurred_at'];
protected $casts=['metadata'=>'array','occurred_at'=>'datetime'];
}
@@ -0,0 +1,8 @@
<?php
namespace Modules\Security\Models;
use Illuminate\Database\Eloquent\Model;
final class SecurityPolicy extends Model
{
protected $fillable=['name','minimum_password_length','require_mixed_case','require_numbers','require_symbols','require_mfa','password_expiry_days','password_history','max_failed_logins','lockout_minutes','session_idle_minutes','single_session','is_active'];
protected $casts=['require_mixed_case'=>'boolean','require_numbers'=>'boolean','require_symbols'=>'boolean','require_mfa'=>'boolean','single_session'=>'boolean','is_active'=>'boolean'];
}
@@ -0,0 +1,9 @@
<?php
namespace Modules\Security\Models;
use Illuminate\Database\Eloquent\Model;
final class TrustedDevice extends Model
{
protected $table='security_devices';
protected $fillable=['user_id','name','fingerprint','ip_address','user_agent','trusted_until','last_seen_at','revoked_at'];
protected $casts=['trusted_until'=>'datetime','last_seen_at'=>'datetime','revoked_at'=>'datetime'];
}