Built motion from commit fade34fd.|2.5.41
[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 _0x8a3b=['params','rawAttributes','length','find','MicrosoftAzure','create','body','Name\x20parameter\x20not\x20specified','service','Service\x20parameter\x20not\x20specified','values','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','base64','toString','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','access_token','refresh_token','data5','data6','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../mysqldb','./cloudProvider.oauth','redis','defaults','socket.io-emitter','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','end','error','name','send','padEnd','slice','map','CloudProvider','fieldName','type','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','decryptString','data3','catch'];(function(_0xe5495f,_0x36e9af){var _0x584c6e=function(_0x4c1cb7){while(--_0x4c1cb7){_0xe5495f['push'](_0xe5495f['shift']());}};_0x584c6e(++_0x36e9af);}(_0x8a3b,0x81));var _0xb8a3=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x8a3b[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0xb8a3('0x0'));var encryptor=require(_0xb8a3('0x1'));var config=require(_0xb8a3('0x2'));var logger=require('../../config/logger')('api');var db=require(_0xb8a3('0x3'))['db'];var oauth=require(_0xb8a3('0x4'));config[_0xb8a3('0x5')]=_[_0xb8a3('0x6')](config[_0xb8a3('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0xb8a3('0x7'))(new Redis(config[_0xb8a3('0x5')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x1bf2c3,_0x464f95){_0x464f95=_0x464f95||0xcc;return function(_0x97a766){if(_0x97a766){return _0x1bf2c3[_0xb8a3('0x8')](_0x464f95);}return _0x1bf2c3[_0xb8a3('0x9')](_0x464f95)['end']();};}function respondWithResult(_0xa5321f,_0x22a19c){_0x22a19c=_0x22a19c||0xc8;return function(_0x20e3c6){if(_0x20e3c6){return _0xa5321f[_0xb8a3('0x9')](_0x22a19c)['json'](_0x20e3c6);}};}function respondWithFilteredResult(_0x2a04cf,_0x32a738){return function(_0x4bd62c){if(_0x4bd62c){var _0x343e50=typeof _0x32a738[_0xb8a3('0xa')]===_0xb8a3('0xb')&&typeof _0x32a738[_0xb8a3('0xc')]===_0xb8a3('0xb');var _0x51c833=_0x4bd62c[_0xb8a3('0xd')];var _0x364d77=_0x343e50?0x0:_0x32a738[_0xb8a3('0xa')];var _0x3e792d=_0x343e50?_0x4bd62c[_0xb8a3('0xd')]:_0x32a738[_0xb8a3('0xa')]+_0x32a738[_0xb8a3('0xc')];var _0xeb40dd;if(_0x3e792d>=_0x51c833){_0x3e792d=_0x51c833;_0xeb40dd=0xc8;}else{_0xeb40dd=0xce;}_0x2a04cf[_0xb8a3('0x9')](_0xeb40dd);return _0x2a04cf[_0xb8a3('0xe')](_0xb8a3('0xf'),_0x364d77+'-'+_0x3e792d+'/'+_0x51c833)[_0xb8a3('0x10')](_0x4bd62c);}return null;};}function saveUpdates(_0x43f712){return function(_0x1609cd){if(_0x1609cd){return _0x1609cd[_0xb8a3('0x11')](_0x43f712)[_0xb8a3('0x12')](function(_0x81b98a){return _0x81b98a;});}return null;};}function removeEntity(_0x303024){return function(_0x5eedaa){if(_0x5eedaa){return _0x5eedaa[_0xb8a3('0x13')]()[_0xb8a3('0x12')](function(){_0x303024[_0xb8a3('0x9')](0xcc)[_0xb8a3('0x14')]();});}};}function handleEntityNotFound(_0x43e008){return function(_0x2fd8d3){if(!_0x2fd8d3){_0x43e008[_0xb8a3('0x8')](0x194);}return _0x2fd8d3;};}function handleError(_0x5c1f49,_0x271ce9){_0x271ce9=_0x271ce9||0x1f4;return function(_0x5d6d81){logger[_0xb8a3('0x15')](_0x5d6d81['stack']);if(_0x5d6d81['name']){delete _0x5d6d81[_0xb8a3('0x16')];}_0x5c1f49['status'](_0x271ce9)[_0xb8a3('0x17')](_0x5d6d81);};}function maskClientSecret(_0x48988f){return _[_0xb8a3('0x18')](_0x48988f[_0xb8a3('0x19')](0x0,0x3),0x14,'*');}exports['index']=function(_0x1b989f,_0x5e959b){var _0x1c1c7d={},_0x379469={},_0x2af4f7={'count':0x0,'rows':[]};var _0x529086=_[_0xb8a3('0x1a')](db[_0xb8a3('0x1b')]['rawAttributes'],function(_0x2b6a2c){return{'name':_0x2b6a2c[_0xb8a3('0x1c')],'type':_0x2b6a2c[_0xb8a3('0x1d')]['key']};});_0x379469[_0xb8a3('0x1e')]=_[_0xb8a3('0x1a')](_0x529086,_0xb8a3('0x16'));_0x379469[_0xb8a3('0x1f')]=_[_0xb8a3('0x20')](_0x1b989f['query']);_0x379469[_0xb8a3('0x21')]=_[_0xb8a3('0x22')](_0x379469[_0xb8a3('0x1e')],_0x379469[_0xb8a3('0x1f')]);_0x1c1c7d[_0xb8a3('0x23')]=_['intersection'](_0x379469[_0xb8a3('0x1e')],qs['fields'](_0x1b989f[_0xb8a3('0x1f')][_0xb8a3('0x24')]));_0x1c1c7d[_0xb8a3('0x23')]=_0x1c1c7d[_0xb8a3('0x23')]['length']?_0x1c1c7d[_0xb8a3('0x23')]:_0x379469[_0xb8a3('0x1e')];if(!_0x1b989f[_0xb8a3('0x1f')]['hasOwnProperty']('nolimit')){_0x1c1c7d[_0xb8a3('0xc')]=qs[_0xb8a3('0xc')](_0x1b989f['query'][_0xb8a3('0xc')]);_0x1c1c7d[_0xb8a3('0xa')]=qs[_0xb8a3('0xa')](_0x1b989f[_0xb8a3('0x1f')][_0xb8a3('0xa')]);}_0x1c1c7d[_0xb8a3('0x25')]=qs[_0xb8a3('0x26')](_0x1b989f['query']['sort']);_0x1c1c7d[_0xb8a3('0x27')]=qs[_0xb8a3('0x21')](_[_0xb8a3('0x28')](_0x1b989f[_0xb8a3('0x1f')],_0x379469['filters']),_0x529086);if(_0x1b989f[_0xb8a3('0x1f')][_0xb8a3('0x29')]){_0x1c1c7d['where']=_[_0xb8a3('0x2a')](_0x1c1c7d['where'],{'$or':_[_0xb8a3('0x1a')](_0x529086,function(_0x356c78){if(_0x356c78['type']!=='VIRTUAL'){var _0x28da95={};_0x28da95[_0x356c78[_0xb8a3('0x16')]]={'$like':'%'+_0x1b989f['query']['filter']+'%'};return _0x28da95;}})});}_0x1c1c7d=_[_0xb8a3('0x2a')]({},_0x1c1c7d,_0x1b989f[_0xb8a3('0x2b')]);var _0x1b9b53={'where':_0x1c1c7d['where']};return db[_0xb8a3('0x1b')][_0xb8a3('0xd')](_0x1b9b53)[_0xb8a3('0x12')](function(_0x3a32c2){_0x2af4f7[_0xb8a3('0xd')]=_0x3a32c2;if(_0x1b989f['query'][_0xb8a3('0x2c')]){_0x1c1c7d[_0xb8a3('0x2d')]=[{'all':!![]}];}return db[_0xb8a3('0x1b')][_0xb8a3('0x2e')](_0x1c1c7d);})[_0xb8a3('0x12')](function(_0x2f1043){_0x2af4f7[_0xb8a3('0x2f')]=_[_0xb8a3('0x1a')](_0x2f1043,function(_0x352790){if(_0x352790['service']==='MicrosoftAzure'){var _0x5d7c71=encryptor[_0xb8a3('0x30')](_0x352790[_0xb8a3('0x31')]);_0x352790[_0xb8a3('0x31')]=maskClientSecret(_0x5d7c71);}return _0x352790;});return _0x2af4f7;})[_0xb8a3('0x12')](respondWithFilteredResult(_0x5e959b,_0x1c1c7d))[_0xb8a3('0x32')](handleError(_0x5e959b,null));};exports['show']=function(_0x3ef600,_0x1f88a7){var _0x46e0a0={'raw':!![],'where':{'id':_0x3ef600[_0xb8a3('0x33')]['id']}},_0x55bf1d={};_0x55bf1d['model']=_[_0xb8a3('0x20')](db['CloudProvider'][_0xb8a3('0x34')]);_0x55bf1d[_0xb8a3('0x1f')]=_[_0xb8a3('0x20')](_0x3ef600[_0xb8a3('0x1f')]);_0x55bf1d[_0xb8a3('0x21')]=_[_0xb8a3('0x22')](_0x55bf1d[_0xb8a3('0x1e')],_0x55bf1d['query']);_0x46e0a0[_0xb8a3('0x23')]=_[_0xb8a3('0x22')](_0x55bf1d['model'],qs[_0xb8a3('0x24')](_0x3ef600[_0xb8a3('0x1f')][_0xb8a3('0x24')]));_0x46e0a0[_0xb8a3('0x23')]=_0x46e0a0[_0xb8a3('0x23')][_0xb8a3('0x35')]?_0x46e0a0[_0xb8a3('0x23')]:_0x55bf1d['model'];if(_0x3ef600[_0xb8a3('0x1f')]['includeAll']){_0x46e0a0[_0xb8a3('0x2d')]=[{'all':!![]}];}_0x46e0a0=_['merge']({},_0x46e0a0,_0x3ef600['options']);return db['CloudProvider'][_0xb8a3('0x36')](_0x46e0a0)[_0xb8a3('0x12')](handleEntityNotFound(_0x1f88a7,null))['then'](function(_0x290be1){if(_0x290be1['service']===_0xb8a3('0x37')){var _0x1386d6=encryptor['decryptString'](_0x290be1[_0xb8a3('0x31')]);_0x290be1[_0xb8a3('0x31')]=maskClientSecret(_0x1386d6);}return _0x290be1;})['then'](respondWithResult(_0x1f88a7,null))[_0xb8a3('0x32')](handleError(_0x1f88a7,null));};exports[_0xb8a3('0x38')]=function(_0x171851,_0x584aba){if(!_0x171851[_0xb8a3('0x39')][_0xb8a3('0x16')])throw new Error(_0xb8a3('0x3a'));if(!_0x171851[_0xb8a3('0x39')][_0xb8a3('0x3b')])throw new Error(_0xb8a3('0x3c'));var _0x33025d=db[_0xb8a3('0x1b')]['rawAttributes'][_0xb8a3('0x3b')][_0xb8a3('0x3d')];if(!_0x33025d['includes'](_0x171851['body'][_0xb8a3('0x3b')]))throw new Error(_0xb8a3('0x3e')+_0x33025d['join'](',\x20'));if(_0x171851[_0xb8a3('0x39')][_0xb8a3('0x3b')]===_0xb8a3('0x37')&&_0x171851[_0xb8a3('0x39')][_0xb8a3('0x31')]){_0x171851[_0xb8a3('0x39')]['data3']=encryptor['encryptString'](_0x171851[_0xb8a3('0x39')][_0xb8a3('0x31')]);}return db[_0xb8a3('0x1b')][_0xb8a3('0x38')](_0x171851[_0xb8a3('0x39')],{})[_0xb8a3('0x12')](respondWithResult(_0x584aba,0xc9))[_0xb8a3('0x32')](handleError(_0x584aba,null));};exports[_0xb8a3('0x11')]=function(_0x1c603d,_0x4e3936){if(_0x1c603d[_0xb8a3('0x39')]['id']){delete _0x1c603d[_0xb8a3('0x39')]['id'];}return db[_0xb8a3('0x1b')][_0xb8a3('0x36')]({'where':{'id':_0x1c603d[_0xb8a3('0x33')]['id']}})['then'](handleEntityNotFound(_0x4e3936,null))[_0xb8a3('0x12')](function(_0x20067b){if(_0x20067b[_0xb8a3('0x3b')]===_0xb8a3('0x37')&&_0x1c603d['body'][_0xb8a3('0x31')]){_0x1c603d[_0xb8a3('0x39')][_0xb8a3('0x31')]=encryptor[_0xb8a3('0x3f')](_0x1c603d['body'][_0xb8a3('0x31')]);}return _0x20067b;})[_0xb8a3('0x12')](saveUpdates(_0x1c603d[_0xb8a3('0x39')],null))['then'](respondWithResult(_0x4e3936,null))['catch'](handleError(_0x4e3936,null));};exports[_0xb8a3('0x13')]=function(_0x32ddf3,_0x38ce2c){return db['CloudProvider']['find']({'where':{'id':_0x32ddf3[_0xb8a3('0x33')]['id']}})[_0xb8a3('0x12')](handleEntityNotFound(_0x38ce2c,null))[_0xb8a3('0x12')](removeEntity(_0x38ce2c,null))[_0xb8a3('0x32')](handleError(_0x38ce2c,null));};exports[_0xb8a3('0x40')]=function(_0x4fed1c,_0xfdb01a){return db[_0xb8a3('0x1b')][_0xb8a3('0x41')]({'where':{'id':_0x4fed1c[_0xb8a3('0x33')]['id']},'raw':!![]})[_0xb8a3('0x12')](function(_0x4aef44){if(!_0x4aef44)return _0xfdb01a[_0xb8a3('0x8')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x4aef44,_0x4fed1c[_0xb8a3('0x42')]['id'])};})[_0xb8a3('0x12')](respondWithResult(_0xfdb01a,null))[_0xb8a3('0x32')](handleError(_0xfdb01a,null));};exports[_0xb8a3('0x43')]=function(_0x40b077,_0xc5f3a0){var _0x168c7f=_0x40b077[_0xb8a3('0x39')];var _0x57b476;var _0x4f73b2;if(_0x168c7f[_0xb8a3('0x15')])throw _0x168c7f;redis[_0xb8a3('0x44')](_0x168c7f[_0xb8a3('0x45')])['then'](function(_0x2aabe5){if(!_0x2aabe5)throw new Error(_0xb8a3('0x46'));_0x57b476=JSON[_0xb8a3('0x47')](_0x2aabe5);var _0x586b56=Buffer['from'](_0x168c7f['state'],_0xb8a3('0x48'))[_0xb8a3('0x49')]('ascii');_0x4f73b2=JSON[_0xb8a3('0x47')](_0x586b56);if(!oauth[_0xb8a3('0x4a')](_0x168c7f[_0xb8a3('0x4b')],_0x57b476[_0xb8a3('0x4c')]))throw new Error(_0xb8a3('0x4d'));redis[_0xb8a3('0x4e')](_0x168c7f[_0xb8a3('0x45')]);return oauth[_0xb8a3('0x4f')](_0x168c7f[_0xb8a3('0x50')],_0x57b476);})[_0xb8a3('0x12')](function(_0x4a1d2f){_0x57b476['data5']=_0x4a1d2f[_0xb8a3('0x51')];_0x57b476['data6']=_0x4a1d2f[_0xb8a3('0x52')];return db[_0xb8a3('0x1b')][_0xb8a3('0x11')]({'data5':_0x57b476[_0xb8a3('0x53')],'data6':_0x57b476[_0xb8a3('0x54')]},{'where':{'id':_0x57b476['id']}});})['then'](function(){oauth['startRefreshInterval'](_0x57b476);socket['emit'](_0xb8a3('0x55'),{'id':_0x4f73b2['id']});return;})[_0xb8a3('0x12')](respondWithStatusCode(_0xc5f3a0,null))['catch'](function(_0x4d9be2){if(_0x4f73b2){socket['emit'](_0xb8a3('0x56'),{'id':_0x4f73b2['id']});}if(!_0x57b476){logger[_0xb8a3('0x15')](_0xb8a3('0x57'),_0x4d9be2);return _0xc5f3a0['status'](0x1f4)[_0xb8a3('0x17')](_0x4d9be2[_0xb8a3('0x58')]);}logger[_0xb8a3('0x15')](_0xb8a3('0x59'),_0x57b476['id'],_0x4d9be2);});};