diff --git a/src/server/admin/twoFAMail.html b/src/server/admin/twoFAMail.html index ed91688..b978986 100644 --- a/src/server/admin/twoFAMail.html +++ b/src/server/admin/twoFAMail.html @@ -62,7 +62,7 @@

Welcome back!

-

It looks like someone is trying to sign in to your admin account at {{ pageName }}. If it was you, please click the button below to confirm the login. If not, please change your password immediately or have it changed by the root account!

+

It looks like someone is trying to sign in to your admin account at {{ pageName }}. If it was you, please click the button below to confirm the login. If not, please change your password immediately or have it changed by the root account!

Logging in from IP {{ ip }}.

Verify
diff --git a/src/server/backend/plugins/payments/payrexx/payrexxRoutes.js b/src/server/backend/plugins/payments/payrexx/payrexxRoutes.js index 502734b..b956c00 100644 --- a/src/server/backend/plugins/payments/payrexx/payrexxRoutes.js +++ b/src/server/backend/plugins/payments/payrexx/payrexxRoutes.js @@ -161,7 +161,7 @@ module.exports = ( app, settings ) => { }, 1000 ); db.getDataSimple( 'processingOrders', 'user_id', sessionReference[ response.data.data[ 0 ].id ][ 'tok' ] ).then( dat => { db.getDataSimple( 'users', 'email', sessionReference[ response.data.data[ 0 ].id ][ 'email' ] ).then( user => { - if ( user[ 0 ] ) { + if ( user[ 0 ] && dat[ 0 ] ) { const tickets = JSON.parse( dat[ 0 ].data ); db.writeDataSimple( 'orders', 'account_id', user[ 0 ].account_id, { 'account_id': user[ 0 ].account_id, 'tickets': dat[ 0 ].data, 'order_name': sessionReference[ response.data.data[ 0 ].id ][ 'tok' ] } ).then( () => { console.log( sessionReference[ response.data.data[ 0 ].id ][ 'tok' ] ); @@ -193,8 +193,7 @@ module.exports = ( app, settings ) => { } ); } ); } else { - console.log( sessionReference[ response.data.data[ 0 ].id ][ 'email' ] ); - console.error( 'user not found' ); + TicketGenerator.sendErrorMail( sessionReference[ response.data.data[ 0 ].id ][ 'tok' ], sessionReference[ response.data.data[ 0 ].id ][ 'email' ] ); } } ); } ).catch( err => { diff --git a/src/server/backend/plugins/payments/stripe/stripeRoutes.js b/src/server/backend/plugins/payments/stripe/stripeRoutes.js index ead47fe..2e8e232 100644 --- a/src/server/backend/plugins/payments/stripe/stripeRoutes.js +++ b/src/server/backend/plugins/payments/stripe/stripeRoutes.js @@ -163,7 +163,7 @@ module.exports = ( app, settings ) => { }, 1000 ); db.getDataSimple( 'processingOrders', 'user_id', sessionReference[ event.data.object.id ][ 'tok' ] ).then( dat => { db.getDataSimple( 'users', 'email', sessionReference[ event.data.object.id ][ 'email' ] ).then( user => { - if ( user[ 0 ] ) { + if ( user[ 0 ] && dat[ 0 ] ) { const tickets = JSON.parse( dat[ 0 ].data ); db.writeDataSimple( 'orders', 'account_id', user[ 0 ].account_id, { 'account_id': user[ 0 ].account_id, 'tickets': dat[ 0 ].data, 'order_name': sessionReference[ event.data.object.id ][ 'tok' ] } ).then( () => { TicketGenerator.generateTickets( sessionReference[ event.data.object.id ] ); @@ -193,7 +193,7 @@ module.exports = ( app, settings ) => { } ); } ); } else { - console.error( 'user not found' ); + TicketGenerator.sendErrorMail( sessionReference[ event.data.object.id ][ 'tok' ], sessionReference[ event.data.object.id ][ 'email' ] ); } } ); } ).catch( err => { diff --git a/src/server/backend/tickets/ticketGenerator.js b/src/server/backend/tickets/ticketGenerator.js index 06bdfae..4a9a1de 100644 --- a/src/server/backend/tickets/ticketGenerator.js +++ b/src/server/backend/tickets/ticketGenerator.js @@ -46,6 +46,37 @@ class TicketGenerator { } ); } + sendErrorMail( order, email ) { + db.getJSONData( 'rootAccount' ).then( res => { + ( async() => { + const app = createSSRApp( { + data() { + return { + host: settings.yourDomain, + pageName: settings.name, + }; + }, + template: '' + fs.readFileSync( path.join( __dirname + '/../../ui/en/payments/failedToProcessMail.html' ) ) + } ); + + mailManager.sendMail( email, await renderToString( app ), 'Your order failed to process', settings.mailSender ); + + const adminNot = createSSRApp( { + data() { + return { + host: settings.yourDomain, + email: email, + order_id: order, + }; + }, + template: '' + fs.readFileSync( path.join( __dirname + '/../../ui/en/payments/failedToProcessDetailsMail.html' ) ) + } ); + + mailManager.sendMail( res.email, await renderToString( adminNot ), 'Your order failed to process', settings.mailSender ); + } )(); + } ); + } + generateTickets ( order ) { this.ticketQueue[ this.jobId ] = { 'order': order }; this.runningTickets[ order.tok ] = 'processing'; diff --git a/src/server/ui/en/payments/failedToProcessDetailsMail.html b/src/server/ui/en/payments/failedToProcessDetailsMail.html new file mode 100644 index 0000000..b936a1b --- /dev/null +++ b/src/server/ui/en/payments/failedToProcessDetailsMail.html @@ -0,0 +1,69 @@ + + + + + + Two-Factor Authentication + + + +
+ +

There was an error whilst processing an order

+

This order will have to be processed manually!

+

{{ order_id }}

+

{{ email }}

+
+ + \ No newline at end of file diff --git a/src/server/ui/en/payments/failedToProcessMail.html b/src/server/ui/en/payments/failedToProcessMail.html new file mode 100644 index 0000000..df05d31 --- /dev/null +++ b/src/server/ui/en/payments/failedToProcessMail.html @@ -0,0 +1,67 @@ + + + + + + Two-Factor Authentication + + + +
+ +

There was an error whilst processing your order at {{ pageName }}

+

Your tickets will have to be processed manually and you will receive them as soon as they are ready.

+
+ + \ No newline at end of file