06dda826f11d916d489cfd5b1b081f0986844897
[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 _0xb9e4=['filter','merge','VIRTUAL','options','include','findAll','rows','service','MicrosoftAzure','data3','catch','show','params','find','create','Name\x20parameter\x20not\x20specified','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','state','base64','toString','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','data5','access_token','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','defaults','localhost','socket.io-emitter','redis','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','padEnd','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filters'];(function(_0x549443,_0x2e04c8){var _0x372ed3=function(_0x214a87){while(--_0x214a87){_0x549443['push'](_0x549443['shift']());}};_0x372ed3(++_0x2e04c8);}(_0xb9e4,0x1ad));var _0x4b9e=function(_0x4b6e9a,_0x5945f4){_0x4b6e9a=_0x4b6e9a-0x0;var _0x3130ac=_0xb9e4[_0x4b6e9a];return _0x3130ac;};'use strict';var _=require(_0x4b9e('0x0'));var Redis=require(_0x4b9e('0x1'));var qs=require(_0x4b9e('0x2'));var encryptor=require(_0x4b9e('0x3'));var config=require(_0x4b9e('0x4'));var logger=require(_0x4b9e('0x5'))(_0x4b9e('0x6'));var db=require(_0x4b9e('0x7'))['db'];var oauth=require(_0x4b9e('0x8'));config['redis']=_[_0x4b9e('0x9')](config['redis'],{'host':_0x4b9e('0xa'),'port':0x18eb});var socket=require(_0x4b9e('0xb'))(new Redis(config[_0x4b9e('0xc')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x19a0bc,_0x1e22e8){_0x1e22e8=_0x1e22e8||0xcc;return function(_0x5bc699){if(_0x5bc699){return _0x19a0bc[_0x4b9e('0xd')](_0x1e22e8);}return _0x19a0bc[_0x4b9e('0xe')](_0x1e22e8)[_0x4b9e('0xf')]();};}function respondWithResult(_0x493c74,_0x4b376f){_0x4b376f=_0x4b376f||0xc8;return function(_0x26f4f9){if(_0x26f4f9){return _0x493c74['status'](_0x4b376f)[_0x4b9e('0x10')](_0x26f4f9);}};}function respondWithFilteredResult(_0x3b7beb,_0x4c6ffb){return function(_0x67e5af){if(_0x67e5af){var _0x3571a8=typeof _0x4c6ffb[_0x4b9e('0x11')]===_0x4b9e('0x12')&&typeof _0x4c6ffb['limit']===_0x4b9e('0x12');var _0xa5f295=_0x67e5af[_0x4b9e('0x13')];var _0x2ddbbf=_0x3571a8?0x0:_0x4c6ffb['offset'];var _0x22dd0a=_0x3571a8?_0x67e5af[_0x4b9e('0x13')]:_0x4c6ffb[_0x4b9e('0x11')]+_0x4c6ffb['limit'];var _0x285110;if(_0x22dd0a>=_0xa5f295){_0x22dd0a=_0xa5f295;_0x285110=0xc8;}else{_0x285110=0xce;}_0x3b7beb['status'](_0x285110);return _0x3b7beb[_0x4b9e('0x14')](_0x4b9e('0x15'),_0x2ddbbf+'-'+_0x22dd0a+'/'+_0xa5f295)[_0x4b9e('0x10')](_0x67e5af);}return null;};}function saveUpdates(_0x1ae6d2){return function(_0x36abf5){if(_0x36abf5){return _0x36abf5[_0x4b9e('0x16')](_0x1ae6d2)[_0x4b9e('0x17')](function(_0x188d4a){return _0x188d4a;});}return null;};}function removeEntity(_0x5629b3){return function(_0x521287){if(_0x521287){return _0x521287[_0x4b9e('0x18')]()[_0x4b9e('0x17')](function(){_0x5629b3[_0x4b9e('0xe')](0xcc)[_0x4b9e('0xf')]();});}};}function handleEntityNotFound(_0x393f09){return function(_0x29a8ed){if(!_0x29a8ed){_0x393f09[_0x4b9e('0xd')](0x194);}return _0x29a8ed;};}function handleError(_0x364cc7,_0x180122){_0x180122=_0x180122||0x1f4;return function(_0x1b749b){logger[_0x4b9e('0x19')](_0x1b749b[_0x4b9e('0x1a')]);if(_0x1b749b[_0x4b9e('0x1b')]){delete _0x1b749b[_0x4b9e('0x1b')];}_0x364cc7[_0x4b9e('0xe')](_0x180122)[_0x4b9e('0x1c')](_0x1b749b);};}function maskClientSecret(_0x197262){return _[_0x4b9e('0x1d')](_0x197262['slice'](0x0,0x3),0x14,'*');}exports[_0x4b9e('0x1e')]=function(_0x496a52,_0x5a003e){var _0x4cfdc3={},_0x3caabf={},_0x21e6d9={'count':0x0,'rows':[]};var _0x10fb07=_[_0x4b9e('0x1f')](db[_0x4b9e('0x20')][_0x4b9e('0x21')],function(_0x2c3dbf){return{'name':_0x2c3dbf[_0x4b9e('0x22')],'type':_0x2c3dbf[_0x4b9e('0x23')][_0x4b9e('0x24')]};});_0x3caabf[_0x4b9e('0x25')]=_['map'](_0x10fb07,_0x4b9e('0x1b'));_0x3caabf[_0x4b9e('0x26')]=_[_0x4b9e('0x27')](_0x496a52['query']);_0x3caabf['filters']=_[_0x4b9e('0x28')](_0x3caabf[_0x4b9e('0x25')],_0x3caabf['query']);_0x4cfdc3[_0x4b9e('0x29')]=_[_0x4b9e('0x28')](_0x3caabf[_0x4b9e('0x25')],qs[_0x4b9e('0x2a')](_0x496a52[_0x4b9e('0x26')][_0x4b9e('0x2a')]));_0x4cfdc3['attributes']=_0x4cfdc3[_0x4b9e('0x29')][_0x4b9e('0x2b')]?_0x4cfdc3[_0x4b9e('0x29')]:_0x3caabf[_0x4b9e('0x25')];if(!_0x496a52[_0x4b9e('0x26')][_0x4b9e('0x2c')]('nolimit')){_0x4cfdc3[_0x4b9e('0x2d')]=qs[_0x4b9e('0x2d')](_0x496a52[_0x4b9e('0x26')]['limit']);_0x4cfdc3[_0x4b9e('0x11')]=qs[_0x4b9e('0x11')](_0x496a52[_0x4b9e('0x26')][_0x4b9e('0x11')]);}_0x4cfdc3[_0x4b9e('0x2e')]=qs[_0x4b9e('0x2f')](_0x496a52[_0x4b9e('0x26')]['sort']);_0x4cfdc3[_0x4b9e('0x30')]=qs['filters'](_[_0x4b9e('0x31')](_0x496a52[_0x4b9e('0x26')],_0x3caabf[_0x4b9e('0x32')]),_0x10fb07);if(_0x496a52[_0x4b9e('0x26')][_0x4b9e('0x33')]){_0x4cfdc3['where']=_[_0x4b9e('0x34')](_0x4cfdc3[_0x4b9e('0x30')],{'$or':_['map'](_0x10fb07,function(_0x549008){if(_0x549008[_0x4b9e('0x23')]!==_0x4b9e('0x35')){var _0x40b939={};_0x40b939[_0x549008[_0x4b9e('0x1b')]]={'$like':'%'+_0x496a52[_0x4b9e('0x26')][_0x4b9e('0x33')]+'%'};return _0x40b939;}})});}_0x4cfdc3=_[_0x4b9e('0x34')]({},_0x4cfdc3,_0x496a52[_0x4b9e('0x36')]);var _0x12014e={'where':_0x4cfdc3[_0x4b9e('0x30')]};return db['CloudProvider'][_0x4b9e('0x13')](_0x12014e)[_0x4b9e('0x17')](function(_0x230be5){_0x21e6d9[_0x4b9e('0x13')]=_0x230be5;if(_0x496a52[_0x4b9e('0x26')]['includeAll']){_0x4cfdc3[_0x4b9e('0x37')]=[{'all':!![]}];}return db[_0x4b9e('0x20')][_0x4b9e('0x38')](_0x4cfdc3);})['then'](function(_0x383f04){_0x21e6d9[_0x4b9e('0x39')]=_[_0x4b9e('0x1f')](_0x383f04,function(_0x52dc97){if(_0x52dc97[_0x4b9e('0x3a')]===_0x4b9e('0x3b')){var _0x37390b=encryptor['decryptString'](_0x52dc97[_0x4b9e('0x3c')]);_0x52dc97[_0x4b9e('0x3c')]=maskClientSecret(_0x37390b);}return _0x52dc97;});return _0x21e6d9;})['then'](respondWithFilteredResult(_0x5a003e,_0x4cfdc3))[_0x4b9e('0x3d')](handleError(_0x5a003e,null));};exports[_0x4b9e('0x3e')]=function(_0x3c5abc,_0x324842){var _0x1e4cfb={'raw':!![],'where':{'id':_0x3c5abc[_0x4b9e('0x3f')]['id']}},_0xae75c2={};_0xae75c2[_0x4b9e('0x25')]=_[_0x4b9e('0x27')](db['CloudProvider'][_0x4b9e('0x21')]);_0xae75c2[_0x4b9e('0x26')]=_['keys'](_0x3c5abc[_0x4b9e('0x26')]);_0xae75c2['filters']=_[_0x4b9e('0x28')](_0xae75c2[_0x4b9e('0x25')],_0xae75c2['query']);_0x1e4cfb[_0x4b9e('0x29')]=_[_0x4b9e('0x28')](_0xae75c2[_0x4b9e('0x25')],qs[_0x4b9e('0x2a')](_0x3c5abc[_0x4b9e('0x26')][_0x4b9e('0x2a')]));_0x1e4cfb[_0x4b9e('0x29')]=_0x1e4cfb['attributes'][_0x4b9e('0x2b')]?_0x1e4cfb[_0x4b9e('0x29')]:_0xae75c2[_0x4b9e('0x25')];if(_0x3c5abc[_0x4b9e('0x26')]['includeAll']){_0x1e4cfb[_0x4b9e('0x37')]=[{'all':!![]}];}_0x1e4cfb=_[_0x4b9e('0x34')]({},_0x1e4cfb,_0x3c5abc[_0x4b9e('0x36')]);return db[_0x4b9e('0x20')][_0x4b9e('0x40')](_0x1e4cfb)[_0x4b9e('0x17')](handleEntityNotFound(_0x324842,null))[_0x4b9e('0x17')](function(_0x581d0c){if(_0x581d0c[_0x4b9e('0x3a')]===_0x4b9e('0x3b')){var _0x376b2e=encryptor['decryptString'](_0x581d0c['data3']);_0x581d0c[_0x4b9e('0x3c')]=maskClientSecret(_0x376b2e);}return _0x581d0c;})[_0x4b9e('0x17')](respondWithResult(_0x324842,null))[_0x4b9e('0x3d')](handleError(_0x324842,null));};exports[_0x4b9e('0x41')]=function(_0x360c80,_0x101e17){if(!_0x360c80['body']['name'])throw new Error(_0x4b9e('0x42'));if(!_0x360c80[_0x4b9e('0x43')][_0x4b9e('0x3a')])throw new Error(_0x4b9e('0x44'));var _0xd99842=db[_0x4b9e('0x20')]['rawAttributes'][_0x4b9e('0x3a')][_0x4b9e('0x45')];if(!_0xd99842[_0x4b9e('0x46')](_0x360c80[_0x4b9e('0x43')]['service']))throw new Error(_0x4b9e('0x47')+_0xd99842[_0x4b9e('0x48')](',\x20'));if(_0x360c80[_0x4b9e('0x43')][_0x4b9e('0x3a')]===_0x4b9e('0x3b')&&_0x360c80[_0x4b9e('0x43')]['data3']){_0x360c80[_0x4b9e('0x43')][_0x4b9e('0x3c')]=encryptor['encryptString'](_0x360c80[_0x4b9e('0x43')]['data3']);}return db[_0x4b9e('0x20')][_0x4b9e('0x41')](_0x360c80[_0x4b9e('0x43')],{})[_0x4b9e('0x17')](respondWithResult(_0x101e17,0xc9))['catch'](handleError(_0x101e17,null));};exports['update']=function(_0x442270,_0x15e573){if(_0x442270['body']['id']){delete _0x442270[_0x4b9e('0x43')]['id'];}return db[_0x4b9e('0x20')]['find']({'where':{'id':_0x442270[_0x4b9e('0x3f')]['id']}})[_0x4b9e('0x17')](handleEntityNotFound(_0x15e573,null))[_0x4b9e('0x17')](function(_0x5de6d0){if(_0x5de6d0['service']===_0x4b9e('0x3b')&&_0x442270[_0x4b9e('0x43')][_0x4b9e('0x3c')]){_0x442270[_0x4b9e('0x43')]['data3']=encryptor['encryptString'](_0x442270[_0x4b9e('0x43')][_0x4b9e('0x3c')]);}return _0x5de6d0;})['then'](saveUpdates(_0x442270[_0x4b9e('0x43')],null))['then'](respondWithResult(_0x15e573,null))[_0x4b9e('0x3d')](handleError(_0x15e573,null));};exports[_0x4b9e('0x18')]=function(_0x21398a,_0x9416e1){return db[_0x4b9e('0x20')]['find']({'where':{'id':_0x21398a['params']['id']}})[_0x4b9e('0x17')](handleEntityNotFound(_0x9416e1,null))['then'](removeEntity(_0x9416e1,null))[_0x4b9e('0x3d')](handleError(_0x9416e1,null));};exports['oauth2MicrosoftAuthorize']=function(_0x1c6fe2,_0xf57ca9){return db['CloudProvider'][_0x4b9e('0x49')]({'where':{'id':_0x1c6fe2[_0x4b9e('0x3f')]['id']},'raw':!![]})['then'](function(_0x10df07){if(!_0x10df07)return _0xf57ca9[_0x4b9e('0xd')](0x194);return{'url':oauth[_0x4b9e('0x4a')](_0x10df07,_0x1c6fe2['user']['id'])};})['then'](respondWithResult(_0xf57ca9,null))[_0x4b9e('0x3d')](handleError(_0xf57ca9,null));};exports[_0x4b9e('0x4b')]=function(_0x153121,_0x1e240c){var _0x2c0394=_0x153121[_0x4b9e('0x43')];var _0x3367f8;var _0xf9d622;if(_0x2c0394['error'])throw _0x2c0394;redis[_0x4b9e('0x4c')](_0x2c0394['state'])[_0x4b9e('0x17')](function(_0x3c5f9a){if(!_0x3c5f9a)throw new Error('Invalid\x20state\x20parameter');_0x3367f8=JSON['parse'](_0x3c5f9a);var _0x3717e8=Buffer['from'](_0x2c0394[_0x4b9e('0x4d')],_0x4b9e('0x4e'))[_0x4b9e('0x4f')]('ascii');_0xf9d622=JSON['parse'](_0x3717e8);if(!oauth[_0x4b9e('0x50')](_0x2c0394[_0x4b9e('0x51')],_0x3367f8[_0x4b9e('0x52')]))throw new Error(_0x4b9e('0x53'));redis['del'](_0x2c0394[_0x4b9e('0x4d')]);return oauth[_0x4b9e('0x54')](_0x2c0394['code'],_0x3367f8);})[_0x4b9e('0x17')](function(_0x4703cb){_0x3367f8[_0x4b9e('0x55')]=_0x4703cb[_0x4b9e('0x56')];_0x3367f8['data6']=_0x4703cb[_0x4b9e('0x57')];return db['CloudProvider'][_0x4b9e('0x16')]({'data5':_0x3367f8[_0x4b9e('0x55')],'data6':_0x3367f8[_0x4b9e('0x58')]},{'where':{'id':_0x3367f8['id']}});})[_0x4b9e('0x17')](function(){oauth[_0x4b9e('0x59')](_0x3367f8);socket[_0x4b9e('0x5a')](_0x4b9e('0x5b'),{'id':_0xf9d622['id']});return;})[_0x4b9e('0x17')](respondWithStatusCode(_0x1e240c,null))[_0x4b9e('0x3d')](function(_0x234b1d){if(_0xf9d622){socket[_0x4b9e('0x5a')](_0x4b9e('0x5c'),{'id':_0xf9d622['id']});}if(!_0x3367f8){logger[_0x4b9e('0x19')](_0x4b9e('0x5d'),_0x234b1d);return _0x1e240c['status'](0x1f4)[_0x4b9e('0x1c')](_0x234b1d['message']);}logger[_0x4b9e('0x19')](_0x4b9e('0x5e'),_0x3367f8['id'],JSON[_0x4b9e('0x5f')](_0x234b1d));});};