Add RBAC support with roles, permissions, and session management. Implement middleware for authentication and CSRF protection. Enhance audit logging with additional fields. Update HTTP handlers and routes for new features.
This commit is contained in:
@@ -12,10 +12,16 @@ import (
|
||||
|
||||
"github.com/example/storage-appliance/internal/audit"
|
||||
httpin "github.com/example/storage-appliance/internal/http"
|
||||
iscsiinfra "github.com/example/storage-appliance/internal/infra/iscsi"
|
||||
"github.com/example/storage-appliance/internal/infra/nfs"
|
||||
"github.com/example/storage-appliance/internal/infra/osexec"
|
||||
"github.com/example/storage-appliance/internal/infra/samba"
|
||||
"github.com/example/storage-appliance/internal/infra/sqlite/db"
|
||||
"github.com/example/storage-appliance/internal/infra/zfs"
|
||||
"github.com/example/storage-appliance/internal/job"
|
||||
iscsiSvcPkg "github.com/example/storage-appliance/internal/service/iscsi"
|
||||
"github.com/example/storage-appliance/internal/service/mock"
|
||||
"github.com/example/storage-appliance/internal/service/shares"
|
||||
"github.com/example/storage-appliance/internal/service/storage"
|
||||
_ "github.com/glebarez/sqlite"
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -51,13 +57,23 @@ func main() {
|
||||
// Attach router and app dependencies
|
||||
// wire mocks for now; replace with real adapters in infra
|
||||
diskSvc := &mock.MockDiskService{}
|
||||
zfsSvc := &mock.MockZFSService{}
|
||||
jobRunner := &mock.MockJobRunner{}
|
||||
auditLogger := audit.NewSQLAuditLogger(sqldb)
|
||||
// job runner uses sqlite DB and zfs adapter
|
||||
zfsAdapter := zfs.NewAdapter(osexec.Default)
|
||||
jobRunner := &job.Runner{DB: sqldb}
|
||||
auditLogger := audit.NewSQLAuditLogger(sqldb)
|
||||
jobRunner.ZFS = zfsAdapter
|
||||
jobRunner.Audit = auditLogger
|
||||
// storage service wiring: use zfsAdapter and jobRunner and audit logger
|
||||
storageSvc := storage.NewStorageService(zfsAdapter, jobRunner, auditLogger)
|
||||
nfsAdapter := nfs.NewAdapter(osexec.Default, "")
|
||||
sambaAdapter := samba.NewAdapter(osexec.Default, "")
|
||||
sharesSvc := shares.NewSharesService(sqldb, nfsAdapter, sambaAdapter, auditLogger)
|
||||
|
||||
// iSCSI adapter and service
|
||||
iscsiAdapter := iscsiinfra.NewAdapter(osexec.Default)
|
||||
iscsiSvc := iscsiSvcPkg.NewISCSIService(sqldb, zfsAdapter, iscsiAdapter, auditLogger)
|
||||
|
||||
zfsSvc := zfsAdapter
|
||||
app := &httpin.App{
|
||||
DB: sqldb,
|
||||
DiskSvc: diskSvc,
|
||||
@@ -65,6 +81,9 @@ func main() {
|
||||
JobRunner: jobRunner,
|
||||
HTTPClient: &http.Client{},
|
||||
StorageSvc: storageSvc,
|
||||
ShareSvc: sharesSvc,
|
||||
ISCSISvc: iscsiSvc,
|
||||
Runner: osexec.Default,
|
||||
}
|
||||
r.Use(uuidMiddleware)
|
||||
httpin.RegisterRoutes(r, app)
|
||||
|
||||
Reference in New Issue
Block a user