diff --git a/services/backend/src/routes/feedback.js b/services/backend/src/routes/feedback.js
index fcc8e79b3..d0486cc7e 100644
--- a/services/backend/src/routes/feedback.js
+++ b/services/backend/src/routes/feedback.js
@@ -1,28 +1,19 @@
const router = require('express').Router()
-const { getUserDataFor } = require('../services/userService')
const { sendFeedbackToToska } = require('../services/mailservice')
const logger = require('../util/logger')
-router.post('/email', async (req, res) => {
- const { content } = req.body
+router.post('/email', async req => {
const {
- user: { userId },
+ body: { content },
+ user,
} = req
- const { email, full_name } = await getUserDataFor(userId)
-
- const result = await sendFeedbackToToska({
+ await sendFeedbackToToska({
feedbackContent: content,
- userId,
- userEmail: email,
- userFullName: full_name,
+ user,
})
- if (result.error) {
- return res.status(400).json(result).end()
- }
- logger.info(`${userId} succesfully sent some feedback mail to toska`)
- res.status(200).json('success').end()
+ logger.info(`${user.userId} succesfully sent feedback to toska`)
})
module.exports = router
diff --git a/services/backend/src/services/mailservice.js b/services/backend/src/services/mailservice.js
index acf93d892..9bfc3f43f 100644
--- a/services/backend/src/services/mailservice.js
+++ b/services/backend/src/services/mailservice.js
@@ -1,6 +1,6 @@
const axios = require('axios')
const { isProduction, pateToken } = require('../conf-backend')
-const logger = require('../util/logger')
+const { ApplicationError } = require('../util/customErrors')
const pateClient = axios.create({
baseURL: 'https://pate.toska.cs.helsinki.fi',
@@ -20,33 +20,22 @@ const baseSettings = {
}
const sendEmail = async (options = {}) => {
- if (!isProduction) {
- const errorMessage = 'Skipped sending email in non-production environment'
- logger.error({ message: errorMessage, meta: options })
- return { error: errorMessage }
- }
-
- if (!pateToken) {
- const errorMessage = 'Skipped sending email since pate token was not available'
- logger.error({ message: errorMessage, meta: options })
- return { error: errorMessage }
- }
-
- const { data } = await pateClient.post('/', options)
-
- return data
+ if (!isProduction) throw new ApplicationError('Email sending is disabled in development mode.')
+ if (!pateToken) throw new ApplicationError('Email sending failed because pate token is missing.')
+ await pateClient.post('/', options)
}
-const sendFeedbackToToska = ({ feedbackContent, userId, userEmail, userFullName }) => {
- const userDetails = `Sent by ${userFullName}, userid: ${userId}, email: ${userEmail}`
+const sendFeedbackToToska = async ({ feedbackContent, user }) => {
+ const { name, userId, email } = user
+ const userDetails = `Sent by ${name}, userid: ${userId}, email: ${email}`
const text = [feedbackContent, userDetails].join('
')
- return sendEmail({
+ await sendEmail({
template,
emails: [
{
to: 'Toska ',
- replyTo: userEmail,
- subject: `Oodikone feedback from ${userFullName}`,
+ replyTo: email,
+ subject: `Oodikone feedback from ${name}`,
text,
},
],
diff --git a/services/backend/src/services/userService.js b/services/backend/src/services/userService.js
index ae81bdde0..eb1aa32e3 100644
--- a/services/backend/src/services/userService.js
+++ b/services/backend/src/services/userService.js
@@ -163,7 +163,7 @@ const getLoginDataWithoutToken = async (uid, full_name, hyGroups, email, hyPerso
const getMockedUser = async (uid, asUser) => {
const user = await User.superlogin(uid, asUser)
if (!user) return null
- const userData = _.omit(await getUserDataFor(user.userId), ['email', 'full_name', 'faculties'])
+ const userData = _.omit(await getUserDataFor(user.userId), ['full_name', 'faculties'])
return {
...user,
...userData,
@@ -177,7 +177,7 @@ const getUser = async ({ username, name, email, iamGroups, sisId }) => {
await sendNotificationAboutNewUser({ userId: username, userFullName: name })
}
- const userData = _.omit(await getUserDataFor(user.userId), ['email', 'full_name', 'faculties'])
+ const userData = _.omit(await getUserDataFor(user.userId), ['full_name', 'faculties'])
return {
...user,
...userData,