Built motion from commit 10af8726.|2.6.34
[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 _0x1e31=['from','base64','toString','isValidIdToken','id_token','oauth2Claims','del','getOauth2MicrosoftAccessToken','code','access_token','refresh_token','data5','data6','startRefreshInterval','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','../../components/parsers/qs','../../components/encryptor','../../config/logger','api','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','update','destroy','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','key','keys','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','then','includeAll','rows','service','MicrosoftAzure','data3','show','params','length','include','options','find','catch','create','includes','body','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1e31,0x18f));var _0x11e3=function(_0x4fc3ff,_0x312d7c){_0x4fc3ff=_0x4fc3ff-0x0;var _0xb85f3a=_0x1e31[_0x4fc3ff];return _0xb85f3a;};'use strict';var _=require(_0x11e3('0x0'));var Redis=require('ioredis');var qs=require(_0x11e3('0x1'));var encryptor=require(_0x11e3('0x2'));var config=require('../../config/environment');var logger=require(_0x11e3('0x3'))(_0x11e3('0x4'));var db=require('../../mysqldb')['db'];var oauth=require(_0x11e3('0x5'));config[_0x11e3('0x6')]=_[_0x11e3('0x7')](config[_0x11e3('0x6')],{'host':_0x11e3('0x8'),'port':0x18eb});var socket=require(_0x11e3('0x9'))(new Redis(config['redis']));var redis=new Redis(config[_0x11e3('0x6')]);function respondWithStatusCode(_0xcb7b5f,_0x4e78f0){_0x4e78f0=_0x4e78f0||0xcc;return function(_0x1dd162){if(_0x1dd162){return _0xcb7b5f[_0x11e3('0xa')](_0x4e78f0);}return _0xcb7b5f[_0x11e3('0xb')](_0x4e78f0)[_0x11e3('0xc')]();};}function respondWithResult(_0x517fca,_0x2b3d5d){_0x2b3d5d=_0x2b3d5d||0xc8;return function(_0x2e6e54){if(_0x2e6e54){return _0x517fca[_0x11e3('0xb')](_0x2b3d5d)[_0x11e3('0xd')](_0x2e6e54);}};}function respondWithFilteredResult(_0x50289b,_0x2b1d48){return function(_0x51b261){if(_0x51b261){var _0x3ed248=typeof _0x2b1d48['offset']===_0x11e3('0xe')&&typeof _0x2b1d48[_0x11e3('0xf')]==='undefined';var _0xa3630b=_0x51b261[_0x11e3('0x10')];var _0x65b8a7=_0x3ed248?0x0:_0x2b1d48[_0x11e3('0x11')];var _0x5de5ed=_0x3ed248?_0x51b261['count']:_0x2b1d48[_0x11e3('0x11')]+_0x2b1d48['limit'];var _0x4adfe8;if(_0x5de5ed>=_0xa3630b){_0x5de5ed=_0xa3630b;_0x4adfe8=0xc8;}else{_0x4adfe8=0xce;}_0x50289b[_0x11e3('0xb')](_0x4adfe8);return _0x50289b[_0x11e3('0x12')](_0x11e3('0x13'),_0x65b8a7+'-'+_0x5de5ed+'/'+_0xa3630b)[_0x11e3('0xd')](_0x51b261);}return null;};}function saveUpdates(_0x120b7d){return function(_0x2f0620){if(_0x2f0620){return _0x2f0620[_0x11e3('0x14')](_0x120b7d)['then'](function(_0x4a62b1){return _0x4a62b1;});}return null;};}function removeEntity(_0x554cb0){return function(_0x30eafb){if(_0x30eafb){return _0x30eafb[_0x11e3('0x15')]()['then'](function(){_0x554cb0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3027b3){return function(_0x102aaa){if(!_0x102aaa){_0x3027b3[_0x11e3('0xa')](0x194);}return _0x102aaa;};}function handleError(_0x2c3722,_0x3008f6){_0x3008f6=_0x3008f6||0x1f4;return function(_0x387a1e){logger[_0x11e3('0x16')](_0x387a1e[_0x11e3('0x17')]);if(_0x387a1e['name']){delete _0x387a1e[_0x11e3('0x18')];}_0x2c3722[_0x11e3('0xb')](_0x3008f6)[_0x11e3('0x19')](_0x387a1e);};}function maskClientSecret(_0x3d6113){return _[_0x11e3('0x1a')](_0x3d6113[_0x11e3('0x1b')](0x0,0x3),0x14,'*');}exports[_0x11e3('0x1c')]=function(_0x44b40e,_0x5ead72){var _0x2af805={},_0x3c8e54={},_0x4ebe53={'count':0x0,'rows':[]};var _0x3dd239=_[_0x11e3('0x1d')](db[_0x11e3('0x1e')][_0x11e3('0x1f')],function(_0x8e22aa){return{'name':_0x8e22aa['fieldName'],'type':_0x8e22aa['type'][_0x11e3('0x20')]};});_0x3c8e54['model']=_[_0x11e3('0x1d')](_0x3dd239,_0x11e3('0x18'));_0x3c8e54['query']=_[_0x11e3('0x21')](_0x44b40e[_0x11e3('0x22')]);_0x3c8e54[_0x11e3('0x23')]=_[_0x11e3('0x24')](_0x3c8e54[_0x11e3('0x25')],_0x3c8e54[_0x11e3('0x22')]);_0x2af805['attributes']=_[_0x11e3('0x24')](_0x3c8e54[_0x11e3('0x25')],qs[_0x11e3('0x26')](_0x44b40e[_0x11e3('0x22')][_0x11e3('0x26')]));_0x2af805[_0x11e3('0x27')]=_0x2af805[_0x11e3('0x27')]['length']?_0x2af805['attributes']:_0x3c8e54[_0x11e3('0x25')];if(!_0x44b40e['query'][_0x11e3('0x28')](_0x11e3('0x29'))){_0x2af805[_0x11e3('0xf')]=qs[_0x11e3('0xf')](_0x44b40e[_0x11e3('0x22')][_0x11e3('0xf')]);_0x2af805[_0x11e3('0x11')]=qs[_0x11e3('0x11')](_0x44b40e[_0x11e3('0x22')][_0x11e3('0x11')]);}_0x2af805[_0x11e3('0x2a')]=qs[_0x11e3('0x2b')](_0x44b40e[_0x11e3('0x22')][_0x11e3('0x2b')]);_0x2af805[_0x11e3('0x2c')]=qs[_0x11e3('0x23')](_[_0x11e3('0x2d')](_0x44b40e[_0x11e3('0x22')],_0x3c8e54[_0x11e3('0x23')]),_0x3dd239);if(_0x44b40e[_0x11e3('0x22')][_0x11e3('0x2e')]){_0x2af805[_0x11e3('0x2c')]=_[_0x11e3('0x2f')](_0x2af805[_0x11e3('0x2c')],{'$or':_[_0x11e3('0x1d')](_0x3dd239,function(_0x51b648){if(_0x51b648[_0x11e3('0x30')]!==_0x11e3('0x31')){var _0x53e6f8={};_0x53e6f8[_0x51b648[_0x11e3('0x18')]]={'$like':'%'+_0x44b40e[_0x11e3('0x22')][_0x11e3('0x2e')]+'%'};return _0x53e6f8;}})});}_0x2af805=_[_0x11e3('0x2f')]({},_0x2af805,_0x44b40e['options']);var _0x30f842={'where':_0x2af805[_0x11e3('0x2c')]};return db[_0x11e3('0x1e')][_0x11e3('0x10')](_0x30f842)[_0x11e3('0x32')](function(_0x317c9f){_0x4ebe53['count']=_0x317c9f;if(_0x44b40e[_0x11e3('0x22')][_0x11e3('0x33')]){_0x2af805['include']=[{'all':!![]}];}return db[_0x11e3('0x1e')]['findAll'](_0x2af805);})['then'](function(_0x3cc1b4){_0x4ebe53[_0x11e3('0x34')]=_[_0x11e3('0x1d')](_0x3cc1b4,function(_0x48128d){if(_0x48128d[_0x11e3('0x35')]===_0x11e3('0x36')){var _0x1c710c=encryptor['decryptString'](_0x48128d[_0x11e3('0x37')]);_0x48128d[_0x11e3('0x37')]=maskClientSecret(_0x1c710c);}return _0x48128d;});return _0x4ebe53;})['then'](respondWithFilteredResult(_0x5ead72,_0x2af805))['catch'](handleError(_0x5ead72,null));};exports[_0x11e3('0x38')]=function(_0x28ffb0,_0x28487d){var _0x5945ad={'raw':!![],'where':{'id':_0x28ffb0[_0x11e3('0x39')]['id']}},_0x486449={};_0x486449[_0x11e3('0x25')]=_[_0x11e3('0x21')](db[_0x11e3('0x1e')][_0x11e3('0x1f')]);_0x486449[_0x11e3('0x22')]=_[_0x11e3('0x21')](_0x28ffb0[_0x11e3('0x22')]);_0x486449['filters']=_[_0x11e3('0x24')](_0x486449['model'],_0x486449['query']);_0x5945ad[_0x11e3('0x27')]=_[_0x11e3('0x24')](_0x486449[_0x11e3('0x25')],qs[_0x11e3('0x26')](_0x28ffb0[_0x11e3('0x22')][_0x11e3('0x26')]));_0x5945ad[_0x11e3('0x27')]=_0x5945ad[_0x11e3('0x27')][_0x11e3('0x3a')]?_0x5945ad[_0x11e3('0x27')]:_0x486449[_0x11e3('0x25')];if(_0x28ffb0['query'][_0x11e3('0x33')]){_0x5945ad[_0x11e3('0x3b')]=[{'all':!![]}];}_0x5945ad=_[_0x11e3('0x2f')]({},_0x5945ad,_0x28ffb0[_0x11e3('0x3c')]);return db[_0x11e3('0x1e')][_0x11e3('0x3d')](_0x5945ad)[_0x11e3('0x32')](handleEntityNotFound(_0x28487d,null))[_0x11e3('0x32')](function(_0x3fb713){if(_0x3fb713['service']===_0x11e3('0x36')){var _0x17c563=encryptor['decryptString'](_0x3fb713[_0x11e3('0x37')]);_0x3fb713[_0x11e3('0x37')]=maskClientSecret(_0x17c563);}return _0x3fb713;})[_0x11e3('0x32')](respondWithResult(_0x28487d,null))[_0x11e3('0x3e')](handleError(_0x28487d,null));};exports[_0x11e3('0x3f')]=function(_0x839664,_0x14bf2b){if(!_0x839664['body'][_0x11e3('0x18')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x839664['body'][_0x11e3('0x35')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x48610c=db[_0x11e3('0x1e')][_0x11e3('0x1f')][_0x11e3('0x35')]['values'];if(!_0x48610c[_0x11e3('0x40')](_0x839664[_0x11e3('0x41')][_0x11e3('0x35')]))throw new Error(_0x11e3('0x42')+_0x48610c['join'](',\x20'));if(_0x839664[_0x11e3('0x41')][_0x11e3('0x35')]===_0x11e3('0x36')&&_0x839664[_0x11e3('0x41')]['data3']){_0x839664[_0x11e3('0x41')]['data3']=encryptor[_0x11e3('0x43')](_0x839664['body'][_0x11e3('0x37')]);}return db['CloudProvider'][_0x11e3('0x3f')](_0x839664[_0x11e3('0x41')],{})['then'](respondWithResult(_0x14bf2b,0xc9))['catch'](handleError(_0x14bf2b,null));};exports['update']=function(_0x86a45f,_0x1b2fc8){if(_0x86a45f[_0x11e3('0x41')]['id']){delete _0x86a45f['body']['id'];}return db[_0x11e3('0x1e')][_0x11e3('0x3d')]({'where':{'id':_0x86a45f['params']['id']}})[_0x11e3('0x32')](handleEntityNotFound(_0x1b2fc8,null))['then'](function(_0x238ad0){if(_0x238ad0['service']===_0x11e3('0x36')&&_0x86a45f[_0x11e3('0x41')][_0x11e3('0x37')]){_0x86a45f['body']['data3']=encryptor[_0x11e3('0x43')](_0x86a45f['body']['data3']);}return _0x238ad0;})[_0x11e3('0x32')](saveUpdates(_0x86a45f[_0x11e3('0x41')],null))[_0x11e3('0x32')](respondWithResult(_0x1b2fc8,null))[_0x11e3('0x3e')](handleError(_0x1b2fc8,null));};exports[_0x11e3('0x15')]=function(_0x7c63e0,_0x25ccac){return db[_0x11e3('0x1e')]['find']({'where':{'id':_0x7c63e0['params']['id']}})[_0x11e3('0x32')](handleEntityNotFound(_0x25ccac,null))['then'](removeEntity(_0x25ccac,null))['catch'](handleError(_0x25ccac,null));};exports['oauth2MicrosoftAuthorize']=function(_0x2f15e8,_0x38e73d){return db[_0x11e3('0x1e')][_0x11e3('0x44')]({'where':{'id':_0x2f15e8[_0x11e3('0x39')]['id']},'raw':!![]})[_0x11e3('0x32')](function(_0x246af0){if(!_0x246af0)return _0x38e73d[_0x11e3('0xa')](0x194);return{'url':oauth[_0x11e3('0x45')](_0x246af0,_0x2f15e8[_0x11e3('0x46')]['id'])};})[_0x11e3('0x32')](respondWithResult(_0x38e73d,null))[_0x11e3('0x3e')](handleError(_0x38e73d,null));};exports[_0x11e3('0x47')]=function(_0x277ca2,_0x4eb99d){var _0x113fee=_0x277ca2[_0x11e3('0x41')];var _0x594626;var _0xd9b46d;if(_0x113fee['error'])throw _0x113fee;redis[_0x11e3('0x48')](_0x113fee[_0x11e3('0x49')])['then'](function(_0x402e2b){if(!_0x402e2b)throw new Error(_0x11e3('0x4a'));_0x594626=JSON[_0x11e3('0x4b')](_0x402e2b);var _0x31584f=Buffer[_0x11e3('0x4c')](_0x113fee[_0x11e3('0x49')],_0x11e3('0x4d'))[_0x11e3('0x4e')]('ascii');_0xd9b46d=JSON[_0x11e3('0x4b')](_0x31584f);if(!oauth[_0x11e3('0x4f')](_0x113fee[_0x11e3('0x50')],_0x594626[_0x11e3('0x51')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x11e3('0x52')](_0x113fee[_0x11e3('0x49')]);return oauth[_0x11e3('0x53')](_0x113fee[_0x11e3('0x54')],_0x594626);})['then'](function(_0x2c24cc){_0x594626['data5']=_0x2c24cc[_0x11e3('0x55')];_0x594626['data6']=_0x2c24cc[_0x11e3('0x56')];return db[_0x11e3('0x1e')][_0x11e3('0x14')]({'data5':_0x594626[_0x11e3('0x57')],'data6':_0x594626[_0x11e3('0x58')]},{'where':{'id':_0x594626['id']}});})[_0x11e3('0x32')](function(){oauth[_0x11e3('0x59')](_0x594626);socket['emit'](_0x11e3('0x5a'),{'id':_0xd9b46d['id']});return;})['then'](respondWithStatusCode(_0x4eb99d,null))[_0x11e3('0x3e')](function(_0x3ec5a2){if(_0xd9b46d){socket['emit'](_0x11e3('0x5b'),{'id':_0xd9b46d['id']});}if(!_0x594626){logger['error'](_0x11e3('0x5c'),_0x3ec5a2);return _0x4eb99d[_0x11e3('0xb')](0x1f4)[_0x11e3('0x19')](_0x3ec5a2['message']);}logger[_0x11e3('0x16')](_0x11e3('0x5d'),_0x594626['id'],JSON[_0x11e3('0x5e')](_0x3ec5a2));});};