@@ -19,6 +19,8 @@ import {
1919 AnonymousUserCreateRequest ,
2020 CreateTeamRequest ,
2121 GetTeamRequest ,
22+ InvitationDeleteRequest ,
23+ InvitationDeleteResponse ,
2224 ModifyTeamMembersRequest ,
2325 Team as GrpcTeam ,
2426 TeamDeleteRequest ,
@@ -53,7 +55,7 @@ import { User as UserAuthz } from './authz/index.js';
5355import { handleAuthentication } from './routes/middleware.js' ;
5456import { fileURLToPath } from 'node:url' ;
5557import { TeamsHandler } from './handlers/team.js' ;
56- import { User } from './models/index.js' ;
58+ import { Token , User } from './models/index.js' ;
5759
5860const __filename = fileURLToPath ( import . meta. url ) ;
5961const __dirname = path . dirname ( __filename ) ;
@@ -76,6 +78,7 @@ export default class Authentication extends ManagedModule<Config> {
7678 validateAccessToken : this . validateAccessToken . bind ( this ) ,
7779 addTeamMembers : this . addTeamMembers . bind ( this ) ,
7880 removeTeamMembers : this . removeTeamMembers . bind ( this ) ,
81+ invitationDelete : this . invitationDelete . bind ( this ) ,
7982 } ,
8083 } ;
8184 protected metricsSchema = metricsSchema ;
@@ -650,6 +653,37 @@ export default class Authentication extends ManagedModule<Config> {
650653 }
651654 }
652655
656+ async invitationDelete (
657+ call : GrpcRequest < InvitationDeleteRequest > ,
658+ callback : GrpcCallback < InvitationDeleteResponse > ,
659+ ) {
660+ const { email, teamId } = call . request ;
661+
662+ try {
663+ const deletedToken = await Token . getInstance ( ) . deleteOne ( {
664+ // @ts -expect-error Unsafe nested property access
665+ 'data.teamId' : teamId ,
666+ 'data.email' : email ,
667+ } ) ;
668+
669+ if ( deletedToken . deletedCount === 0 ) {
670+ return callback ( {
671+ code : status . NOT_FOUND ,
672+ message : 'Invitation not found' ,
673+ } ) ;
674+ }
675+
676+ return callback ( null , {
677+ message : 'Invitation deleted successfully' ,
678+ } ) ;
679+ } catch ( e ) {
680+ return callback ( {
681+ code : status . INTERNAL ,
682+ message : ( e as Error ) . message ,
683+ } ) ;
684+ }
685+ }
686+
653687 protected registerSchemas ( ) {
654688 const promises = Object . values ( models ) . map ( model => {
655689 const modelInstance = model . getInstance ( this . database ) ;
0 commit comments