Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / cloudProvider / cloudProvider.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0xc3d1=['type','options','count','includeAll','CloudProvider','findAll','service','MicrosoftAzure','data3','catch','params','keys','length','include','find','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','Invalid\x20state\x20parameter','parse','state','base64','toString','ascii','isValidIdToken','id_token','oauth2Claims','del','code','data5','access_token','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/encryptor','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','json','limit','undefined','offset','set','Content-Range','update','then','destroy','stack','name','send','padEnd','slice','index','rawAttributes','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','map'];(function(_0x15e634,_0x28558e){var _0x4d5d95=function(_0x5c3a6f){while(--_0x5c3a6f){_0x15e634['push'](_0x15e634['shift']());}};_0x4d5d95(++_0x28558e);}(_0xc3d1,0xf1));var _0x1c3d=function(_0x333800,_0x4b804f){_0x333800=_0x333800-0x0;var _0x378ac8=_0xc3d1[_0x333800];return _0x378ac8;};'use strict';var _=require(_0x1c3d('0x0'));var Redis=require(_0x1c3d('0x1'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x1c3d('0x2'));var config=require(_0x1c3d('0x3'));var logger=require('../../config/logger')('api');var db=require(_0x1c3d('0x4'))['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_['defaults'](config[_0x1c3d('0x5')],{'host':_0x1c3d('0x6'),'port':0x18eb});var socket=require(_0x1c3d('0x7'))(new Redis(config[_0x1c3d('0x5')]));var redis=new Redis(config[_0x1c3d('0x5')]);function respondWithStatusCode(_0x6842c1,_0x431dfd){_0x431dfd=_0x431dfd||0xcc;return function(_0x4b2aaa){if(_0x4b2aaa){return _0x6842c1[_0x1c3d('0x8')](_0x431dfd);}return _0x6842c1[_0x1c3d('0x9')](_0x431dfd)[_0x1c3d('0xa')]();};}function respondWithResult(_0x2d5917,_0x2ae053){_0x2ae053=_0x2ae053||0xc8;return function(_0xbc05af){if(_0xbc05af){return _0x2d5917[_0x1c3d('0x9')](_0x2ae053)[_0x1c3d('0xb')](_0xbc05af);}};}function respondWithFilteredResult(_0x2f0110,_0x147a1b){return function(_0x34358f){if(_0x34358f){var _0x43b4be=typeof _0x147a1b['offset']==='undefined'&&typeof _0x147a1b[_0x1c3d('0xc')]===_0x1c3d('0xd');var _0x1a7a06=_0x34358f['count'];var _0x3a1829=_0x43b4be?0x0:_0x147a1b[_0x1c3d('0xe')];var _0x1a7376=_0x43b4be?_0x34358f['count']:_0x147a1b[_0x1c3d('0xe')]+_0x147a1b[_0x1c3d('0xc')];var _0x137f65;if(_0x1a7376>=_0x1a7a06){_0x1a7376=_0x1a7a06;_0x137f65=0xc8;}else{_0x137f65=0xce;}_0x2f0110[_0x1c3d('0x9')](_0x137f65);return _0x2f0110[_0x1c3d('0xf')](_0x1c3d('0x10'),_0x3a1829+'-'+_0x1a7376+'/'+_0x1a7a06)[_0x1c3d('0xb')](_0x34358f);}return null;};}function saveUpdates(_0x201346){return function(_0x5ef8a8){if(_0x5ef8a8){return _0x5ef8a8[_0x1c3d('0x11')](_0x201346)[_0x1c3d('0x12')](function(_0x1c42db){return _0x1c42db;});}return null;};}function removeEntity(_0xb916fb){return function(_0x3ec20f){if(_0x3ec20f){return _0x3ec20f[_0x1c3d('0x13')]()['then'](function(){_0xb916fb[_0x1c3d('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ba60a){return function(_0x7c872f){if(!_0x7c872f){_0x2ba60a['sendStatus'](0x194);}return _0x7c872f;};}function handleError(_0x54c338,_0x1f7023){_0x1f7023=_0x1f7023||0x1f4;return function(_0x17cdc4){logger['error'](_0x17cdc4[_0x1c3d('0x14')]);if(_0x17cdc4[_0x1c3d('0x15')]){delete _0x17cdc4[_0x1c3d('0x15')];}_0x54c338[_0x1c3d('0x9')](_0x1f7023)[_0x1c3d('0x16')](_0x17cdc4);};}function maskClientSecret(_0x3f9dd4){return _[_0x1c3d('0x17')](_0x3f9dd4[_0x1c3d('0x18')](0x0,0x3),0x14,'*');}exports[_0x1c3d('0x19')]=function(_0x1e8e45,_0x58896c){var _0x4ff226={},_0x3ce43={},_0x4f0c84={'count':0x0,'rows':[]};var _0x222751=_['map'](db['CloudProvider'][_0x1c3d('0x1a')],function(_0x433ce4){return{'name':_0x433ce4['fieldName'],'type':_0x433ce4['type']['key']};});_0x3ce43[_0x1c3d('0x1b')]=_['map'](_0x222751,'name');_0x3ce43[_0x1c3d('0x1c')]=_['keys'](_0x1e8e45[_0x1c3d('0x1c')]);_0x3ce43['filters']=_[_0x1c3d('0x1d')](_0x3ce43['model'],_0x3ce43[_0x1c3d('0x1c')]);_0x4ff226[_0x1c3d('0x1e')]=_[_0x1c3d('0x1d')](_0x3ce43['model'],qs[_0x1c3d('0x1f')](_0x1e8e45['query']['fields']));_0x4ff226['attributes']=_0x4ff226[_0x1c3d('0x1e')]['length']?_0x4ff226[_0x1c3d('0x1e')]:_0x3ce43[_0x1c3d('0x1b')];if(!_0x1e8e45['query'][_0x1c3d('0x20')](_0x1c3d('0x21'))){_0x4ff226[_0x1c3d('0xc')]=qs[_0x1c3d('0xc')](_0x1e8e45['query'][_0x1c3d('0xc')]);_0x4ff226['offset']=qs[_0x1c3d('0xe')](_0x1e8e45[_0x1c3d('0x1c')]['offset']);}_0x4ff226[_0x1c3d('0x22')]=qs[_0x1c3d('0x23')](_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x23')]);_0x4ff226[_0x1c3d('0x24')]=qs[_0x1c3d('0x25')](_[_0x1c3d('0x26')](_0x1e8e45[_0x1c3d('0x1c')],_0x3ce43[_0x1c3d('0x25')]),_0x222751);if(_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x27')]){_0x4ff226[_0x1c3d('0x24')]=_['merge'](_0x4ff226['where'],{'$or':_[_0x1c3d('0x28')](_0x222751,function(_0x347b78){if(_0x347b78[_0x1c3d('0x29')]!=='VIRTUAL'){var _0x3e3dbb={};_0x3e3dbb[_0x347b78[_0x1c3d('0x15')]]={'$like':'%'+_0x1e8e45['query'][_0x1c3d('0x27')]+'%'};return _0x3e3dbb;}})});}_0x4ff226=_['merge']({},_0x4ff226,_0x1e8e45[_0x1c3d('0x2a')]);var _0xc0e4c8={'where':_0x4ff226[_0x1c3d('0x24')]};return db['CloudProvider'][_0x1c3d('0x2b')](_0xc0e4c8)[_0x1c3d('0x12')](function(_0x14db9e){_0x4f0c84[_0x1c3d('0x2b')]=_0x14db9e;if(_0x1e8e45[_0x1c3d('0x1c')][_0x1c3d('0x2c')]){_0x4ff226['include']=[{'all':!![]}];}return db[_0x1c3d('0x2d')][_0x1c3d('0x2e')](_0x4ff226);})[_0x1c3d('0x12')](function(_0x26e1c3){_0x4f0c84['rows']=_['map'](_0x26e1c3,function(_0x8bc85c){if(_0x8bc85c[_0x1c3d('0x2f')]===_0x1c3d('0x30')){var _0x4f89c1=encryptor['decryptString'](_0x8bc85c[_0x1c3d('0x31')]);_0x8bc85c[_0x1c3d('0x31')]=maskClientSecret(_0x4f89c1);}return _0x8bc85c;});return _0x4f0c84;})[_0x1c3d('0x12')](respondWithFilteredResult(_0x58896c,_0x4ff226))[_0x1c3d('0x32')](handleError(_0x58896c,null));};exports['show']=function(_0xfca041,_0x1a0b02){var _0x2b2143={'raw':!![],'where':{'id':_0xfca041[_0x1c3d('0x33')]['id']}},_0x2f422b={};_0x2f422b[_0x1c3d('0x1b')]=_[_0x1c3d('0x34')](db[_0x1c3d('0x2d')][_0x1c3d('0x1a')]);_0x2f422b[_0x1c3d('0x1c')]=_['keys'](_0xfca041[_0x1c3d('0x1c')]);_0x2f422b[_0x1c3d('0x25')]=_[_0x1c3d('0x1d')](_0x2f422b['model'],_0x2f422b[_0x1c3d('0x1c')]);_0x2b2143[_0x1c3d('0x1e')]=_['intersection'](_0x2f422b[_0x1c3d('0x1b')],qs[_0x1c3d('0x1f')](_0xfca041[_0x1c3d('0x1c')]['fields']));_0x2b2143[_0x1c3d('0x1e')]=_0x2b2143[_0x1c3d('0x1e')][_0x1c3d('0x35')]?_0x2b2143[_0x1c3d('0x1e')]:_0x2f422b[_0x1c3d('0x1b')];if(_0xfca041[_0x1c3d('0x1c')]['includeAll']){_0x2b2143[_0x1c3d('0x36')]=[{'all':!![]}];}_0x2b2143=_['merge']({},_0x2b2143,_0xfca041[_0x1c3d('0x2a')]);return db[_0x1c3d('0x2d')][_0x1c3d('0x37')](_0x2b2143)['then'](handleEntityNotFound(_0x1a0b02,null))[_0x1c3d('0x12')](function(_0xa3608a){if(_0xa3608a[_0x1c3d('0x2f')]===_0x1c3d('0x30')){var _0xe4680f=encryptor[_0x1c3d('0x38')](_0xa3608a['data3']);_0xa3608a[_0x1c3d('0x31')]=maskClientSecret(_0xe4680f);}return _0xa3608a;})[_0x1c3d('0x12')](respondWithResult(_0x1a0b02,null))[_0x1c3d('0x32')](handleError(_0x1a0b02,null));};exports[_0x1c3d('0x39')]=function(_0x50cb3b,_0x535d59){if(!_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x15')])throw new Error(_0x1c3d('0x3b'));if(!_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x2f')])throw new Error(_0x1c3d('0x3c'));var _0x315058=db[_0x1c3d('0x2d')][_0x1c3d('0x1a')][_0x1c3d('0x2f')][_0x1c3d('0x3d')];if(!_0x315058[_0x1c3d('0x3e')](_0x50cb3b[_0x1c3d('0x3a')]['service']))throw new Error(_0x1c3d('0x3f')+_0x315058[_0x1c3d('0x40')](',\x20'));if(_0x50cb3b['body'][_0x1c3d('0x2f')]===_0x1c3d('0x30')&&_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x31')]){_0x50cb3b['body'][_0x1c3d('0x31')]=encryptor[_0x1c3d('0x41')](_0x50cb3b[_0x1c3d('0x3a')][_0x1c3d('0x31')]);}return db['CloudProvider'][_0x1c3d('0x39')](_0x50cb3b[_0x1c3d('0x3a')],{})[_0x1c3d('0x12')](respondWithResult(_0x535d59,0xc9))[_0x1c3d('0x32')](handleError(_0x535d59,null));};exports[_0x1c3d('0x11')]=function(_0x4a3d0b,_0xd74f8e){if(_0x4a3d0b[_0x1c3d('0x3a')]['id']){delete _0x4a3d0b[_0x1c3d('0x3a')]['id'];}return db['CloudProvider'][_0x1c3d('0x37')]({'where':{'id':_0x4a3d0b[_0x1c3d('0x33')]['id']}})[_0x1c3d('0x12')](handleEntityNotFound(_0xd74f8e,null))['then'](function(_0x2a424e){if(_0x2a424e[_0x1c3d('0x2f')]===_0x1c3d('0x30')&&_0x4a3d0b[_0x1c3d('0x3a')][_0x1c3d('0x31')]){_0x4a3d0b[_0x1c3d('0x3a')][_0x1c3d('0x31')]=encryptor[_0x1c3d('0x41')](_0x4a3d0b['body'][_0x1c3d('0x31')]);}return _0x2a424e;})[_0x1c3d('0x12')](saveUpdates(_0x4a3d0b[_0x1c3d('0x3a')],null))[_0x1c3d('0x12')](respondWithResult(_0xd74f8e,null))[_0x1c3d('0x32')](handleError(_0xd74f8e,null));};exports[_0x1c3d('0x13')]=function(_0x56908f,_0x25fc9f){return db[_0x1c3d('0x2d')][_0x1c3d('0x37')]({'where':{'id':_0x56908f[_0x1c3d('0x33')]['id']}})[_0x1c3d('0x12')](handleEntityNotFound(_0x25fc9f,null))['then'](removeEntity(_0x25fc9f,null))[_0x1c3d('0x32')](handleError(_0x25fc9f,null));};exports[_0x1c3d('0x42')]=function(_0xaaf2ae,_0x308df9){return db[_0x1c3d('0x2d')][_0x1c3d('0x43')]({'where':{'id':_0xaaf2ae[_0x1c3d('0x33')]['id']},'raw':!![]})[_0x1c3d('0x12')](function(_0x2fd95b){if(!_0x2fd95b)return _0x308df9[_0x1c3d('0x8')](0x194);return{'url':oauth[_0x1c3d('0x44')](_0x2fd95b,_0xaaf2ae[_0x1c3d('0x45')]['id'])};})[_0x1c3d('0x12')](respondWithResult(_0x308df9,null))[_0x1c3d('0x32')](handleError(_0x308df9,null));};exports[_0x1c3d('0x46')]=function(_0x48aa54,_0x329443){var _0x3c83bd=_0x48aa54[_0x1c3d('0x3a')];var _0x59cd32;var _0x4ccbc6;if(_0x3c83bd[_0x1c3d('0x47')])throw _0x3c83bd;redis[_0x1c3d('0x48')](_0x3c83bd['state'])[_0x1c3d('0x12')](function(_0x4739ba){if(!_0x4739ba)throw new Error(_0x1c3d('0x49'));_0x59cd32=JSON[_0x1c3d('0x4a')](_0x4739ba);var _0xbdafb9=Buffer['from'](_0x3c83bd[_0x1c3d('0x4b')],_0x1c3d('0x4c'))[_0x1c3d('0x4d')](_0x1c3d('0x4e'));_0x4ccbc6=JSON[_0x1c3d('0x4a')](_0xbdafb9);if(!oauth[_0x1c3d('0x4f')](_0x3c83bd[_0x1c3d('0x50')],_0x59cd32[_0x1c3d('0x51')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x1c3d('0x52')](_0x3c83bd[_0x1c3d('0x4b')]);return oauth['getOauth2MicrosoftAccessToken'](_0x3c83bd[_0x1c3d('0x53')],_0x59cd32);})['then'](function(_0x42d3d9){_0x59cd32[_0x1c3d('0x54')]=_0x42d3d9[_0x1c3d('0x55')];_0x59cd32['data6']=_0x42d3d9[_0x1c3d('0x56')];return db[_0x1c3d('0x2d')][_0x1c3d('0x11')]({'data5':_0x59cd32[_0x1c3d('0x54')],'data6':_0x59cd32[_0x1c3d('0x57')]},{'where':{'id':_0x59cd32['id']}});})['then'](function(){oauth[_0x1c3d('0x58')](_0x59cd32);socket[_0x1c3d('0x59')](_0x1c3d('0x5a'),{'id':_0x4ccbc6['id']});return;})[_0x1c3d('0x12')](respondWithStatusCode(_0x329443,null))[_0x1c3d('0x32')](function(_0x7df9c){if(_0x4ccbc6){socket['emit']('microsoftAuthorization:error',{'id':_0x4ccbc6['id']});}if(!_0x59cd32){logger[_0x1c3d('0x47')](_0x1c3d('0x5b'),_0x7df9c);return _0x329443[_0x1c3d('0x9')](0x1f4)[_0x1c3d('0x16')](_0x7df9c[_0x1c3d('0x5c')]);}logger['error'](_0x1c3d('0x5d'),_0x59cd32['id'],JSON['stringify'](_0x7df9c));});};