@@ -512,6 +512,35 @@ module.exports = function (
512512 glean . login . verifyCodeConfirmed ( request , { uid } ) ;
513513 await signinUtils . cleanupReminders ( { verified : true } , account ) ;
514514 await push . notifyAccountUpdated ( uid , devices , 'accountConfirm' ) ;
515+
516+ // Send new device login notification email after successful verification
517+ const geoData = request . app . geo ;
518+ const service = options . service || request . query . service ;
519+ const emailOptions = {
520+ acceptLanguage : request . app . acceptLanguage ,
521+ ip : request . app . clientAddress ,
522+ location : geoData . location ,
523+ service,
524+ timeZone : geoData . timeZone ,
525+ uaBrowser : sessionToken . uaBrowser ,
526+ uaBrowserVersion : sessionToken . uaBrowserVersion ,
527+ uaOS : sessionToken . uaOS ,
528+ uaOSVersion : sessionToken . uaOSVersion ,
529+ uaDeviceType : sessionToken . uaDeviceType ,
530+ uid,
531+ } ;
532+
533+ try {
534+ await mailer . sendNewDeviceLoginEmail (
535+ account . emails ,
536+ account ,
537+ emailOptions
538+ ) ;
539+ } catch ( err ) {
540+ log . trace ( 'Session.verify_code.sendNewDeviceLoginEmail.error' , {
541+ error : err ,
542+ } ) ;
543+ }
515544 }
516545
517546 return { } ;
@@ -794,6 +823,37 @@ module.exports = function (
794823 const devices = await db . devices ( uid ) ;
795824 await push . notifyAccountUpdated ( uid , devices , 'accountConfirm' ) ;
796825
826+ // Send new device login notification email after successful verification
827+ if ( account . primaryEmail . isVerified ) {
828+ const geoData = request . app . geo ;
829+ const service = request . query . service ;
830+ const emailOptions = {
831+ acceptLanguage : request . app . acceptLanguage ,
832+ ip : request . app . clientAddress ,
833+ location : geoData . location ,
834+ service,
835+ timeZone : geoData . timeZone ,
836+ uaBrowser : sessionToken . uaBrowser ,
837+ uaBrowserVersion : sessionToken . uaBrowserVersion ,
838+ uaOS : sessionToken . uaOS ,
839+ uaOSVersion : sessionToken . uaOSVersion ,
840+ uaDeviceType : sessionToken . uaDeviceType ,
841+ uid,
842+ } ;
843+
844+ try {
845+ await mailer . sendNewDeviceLoginEmail (
846+ account . emails ,
847+ account ,
848+ emailOptions
849+ ) ;
850+ } catch ( err ) {
851+ log . trace ( 'Session.verify_push.sendNewDeviceLoginEmail.error' , {
852+ error : err ,
853+ } ) ;
854+ }
855+ }
856+
797857 return { } ;
798858 } ,
799859 } ,
0 commit comments