A plugin decrypts querystring, request body data (except multipart) and encrypts response body data for poom
npm i poom-requesthasher -S
Use like a middleware
import { Server } from 'poom';
import { hasher } from 'poom-hasher';
Server.use(hasher('Key is 8 characters', {
baseOnRequest: false,
mode: ['query', 'body', 'response']
}))
Use in controller (Manual apis which you want encrypt data when you not declare in Server.use)
import { GET, POST, PUT, DELETE, HEAD, INJECT } from 'poom-route';
import { HASHER, Hasher } from 'poom-requesthasher';
const key = Hasher.create('Key is 8 characters');
export default class TestController {
@GET('/test')
@HASHER(key, {
baseOnRequest: false,
mode: ['query', 'body', 'response']
})
static async test({ body, headers, query }) {
return {
name: 'thanh'
};
}
}
In that:
- baseOnRequest: Plugin auto detect to encrypt, decrypt base on request from client via "accept" field is "text/encryption"
- mode: Which is encrypted or decrypted.
- query: Decrypt query string on request which is sent by client
- body: Decrypt body data in POST, PUT (except multipart type) which is sent by client
- response: Encrypt response body data which is sent from server to client