37aa1dc6af12c00a9567d978b849ecc959373a43
[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 _0x09a0=['find','Name\x20parameter\x20not\x20specified','body','values','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','oauth2MicrosoftAuthorize','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','from','state','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','data6','refresh_token','startRefreshInterval','microsoftAuthorization:success','emit','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','defaults','redis','sendStatus','status','end','json','offset','count','limit','set','Content-Range','update','then','destroy','error','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','service','MicrosoftAzure','decryptString','data3','catch','show','params','length'];(function(_0x324642,_0x1adc4e){var _0x16d6f6=function(_0x30d3c5){while(--_0x30d3c5){_0x324642['push'](_0x324642['shift']());}};_0x16d6f6(++_0x1adc4e);}(_0x09a0,0x191));var _0x009a=function(_0x212212,_0x45c310){_0x212212=_0x212212-0x0;var _0x351f5a=_0x09a0[_0x212212];return _0x351f5a;};'use strict';var _=require(_0x009a('0x0'));var Redis=require(_0x009a('0x1'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x009a('0x2'));var config=require(_0x009a('0x3'));var logger=require(_0x009a('0x4'))(_0x009a('0x5'));var db=require(_0x009a('0x6'))['db'];var oauth=require(_0x009a('0x7'));config['redis']=_[_0x009a('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var redis=new Redis(config[_0x009a('0x9')]);function respondWithStatusCode(_0x347559,_0x4770ce){_0x4770ce=_0x4770ce||0xcc;return function(_0x545155){if(_0x545155){return _0x347559[_0x009a('0xa')](_0x4770ce);}return _0x347559[_0x009a('0xb')](_0x4770ce)[_0x009a('0xc')]();};}function respondWithResult(_0x50e3c1,_0x31bb9d){_0x31bb9d=_0x31bb9d||0xc8;return function(_0x473512){if(_0x473512){return _0x50e3c1['status'](_0x31bb9d)[_0x009a('0xd')](_0x473512);}};}function respondWithFilteredResult(_0x318ea1,_0x5d48b3){return function(_0x5addfd){if(_0x5addfd){var _0x511b81=typeof _0x5d48b3[_0x009a('0xe')]==='undefined'&&typeof _0x5d48b3['limit']==='undefined';var _0x62b735=_0x5addfd[_0x009a('0xf')];var _0x41c02a=_0x511b81?0x0:_0x5d48b3['offset'];var _0x10897b=_0x511b81?_0x5addfd['count']:_0x5d48b3['offset']+_0x5d48b3[_0x009a('0x10')];var _0x1316f7;if(_0x10897b>=_0x62b735){_0x10897b=_0x62b735;_0x1316f7=0xc8;}else{_0x1316f7=0xce;}_0x318ea1[_0x009a('0xb')](_0x1316f7);return _0x318ea1[_0x009a('0x11')](_0x009a('0x12'),_0x41c02a+'-'+_0x10897b+'/'+_0x62b735)[_0x009a('0xd')](_0x5addfd);}return null;};}function saveUpdates(_0x1643ad){return function(_0x7d7837){if(_0x7d7837){return _0x7d7837[_0x009a('0x13')](_0x1643ad)[_0x009a('0x14')](function(_0xeccff){return _0xeccff;});}return null;};}function removeEntity(_0x10677e){return function(_0x5acc9f){if(_0x5acc9f){return _0x5acc9f[_0x009a('0x15')]()['then'](function(){_0x10677e[_0x009a('0xb')](0xcc)[_0x009a('0xc')]();});}};}function handleEntityNotFound(_0x29bfbe){return function(_0x2e7f14){if(!_0x2e7f14){_0x29bfbe['sendStatus'](0x194);}return _0x2e7f14;};}function handleError(_0xd66d51,_0x30cf18){_0x30cf18=_0x30cf18||0x1f4;return function(_0x2f0b3c){logger[_0x009a('0x16')](_0x2f0b3c['stack']);if(_0x2f0b3c[_0x009a('0x17')]){delete _0x2f0b3c[_0x009a('0x17')];}_0xd66d51[_0x009a('0xb')](_0x30cf18)[_0x009a('0x18')](_0x2f0b3c);};}function maskClientSecret(_0x527506){return _[_0x009a('0x19')](_0x527506[_0x009a('0x1a')](0x0,0x3),0x14,'*');}exports[_0x009a('0x1b')]=function(_0x5ab2a4,_0x2c8b3a){var _0x1381de={},_0x10fa70={},_0x12ff93={'count':0x0,'rows':[]};var _0x3dc4fb=_[_0x009a('0x1c')](db[_0x009a('0x1d')][_0x009a('0x1e')],function(_0x22160f){return{'name':_0x22160f[_0x009a('0x1f')],'type':_0x22160f[_0x009a('0x20')][_0x009a('0x21')]};});_0x10fa70['model']=_[_0x009a('0x1c')](_0x3dc4fb,_0x009a('0x17'));_0x10fa70[_0x009a('0x22')]=_[_0x009a('0x23')](_0x5ab2a4['query']);_0x10fa70[_0x009a('0x24')]=_[_0x009a('0x25')](_0x10fa70[_0x009a('0x26')],_0x10fa70[_0x009a('0x22')]);_0x1381de[_0x009a('0x27')]=_[_0x009a('0x25')](_0x10fa70[_0x009a('0x26')],qs['fields'](_0x5ab2a4[_0x009a('0x22')][_0x009a('0x28')]));_0x1381de['attributes']=_0x1381de[_0x009a('0x27')]['length']?_0x1381de['attributes']:_0x10fa70[_0x009a('0x26')];if(!_0x5ab2a4[_0x009a('0x22')][_0x009a('0x29')](_0x009a('0x2a'))){_0x1381de[_0x009a('0x10')]=qs['limit'](_0x5ab2a4[_0x009a('0x22')][_0x009a('0x10')]);_0x1381de[_0x009a('0xe')]=qs[_0x009a('0xe')](_0x5ab2a4[_0x009a('0x22')][_0x009a('0xe')]);}_0x1381de['order']=qs[_0x009a('0x2b')](_0x5ab2a4[_0x009a('0x22')][_0x009a('0x2b')]);_0x1381de['where']=qs[_0x009a('0x24')](_['pick'](_0x5ab2a4[_0x009a('0x22')],_0x10fa70['filters']),_0x3dc4fb);if(_0x5ab2a4['query'][_0x009a('0x2c')]){_0x1381de[_0x009a('0x2d')]=_[_0x009a('0x2e')](_0x1381de['where'],{'$or':_[_0x009a('0x1c')](_0x3dc4fb,function(_0x57603e){if(_0x57603e[_0x009a('0x20')]!==_0x009a('0x2f')){var _0x2c27fc={};_0x2c27fc[_0x57603e[_0x009a('0x17')]]={'$like':'%'+_0x5ab2a4[_0x009a('0x22')][_0x009a('0x2c')]+'%'};return _0x2c27fc;}})});}_0x1381de=_[_0x009a('0x2e')]({},_0x1381de,_0x5ab2a4[_0x009a('0x30')]);var _0x37312d={'where':_0x1381de[_0x009a('0x2d')]};return db[_0x009a('0x1d')][_0x009a('0xf')](_0x37312d)[_0x009a('0x14')](function(_0x11f701){_0x12ff93[_0x009a('0xf')]=_0x11f701;if(_0x5ab2a4[_0x009a('0x22')][_0x009a('0x31')]){_0x1381de['include']=[{'all':!![]}];}return db[_0x009a('0x1d')][_0x009a('0x32')](_0x1381de);})[_0x009a('0x14')](function(_0x98012e){_0x12ff93['rows']=_[_0x009a('0x1c')](_0x98012e,function(_0x43ea5b){if(_0x43ea5b[_0x009a('0x33')]===_0x009a('0x34')){var _0x45241e=encryptor[_0x009a('0x35')](_0x43ea5b['data3']);_0x43ea5b[_0x009a('0x36')]=maskClientSecret(_0x45241e);}return _0x43ea5b;});return _0x12ff93;})[_0x009a('0x14')](respondWithFilteredResult(_0x2c8b3a,_0x1381de))[_0x009a('0x37')](handleError(_0x2c8b3a,null));};exports[_0x009a('0x38')]=function(_0x2a97a6,_0x2c4aa6){var _0x4d923f={'raw':!![],'where':{'id':_0x2a97a6[_0x009a('0x39')]['id']}},_0x40d44e={};_0x40d44e[_0x009a('0x26')]=_[_0x009a('0x23')](db['CloudProvider'][_0x009a('0x1e')]);_0x40d44e[_0x009a('0x22')]=_[_0x009a('0x23')](_0x2a97a6['query']);_0x40d44e['filters']=_[_0x009a('0x25')](_0x40d44e[_0x009a('0x26')],_0x40d44e['query']);_0x4d923f[_0x009a('0x27')]=_['intersection'](_0x40d44e[_0x009a('0x26')],qs[_0x009a('0x28')](_0x2a97a6[_0x009a('0x22')][_0x009a('0x28')]));_0x4d923f['attributes']=_0x4d923f['attributes'][_0x009a('0x3a')]?_0x4d923f[_0x009a('0x27')]:_0x40d44e[_0x009a('0x26')];if(_0x2a97a6[_0x009a('0x22')][_0x009a('0x31')]){_0x4d923f['include']=[{'all':!![]}];}_0x4d923f=_['merge']({},_0x4d923f,_0x2a97a6[_0x009a('0x30')]);return db[_0x009a('0x1d')][_0x009a('0x3b')](_0x4d923f)['then'](handleEntityNotFound(_0x2c4aa6,null))[_0x009a('0x14')](function(_0x565175){if(_0x565175[_0x009a('0x33')]==='MicrosoftAzure'){var _0x3be605=encryptor[_0x009a('0x35')](_0x565175[_0x009a('0x36')]);_0x565175[_0x009a('0x36')]=maskClientSecret(_0x3be605);}return _0x565175;})[_0x009a('0x14')](respondWithResult(_0x2c4aa6,null))['catch'](handleError(_0x2c4aa6,null));};exports['create']=function(_0x2de557,_0x1c77fc){if(!_0x2de557['body'][_0x009a('0x17')])throw new Error(_0x009a('0x3c'));if(!_0x2de557[_0x009a('0x3d')][_0x009a('0x33')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x22bfa0=db[_0x009a('0x1d')][_0x009a('0x1e')][_0x009a('0x33')][_0x009a('0x3e')];if(!_0x22bfa0['includes'](_0x2de557['body'][_0x009a('0x33')]))throw new Error(_0x009a('0x3f')+_0x22bfa0[_0x009a('0x40')](',\x20'));if(_0x2de557['body'][_0x009a('0x33')]===_0x009a('0x34')&&_0x2de557['body'][_0x009a('0x36')]){_0x2de557[_0x009a('0x3d')][_0x009a('0x36')]=encryptor['encryptString'](_0x2de557['body'][_0x009a('0x36')]);}return db[_0x009a('0x1d')]['create'](_0x2de557[_0x009a('0x3d')],{})[_0x009a('0x14')](respondWithResult(_0x1c77fc,0xc9))[_0x009a('0x37')](handleError(_0x1c77fc,null));};exports[_0x009a('0x13')]=function(_0xed6156,_0x3ddb8e){if(_0xed6156['body']['id']){delete _0xed6156[_0x009a('0x3d')]['id'];}return db['CloudProvider']['find']({'where':{'id':_0xed6156[_0x009a('0x39')]['id']}})[_0x009a('0x14')](handleEntityNotFound(_0x3ddb8e,null))['then'](function(_0x235f2f){if(_0x235f2f[_0x009a('0x33')]===_0x009a('0x34')&&_0xed6156['body'][_0x009a('0x36')]){_0xed6156[_0x009a('0x3d')][_0x009a('0x36')]=encryptor[_0x009a('0x41')](_0xed6156[_0x009a('0x3d')][_0x009a('0x36')]);}return _0x235f2f;})[_0x009a('0x14')](saveUpdates(_0xed6156['body'],null))[_0x009a('0x14')](respondWithResult(_0x3ddb8e,null))[_0x009a('0x37')](handleError(_0x3ddb8e,null));};exports['destroy']=function(_0x45e8bb,_0x23c94b){return db[_0x009a('0x1d')]['find']({'where':{'id':_0x45e8bb[_0x009a('0x39')]['id']}})['then'](handleEntityNotFound(_0x23c94b,null))[_0x009a('0x14')](removeEntity(_0x23c94b,null))[_0x009a('0x37')](handleError(_0x23c94b,null));};exports[_0x009a('0x42')]=function(_0x42c4e1,_0x6bb874){return db[_0x009a('0x1d')]['findOne']({'where':{'id':_0x42c4e1[_0x009a('0x39')]['id']},'raw':!![]})[_0x009a('0x14')](function(_0x5d1bcd){if(!_0x5d1bcd)return _0x6bb874[_0x009a('0xa')](0x194);return{'url':oauth[_0x009a('0x43')](_0x5d1bcd,_0x42c4e1['user']['id'])};})[_0x009a('0x14')](respondWithResult(_0x6bb874,null))[_0x009a('0x37')](handleError(_0x6bb874,null));};exports[_0x009a('0x44')]=function(_0x535c63,_0x291286){var _0x13593c=_0x535c63[_0x009a('0x3d')];var _0x1ebeaa;var _0x3d0121;if(_0x13593c[_0x009a('0x16')])throw _0x13593c;redis[_0x009a('0x45')](_0x13593c['state'])[_0x009a('0x14')](function(_0x2980bc){if(!_0x2980bc)throw new Error(_0x009a('0x46'));_0x1ebeaa=JSON[_0x009a('0x47')](_0x2980bc);var _0x297e94=Buffer[_0x009a('0x48')](_0x13593c[_0x009a('0x49')],'base64')[_0x009a('0x4a')](_0x009a('0x4b'));_0x3d0121=JSON[_0x009a('0x47')](_0x297e94);if(!oauth[_0x009a('0x4c')](_0x13593c[_0x009a('0x4d')],_0x1ebeaa[_0x009a('0x4e')]))throw new Error(_0x009a('0x4f'));redis['del'](_0x13593c['state']);return oauth[_0x009a('0x50')](_0x13593c[_0x009a('0x51')],_0x1ebeaa);})[_0x009a('0x14')](function(_0x2a3a72){_0x1ebeaa[_0x009a('0x52')]=_0x2a3a72['access_token'];_0x1ebeaa[_0x009a('0x53')]=_0x2a3a72[_0x009a('0x54')];return db['CloudProvider']['update']({'data5':_0x1ebeaa['data5'],'data6':_0x1ebeaa[_0x009a('0x53')]},{'where':{'id':_0x1ebeaa['id']}});})[_0x009a('0x14')](function(){oauth[_0x009a('0x55')](_0x1ebeaa);socket['emit'](_0x009a('0x56'),{'id':_0x3d0121['id']});return;})[_0x009a('0x14')](respondWithStatusCode(_0x291286,null))['catch'](function(_0x5d9796){if(_0x3d0121){socket[_0x009a('0x57')]('microsoftAuthorization:error',{'id':_0x3d0121['id']});}if(!_0x1ebeaa){logger[_0x009a('0x16')](_0x009a('0x58'),_0x5d9796);return _0x291286[_0x009a('0xb')](0x1f4)[_0x009a('0x18')](_0x5d9796[_0x009a('0x59')]);}logger[_0x009a('0x16')](_0x009a('0x5a'),_0x1ebeaa['id'],JSON[_0x009a('0x5b')](_0x5d9796));});};