Built motion from commit 08fb8613.|2.6.31
[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 _0xe123=['Invalid\x20authentication\x20state\x20parameter','send','message','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','redis','localhost','socket.io-emitter','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','padEnd','slice','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','CloudProvider','includeAll','include','findAll','service','MicrosoftAzure','decryptString','data3','catch','params','keys','find','create','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','user','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','state','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','refresh_token','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error'];(function(_0x174c93,_0x19df54){var _0x5dd411=function(_0x1dbcca){while(--_0x1dbcca){_0x174c93['push'](_0x174c93['shift']());}};_0x5dd411(++_0x19df54);}(_0xe123,0x6c));var _0x3e12=function(_0x40df58,_0x56435d){_0x40df58=_0x40df58-0x0;var _0x19cba7=_0xe123[_0x40df58];return _0x19cba7;};'use strict';var _=require(_0x3e12('0x0'));var Redis=require(_0x3e12('0x1'));var qs=require(_0x3e12('0x2'));var encryptor=require(_0x3e12('0x3'));var config=require(_0x3e12('0x4'));var logger=require(_0x3e12('0x5'))(_0x3e12('0x6'));var db=require(_0x3e12('0x7'))['db'];var oauth=require(_0x3e12('0x8'));config['redis']=_[_0x3e12('0x9')](config[_0x3e12('0xa')],{'host':_0x3e12('0xb'),'port':0x18eb});var socket=require(_0x3e12('0xc'))(new Redis(config[_0x3e12('0xa')]));var redis=new Redis(config[_0x3e12('0xa')]);function respondWithStatusCode(_0x118ab8,_0x34c934){_0x34c934=_0x34c934||0xcc;return function(_0x2d7cac){if(_0x2d7cac){return _0x118ab8['sendStatus'](_0x34c934);}return _0x118ab8['status'](_0x34c934)[_0x3e12('0xd')]();};}function respondWithResult(_0x4c03b2,_0x5284ee){_0x5284ee=_0x5284ee||0xc8;return function(_0x93a6e9){if(_0x93a6e9){return _0x4c03b2[_0x3e12('0xe')](_0x5284ee)[_0x3e12('0xf')](_0x93a6e9);}};}function respondWithFilteredResult(_0x26e96e,_0x41e165){return function(_0x1b695f){if(_0x1b695f){var _0x5147fb=typeof _0x41e165[_0x3e12('0x10')]==='undefined'&&typeof _0x41e165[_0x3e12('0x11')]===_0x3e12('0x12');var _0x2ca78e=_0x1b695f['count'];var _0x2efcfd=_0x5147fb?0x0:_0x41e165[_0x3e12('0x10')];var _0x29389=_0x5147fb?_0x1b695f[_0x3e12('0x13')]:_0x41e165[_0x3e12('0x10')]+_0x41e165[_0x3e12('0x11')];var _0x1b1a16;if(_0x29389>=_0x2ca78e){_0x29389=_0x2ca78e;_0x1b1a16=0xc8;}else{_0x1b1a16=0xce;}_0x26e96e['status'](_0x1b1a16);return _0x26e96e[_0x3e12('0x14')](_0x3e12('0x15'),_0x2efcfd+'-'+_0x29389+'/'+_0x2ca78e)[_0x3e12('0xf')](_0x1b695f);}return null;};}function saveUpdates(_0x1217a1){return function(_0xeb7c97){if(_0xeb7c97){return _0xeb7c97[_0x3e12('0x16')](_0x1217a1)[_0x3e12('0x17')](function(_0x2db7ca){return _0x2db7ca;});}return null;};}function removeEntity(_0x5cc9b4){return function(_0xf803c){if(_0xf803c){return _0xf803c[_0x3e12('0x18')]()[_0x3e12('0x17')](function(){_0x5cc9b4[_0x3e12('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4af048){return function(_0x21edad){if(!_0x21edad){_0x4af048[_0x3e12('0x19')](0x194);}return _0x21edad;};}function handleError(_0xd53ffd,_0x80f40b){_0x80f40b=_0x80f40b||0x1f4;return function(_0x8915d1){logger[_0x3e12('0x1a')](_0x8915d1[_0x3e12('0x1b')]);if(_0x8915d1[_0x3e12('0x1c')]){delete _0x8915d1[_0x3e12('0x1c')];}_0xd53ffd['status'](_0x80f40b)['send'](_0x8915d1);};}function maskClientSecret(_0x8948d8){return _[_0x3e12('0x1d')](_0x8948d8[_0x3e12('0x1e')](0x0,0x3),0x14,'*');}exports['index']=function(_0x472a80,_0x288fed){var _0x549f0c={},_0x2aa3d3={},_0x1177ab={'count':0x0,'rows':[]};var _0x30cbb3=_[_0x3e12('0x1f')](db['CloudProvider'][_0x3e12('0x20')],function(_0x69ec2c){return{'name':_0x69ec2c[_0x3e12('0x21')],'type':_0x69ec2c[_0x3e12('0x22')][_0x3e12('0x23')]};});_0x2aa3d3[_0x3e12('0x24')]=_['map'](_0x30cbb3,_0x3e12('0x1c'));_0x2aa3d3[_0x3e12('0x25')]=_['keys'](_0x472a80[_0x3e12('0x25')]);_0x2aa3d3[_0x3e12('0x26')]=_[_0x3e12('0x27')](_0x2aa3d3[_0x3e12('0x24')],_0x2aa3d3[_0x3e12('0x25')]);_0x549f0c['attributes']=_[_0x3e12('0x27')](_0x2aa3d3[_0x3e12('0x24')],qs[_0x3e12('0x28')](_0x472a80[_0x3e12('0x25')]['fields']));_0x549f0c[_0x3e12('0x29')]=_0x549f0c[_0x3e12('0x29')][_0x3e12('0x2a')]?_0x549f0c[_0x3e12('0x29')]:_0x2aa3d3['model'];if(!_0x472a80[_0x3e12('0x25')][_0x3e12('0x2b')](_0x3e12('0x2c'))){_0x549f0c[_0x3e12('0x11')]=qs[_0x3e12('0x11')](_0x472a80['query'][_0x3e12('0x11')]);_0x549f0c[_0x3e12('0x10')]=qs[_0x3e12('0x10')](_0x472a80[_0x3e12('0x25')][_0x3e12('0x10')]);}_0x549f0c[_0x3e12('0x2d')]=qs[_0x3e12('0x2e')](_0x472a80[_0x3e12('0x25')][_0x3e12('0x2e')]);_0x549f0c[_0x3e12('0x2f')]=qs[_0x3e12('0x26')](_[_0x3e12('0x30')](_0x472a80[_0x3e12('0x25')],_0x2aa3d3[_0x3e12('0x26')]),_0x30cbb3);if(_0x472a80[_0x3e12('0x25')]['filter']){_0x549f0c['where']=_[_0x3e12('0x31')](_0x549f0c[_0x3e12('0x2f')],{'$or':_['map'](_0x30cbb3,function(_0x16358a){if(_0x16358a[_0x3e12('0x22')]!==_0x3e12('0x32')){var _0x5aca07={};_0x5aca07[_0x16358a['name']]={'$like':'%'+_0x472a80[_0x3e12('0x25')][_0x3e12('0x33')]+'%'};return _0x5aca07;}})});}_0x549f0c=_['merge']({},_0x549f0c,_0x472a80[_0x3e12('0x34')]);var _0x34ca49={'where':_0x549f0c[_0x3e12('0x2f')]};return db[_0x3e12('0x35')][_0x3e12('0x13')](_0x34ca49)[_0x3e12('0x17')](function(_0x539b5){_0x1177ab[_0x3e12('0x13')]=_0x539b5;if(_0x472a80[_0x3e12('0x25')][_0x3e12('0x36')]){_0x549f0c[_0x3e12('0x37')]=[{'all':!![]}];}return db[_0x3e12('0x35')][_0x3e12('0x38')](_0x549f0c);})[_0x3e12('0x17')](function(_0x596916){_0x1177ab['rows']=_[_0x3e12('0x1f')](_0x596916,function(_0x278f31){if(_0x278f31[_0x3e12('0x39')]===_0x3e12('0x3a')){var _0x5cdf3b=encryptor[_0x3e12('0x3b')](_0x278f31[_0x3e12('0x3c')]);_0x278f31[_0x3e12('0x3c')]=maskClientSecret(_0x5cdf3b);}return _0x278f31;});return _0x1177ab;})[_0x3e12('0x17')](respondWithFilteredResult(_0x288fed,_0x549f0c))[_0x3e12('0x3d')](handleError(_0x288fed,null));};exports['show']=function(_0x5dd155,_0x4cebfa){var _0x58e047={'raw':!![],'where':{'id':_0x5dd155[_0x3e12('0x3e')]['id']}},_0x3c9840={};_0x3c9840[_0x3e12('0x24')]=_[_0x3e12('0x3f')](db[_0x3e12('0x35')][_0x3e12('0x20')]);_0x3c9840[_0x3e12('0x25')]=_[_0x3e12('0x3f')](_0x5dd155[_0x3e12('0x25')]);_0x3c9840[_0x3e12('0x26')]=_['intersection'](_0x3c9840[_0x3e12('0x24')],_0x3c9840[_0x3e12('0x25')]);_0x58e047[_0x3e12('0x29')]=_['intersection'](_0x3c9840['model'],qs[_0x3e12('0x28')](_0x5dd155['query'][_0x3e12('0x28')]));_0x58e047[_0x3e12('0x29')]=_0x58e047[_0x3e12('0x29')]['length']?_0x58e047[_0x3e12('0x29')]:_0x3c9840[_0x3e12('0x24')];if(_0x5dd155[_0x3e12('0x25')][_0x3e12('0x36')]){_0x58e047[_0x3e12('0x37')]=[{'all':!![]}];}_0x58e047=_[_0x3e12('0x31')]({},_0x58e047,_0x5dd155[_0x3e12('0x34')]);return db[_0x3e12('0x35')][_0x3e12('0x40')](_0x58e047)[_0x3e12('0x17')](handleEntityNotFound(_0x4cebfa,null))[_0x3e12('0x17')](function(_0x4fe1d6){if(_0x4fe1d6[_0x3e12('0x39')]===_0x3e12('0x3a')){var _0x29f9cf=encryptor[_0x3e12('0x3b')](_0x4fe1d6[_0x3e12('0x3c')]);_0x4fe1d6[_0x3e12('0x3c')]=maskClientSecret(_0x29f9cf);}return _0x4fe1d6;})['then'](respondWithResult(_0x4cebfa,null))[_0x3e12('0x3d')](handleError(_0x4cebfa,null));};exports[_0x3e12('0x41')]=function(_0x157a78,_0x503d11){if(!_0x157a78['body'][_0x3e12('0x1c')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x157a78[_0x3e12('0x42')][_0x3e12('0x39')])throw new Error(_0x3e12('0x43'));var _0x55d052=db[_0x3e12('0x35')][_0x3e12('0x20')][_0x3e12('0x39')][_0x3e12('0x44')];if(!_0x55d052[_0x3e12('0x45')](_0x157a78[_0x3e12('0x42')][_0x3e12('0x39')]))throw new Error(_0x3e12('0x46')+_0x55d052['join'](',\x20'));if(_0x157a78[_0x3e12('0x42')]['service']===_0x3e12('0x3a')&&_0x157a78[_0x3e12('0x42')][_0x3e12('0x3c')]){_0x157a78[_0x3e12('0x42')][_0x3e12('0x3c')]=encryptor[_0x3e12('0x47')](_0x157a78[_0x3e12('0x42')][_0x3e12('0x3c')]);}return db[_0x3e12('0x35')][_0x3e12('0x41')](_0x157a78['body'],{})[_0x3e12('0x17')](respondWithResult(_0x503d11,0xc9))[_0x3e12('0x3d')](handleError(_0x503d11,null));};exports[_0x3e12('0x16')]=function(_0x3473d0,_0x48d5e8){if(_0x3473d0['body']['id']){delete _0x3473d0[_0x3e12('0x42')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0x3473d0['params']['id']}})[_0x3e12('0x17')](handleEntityNotFound(_0x48d5e8,null))['then'](function(_0x4e1bf6){if(_0x4e1bf6['service']===_0x3e12('0x3a')&&_0x3473d0['body'][_0x3e12('0x3c')]){_0x3473d0[_0x3e12('0x42')][_0x3e12('0x3c')]=encryptor[_0x3e12('0x47')](_0x3473d0[_0x3e12('0x42')][_0x3e12('0x3c')]);}return _0x4e1bf6;})[_0x3e12('0x17')](saveUpdates(_0x3473d0[_0x3e12('0x42')],null))['then'](respondWithResult(_0x48d5e8,null))[_0x3e12('0x3d')](handleError(_0x48d5e8,null));};exports[_0x3e12('0x18')]=function(_0x5b5b04,_0x3df616){return db[_0x3e12('0x35')][_0x3e12('0x40')]({'where':{'id':_0x5b5b04['params']['id']}})[_0x3e12('0x17')](handleEntityNotFound(_0x3df616,null))[_0x3e12('0x17')](removeEntity(_0x3df616,null))[_0x3e12('0x3d')](handleError(_0x3df616,null));};exports[_0x3e12('0x48')]=function(_0x4852be,_0x4f5ba7){return db['CloudProvider'][_0x3e12('0x49')]({'where':{'id':_0x4852be[_0x3e12('0x3e')]['id']},'raw':!![]})['then'](function(_0x56ed24){if(!_0x56ed24)return _0x4f5ba7[_0x3e12('0x19')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x56ed24,_0x4852be[_0x3e12('0x4a')]['id'])};})[_0x3e12('0x17')](respondWithResult(_0x4f5ba7,null))[_0x3e12('0x3d')](handleError(_0x4f5ba7,null));};exports[_0x3e12('0x4b')]=function(_0x2b187e,_0x5dab08){var _0x2b7160=_0x2b187e[_0x3e12('0x42')];var _0x947b58;var _0x4547b0;if(_0x2b7160[_0x3e12('0x1a')])throw _0x2b7160;redis[_0x3e12('0x4c')](_0x2b7160['state'])['then'](function(_0x3de10b){if(!_0x3de10b)throw new Error(_0x3e12('0x4d'));_0x947b58=JSON[_0x3e12('0x4e')](_0x3de10b);var _0x33f19d=Buffer[_0x3e12('0x4f')](_0x2b7160['state'],_0x3e12('0x50'))[_0x3e12('0x51')](_0x3e12('0x52'));_0x4547b0=JSON[_0x3e12('0x4e')](_0x33f19d);if(!oauth[_0x3e12('0x53')](_0x2b7160['id_token'],_0x947b58[_0x3e12('0x54')]))throw new Error(_0x3e12('0x55'));redis[_0x3e12('0x56')](_0x2b7160[_0x3e12('0x57')]);return oauth[_0x3e12('0x58')](_0x2b7160[_0x3e12('0x59')],_0x947b58);})['then'](function(_0x2cc35e){_0x947b58[_0x3e12('0x5a')]=_0x2cc35e[_0x3e12('0x5b')];_0x947b58[_0x3e12('0x5c')]=_0x2cc35e[_0x3e12('0x5d')];return db[_0x3e12('0x35')]['update']({'data5':_0x947b58[_0x3e12('0x5a')],'data6':_0x947b58[_0x3e12('0x5c')]},{'where':{'id':_0x947b58['id']}});})['then'](function(){oauth[_0x3e12('0x5e')](_0x947b58);socket[_0x3e12('0x5f')](_0x3e12('0x60'),{'id':_0x4547b0['id']});return;})[_0x3e12('0x17')](respondWithStatusCode(_0x5dab08,null))['catch'](function(_0x9fee84){if(_0x4547b0){socket[_0x3e12('0x5f')](_0x3e12('0x61'),{'id':_0x4547b0['id']});}if(!_0x947b58){logger[_0x3e12('0x1a')](_0x3e12('0x62'),_0x9fee84);return _0x5dab08[_0x3e12('0xe')](0x1f4)[_0x3e12('0x63')](_0x9fee84[_0x3e12('0x64')]);}logger[_0x3e12('0x1a')](_0x3e12('0x65'),_0x947b58['id'],JSON[_0x3e12('0x66')](_0x9fee84));});};