Skip to content

Commit

Permalink
fix(channel-web): added payload field to hide some props in db
Browse files Browse the repository at this point in the history
  • Loading branch information
allardy committed Apr 4, 2019
1 parent 17c2d3b commit f6cba23
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 12 deletions.
6 changes: 5 additions & 1 deletion modules/channel-web/src/backend/api.ts
Expand Up @@ -231,7 +231,11 @@ export default async (bp: typeof sdk, db: Database) => {
throw new Error('Text must be a valid string of less than 360 chars')
}

const sanitizedPayload = _.omit(payload, ['password'])
let sanitizedPayload = payload
if (payload.sensitive) {
const sensitive = Array.isArray(payload.sensitive) ? payload.sensitive : [payload.sensitive]
sanitizedPayload = _.omit(payload, [...sensitive, 'sensitive'])
}

const event = bp.IO.Event({
botId,
Expand Down
14 changes: 5 additions & 9 deletions modules/channel-web/src/backend/socket.ts
Expand Up @@ -34,24 +34,20 @@ export default async (bp: typeof sdk, db: Database) => {
return next(new Error('Unsupported event type: ' + event.type))
}

const standardTypes = ['text', 'carousel', 'custom', 'file', 'login_prompt']

if (messageType === 'typing') {
const typing = parseTyping(event.payload.value)
const payload = bp.RealTimePayload.forVisitor(userId, 'webchat.typing', { timeInMs: typing, conversationId })
// Don't store "typing" in DB
bp.realtime.sendPayload(payload)
await Promise.delay(typing)
} else if (messageType === 'text' || messageType === 'carousel' || messageType === 'custom') {
const message = await db.appendBotMessage(botName, botAvatarUrl, conversationId, event.payload)

bp.realtime.sendPayload(bp.RealTimePayload.forVisitor(userId, 'webchat.message', message))
} else if (messageType === 'file') {
const message = await db.appendBotMessage(botName, botAvatarUrl, conversationId, { ...event.payload })

bp.realtime.sendPayload(bp.RealTimePayload.forVisitor(userId, 'webchat.message', message))
} else if (messageType === 'data') {
const userId = event.target
const payload = bp.RealTimePayload.forVisitor(userId, 'webchat.data', event.payload)
bp.realtime.sendPayload(payload)
} else if (standardTypes.includes(messageType)) {
const message = await db.appendBotMessage(botName, botAvatarUrl, conversationId, event.payload)
bp.realtime.sendPayload(bp.RealTimePayload.forVisitor(userId, 'webchat.message', message))
} else {
throw new Error(`Message type "${messageType}" not implemented yet`)
}
Expand Down
Expand Up @@ -8,13 +8,14 @@ export class LoginPrompt extends Component {

handleInputChanged = event => this.setState({ [event.target.name]: event.target.value })

handleFormSubmit(event) {
handleFormSubmit = event => {
this.props.onSendData &&
this.props.onSendData({
type: 'login_prompt',
text: 'Provided login information',
username: this.state.username,
password: this.state.password
password: this.state.password,
sensitive: ['password']
})

event.preventDefault()
Expand Down

0 comments on commit f6cba23

Please sign in to comment.