fase(9): auth module with casl rbac and session management
This commit is contained in:
42
src/main.ts
42
src/main.ts
@@ -37,6 +37,20 @@ import { RunFuzzCommand } from './modules/fuzzing/application/commands/RunFuzzCo
|
||||
import { OnActionExecuted } from './modules/fuzzing/application/event-handlers/OnActionExecuted';
|
||||
import { InMemoryFuzzSessionRepository } from './modules/fuzzing/infrastructure/repositories/InMemoryFuzzSessionRepository';
|
||||
|
||||
// Auth module
|
||||
import { KyselyUserRepository } from './modules/auth/infrastructure/repositories/KyselyUserRepository';
|
||||
import { KyselyOrganizationRepository } from './modules/auth/infrastructure/repositories/KyselyOrganizationRepository';
|
||||
import { KyselyApiKeyRepository } from './modules/auth/infrastructure/repositories/KyselyApiKeyRepository';
|
||||
import { KyselySessionRepository } from './modules/auth/infrastructure/repositories/KyselySessionRepository';
|
||||
import { RegisterCommand } from './modules/auth/application/commands/RegisterCommand';
|
||||
import { LoginCommand } from './modules/auth/application/commands/LoginCommand';
|
||||
import { CreateOrganizationCommand } from './modules/auth/application/commands/CreateOrganizationCommand';
|
||||
import { InviteMemberCommand } from './modules/auth/application/commands/InviteMemberCommand';
|
||||
import { CreateApiKeyCommand } from './modules/auth/application/commands/CreateApiKeyCommand';
|
||||
import { GetUserQuery } from './modules/auth/application/queries/GetUserQuery';
|
||||
import { ListOrgMembersQuery } from './modules/auth/application/queries/ListOrgMembersQuery';
|
||||
import { hashPassword, verifyPassword } from './modules/auth/infrastructure/auth/PasswordService';
|
||||
|
||||
// Job queue
|
||||
import { SQLiteJobQueue } from './jobs/SQLiteJobQueue';
|
||||
import { createExplorationJobHandler, EXPLORATION_JOB_TYPE } from './jobs/workers/ExplorationWorker';
|
||||
@@ -97,7 +111,21 @@ async function bootstrap(): Promise<void> {
|
||||
const onActionExecuted = new OnActionExecuted(runFuzz);
|
||||
eventBus.subscribe('crawling.action_executed', onActionExecuted);
|
||||
|
||||
// 10. HTTP server
|
||||
// 10. Auth module
|
||||
const userRepo = new KyselyUserRepository(db);
|
||||
const orgRepo = new KyselyOrganizationRepository(db);
|
||||
const apiKeyRepo = new KyselyApiKeyRepository(db);
|
||||
const authSessionRepo = new KyselySessionRepository(db);
|
||||
|
||||
const registerCommand = new RegisterCommand(userRepo, eventBus, hashPassword);
|
||||
const loginCommand = new LoginCommand(userRepo, authSessionRepo, eventBus, verifyPassword);
|
||||
const createOrgCommand = new CreateOrganizationCommand(orgRepo, userRepo, eventBus);
|
||||
const inviteMemberCommand = new InviteMemberCommand(orgRepo, userRepo, eventBus);
|
||||
const createApiKeyCommand = new CreateApiKeyCommand(apiKeyRepo, userRepo);
|
||||
const getUserQuery = new GetUserQuery(userRepo);
|
||||
const listOrgMembersQuery = new ListOrgMembersQuery(orgRepo, userRepo);
|
||||
|
||||
// 11. HTTP server
|
||||
const app = createServer({
|
||||
config,
|
||||
logger,
|
||||
@@ -105,6 +133,18 @@ async function bootstrap(): Promise<void> {
|
||||
crawlingDeps: { startCrawl, stopCrawl, getSession, listSessions },
|
||||
findingsDeps: { getFinding, listFindings, findingStats, resolveFinding, enrichFinding },
|
||||
fuzzingDeps: { runFuzz, repository: fuzzRepo },
|
||||
authDeps: {
|
||||
registerCommand,
|
||||
loginCommand,
|
||||
createOrgCommand,
|
||||
inviteMemberCommand,
|
||||
createApiKeyCommand,
|
||||
getUserQuery,
|
||||
listOrgMembersQuery,
|
||||
sessionRepository: authSessionRepo,
|
||||
apiKeyRepository: apiKeyRepo,
|
||||
userRepository: userRepo,
|
||||
},
|
||||
});
|
||||
|
||||
const httpServer = http.createServer(app);
|
||||
|
||||
Reference in New Issue
Block a user