@@ -11,6 +11,8 @@ import { generateState } from 'arctic';
1111import { GlobalSettingsInitService } from '../../global-settings' ;
1212import { EmailService } from '../../email' ;
1313import { GlobalSettings } from '../../global-settings/helpers' ;
14+ import { EVENT_NAMES } from '../../events' ;
15+ import type { EventContext } from '../../events/types' ;
1416
1517// Response schemas for GitHub OAuth API
1618const errorResponseSchema = z . object ( {
@@ -371,6 +373,47 @@ export default async function githubAuthRoutes(fastify: FastifyInstance) {
371373 fastify . log . warn ( teamError , 'Failed to create default team for GitHub user' ) ;
372374 }
373375
376+ // Emit USER_REGISTERED event for new GitHub users
377+ try {
378+ const eventContext : EventContext = {
379+ db,
380+ logger : fastify . log ,
381+ user : {
382+ id : newUserId ,
383+ email : newUserData . email ,
384+ roleId : newUserData . role_id
385+ } ,
386+ request : {
387+ ip : request . ip ,
388+ userAgent : request . headers [ 'user-agent' ] ,
389+ requestId : request . id
390+ } ,
391+ timestamp : new Date ( )
392+ } ;
393+
394+ fastify . eventBus . emitWithContext (
395+ EVENT_NAMES . USER_REGISTERED ,
396+ {
397+ user : {
398+ id : newUserId ,
399+ email : newUserData . email ,
400+ name : newUserData . username || `${ newUserData . first_name || '' } ${ newUserData . last_name || '' } ` . trim ( ) || newUserData . email ,
401+ createdAt : new Date ( )
402+ } ,
403+ metadata : {
404+ registrationMethod : 'oauth' ,
405+ ip : request . ip ,
406+ userAgent : request . headers [ 'user-agent' ]
407+ }
408+ } ,
409+ eventContext
410+ ) ;
411+ fastify . log . info ( `USER_REGISTERED event emitted for GitHub user: ${ newUserId } ` ) ;
412+ } catch ( eventError ) {
413+ fastify . log . error ( eventError , `Failed to emit USER_REGISTERED event for GitHub user ${ newUserId } :` ) ;
414+ // Don't fail registration if event emission fails
415+ }
416+
374417 // Create session using manual method (workaround for Lucia adapter issue)
375418 try {
376419 const sessionId = generateId ( 40 ) ;
0 commit comments