Cleanup user and error handling for feedback

This commit is contained in:
Otto Ahoniemi
2022-01-13 07:35:27 +02:00
parent 2c86eb0e4d
commit 6d3ca2e4ba
3 changed files with 18 additions and 38 deletions
+6 -15
View File
@@ -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
+10 -21
View File
@@ -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('<br />')
return sendEmail({
await sendEmail({
template,
emails: [
{
to: 'Toska <grp-toska@helsinki.fi>',
replyTo: userEmail,
subject: `Oodikone feedback from ${userFullName}`,
replyTo: email,
subject: `Oodikone feedback from ${name}`,
text,
},
],
+2 -2
View File
@@ -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,