forked from apxtri/apxtrib
64 lines
2.9 KiB
JavaScript
64 lines
2.9 KiB
JavaScript
|
const express = require( 'express' );
|
||
|
const path = require( 'path' );
|
||
|
// Classes
|
||
|
const Messages = require( '../models/Messages.js' );
|
||
|
// Middlewares ( prefix, object ) => {
|
||
|
const checkHeaders = require( '../middlewares/checkHeaders' );
|
||
|
const isAuthenticated = require( '../middlewares/isAuthenticated' );
|
||
|
const hasAccessrighton = require( '../middlewares/hasAccessrighton' );
|
||
|
const router = express.Router();
|
||
|
|
||
|
router.post( '/', checkHeaders, ( req, res ) => {
|
||
|
/*
|
||
|
add message to (no authentification and accessright needs) :
|
||
|
a tribeid or uuid => create a contact based on email.json or phone.json or email_phone.json
|
||
|
if req.body.orderuuid exist then it store the req.body in /orders/orderuuid.json an order with state = order
|
||
|
*/
|
||
|
// check if a receiver is well identify if not then it send message to all user tribeid to inform **
|
||
|
if( !req.body.desttribeid ) req.body.desttribeid = req.session.header.xworkon;
|
||
|
if( !req.body.lang ) req.body.lang = req.session.header.xlang;
|
||
|
console.log( '/messages t send for ', req.session.header.xworkon );
|
||
|
//console.log(' Content: ',req.body);
|
||
|
const result = Messages.postinfo( req.body );
|
||
|
res.status( result.status )
|
||
|
.send( result.data )
|
||
|
} );
|
||
|
|
||
|
router.put( '/:objectname/:uuid', checkHeaders, isAuthenticated, ( req, res ) => {
|
||
|
// message that will create an object and sendback an email.
|
||
|
// if objectnane/uuid_lg.json exist ans accessright is ste to U for the user then it replace object data with req.body.key value
|
||
|
// if does not exist and accessright C then it create it with uuid
|
||
|
// then if req.body.tplmessage => render email with data
|
||
|
// No data management are done here, if need you can add plugin to create a workflow based object
|
||
|
// if need specific data check => req.body.callback={tribeidpugin,pluginname,function} will run pluginname.function(data) add data run specific stuf before saved the message object in /objectname/data.uuid_lg/json
|
||
|
let result;
|
||
|
console.log( "object", req.params.objectname )
|
||
|
if( req.params.objectname == 'notifications' ) {
|
||
|
//uuid is a timestamp
|
||
|
req.body.time = req.params.uuid;
|
||
|
result = Messages.notification( req.body, req.session.header );
|
||
|
} else {
|
||
|
req.body.uuid = req.params.uuid;
|
||
|
req.body.object = req.params.objectname;
|
||
|
result = Messages.object( req.body, req.session.header );
|
||
|
}
|
||
|
//console.log( 'result', result );
|
||
|
res.status( result.status )
|
||
|
.json( result.data )
|
||
|
} );
|
||
|
|
||
|
router.get( '/user', checkHeaders, isAuthenticated, ( req, res ) => {
|
||
|
// run agregate for tribeid concerned
|
||
|
//
|
||
|
console.log( "request notifiation for user", req.session.header.xpaganid );
|
||
|
const app = {
|
||
|
tribeid: req.session.header.xapp.split( ':' )[ 0 ],
|
||
|
website: req.session.header.xapp.split( ':' )[ 1 ],
|
||
|
lang: req.session.header.xlang
|
||
|
};
|
||
|
res.send( Messages.request( req.session.header.xtribe, req.session.header.xpaganid,
|
||
|
req.app.locals.tokens[ req.session.header.xpaganid ].ACCESSRIGHTS, app ) );
|
||
|
} );
|
||
|
|
||
|
module.exports = router;
|