5b1ae118a9c325e6633e1d36ceb9307281b65207
[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 _0x60bf=['create','body','Name\x20parameter\x20not\x20specified','values','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','data5','access_token','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','../../components/parsers/qs','../../components/encryptor','../../config/logger','api','defaults','redis','localhost','socket.io-emitter','status','end','limit','undefined','count','offset','set','json','update','then','destroy','sendStatus','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','rows','service','MicrosoftAzure','show','params','options','find','data3','catch'];(function(_0x2ee918,_0x156169){var _0x107a18=function(_0x3a11d4){while(--_0x3a11d4){_0x2ee918['push'](_0x2ee918['shift']());}};_0x107a18(++_0x156169);}(_0x60bf,0x7b));var _0xf60b=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x60bf[_0xa6cc5c];return _0x44803d;};'use strict';var _=require(_0xf60b('0x0'));var Redis=require('ioredis');var qs=require(_0xf60b('0x1'));var encryptor=require(_0xf60b('0x2'));var config=require('../../config/environment');var logger=require(_0xf60b('0x3'))(_0xf60b('0x4'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_[_0xf60b('0x5')](config[_0xf60b('0x6')],{'host':_0xf60b('0x7'),'port':0x18eb});var socket=require(_0xf60b('0x8'))(new Redis(config[_0xf60b('0x6')]));var redis=new Redis(config[_0xf60b('0x6')]);function respondWithStatusCode(_0x4f074a,_0x48fe0b){_0x48fe0b=_0x48fe0b||0xcc;return function(_0x53116d){if(_0x53116d){return _0x4f074a['sendStatus'](_0x48fe0b);}return _0x4f074a[_0xf60b('0x9')](_0x48fe0b)[_0xf60b('0xa')]();};}function respondWithResult(_0x4857b4,_0x340584){_0x340584=_0x340584||0xc8;return function(_0x41ff59){if(_0x41ff59){return _0x4857b4[_0xf60b('0x9')](_0x340584)['json'](_0x41ff59);}};}function respondWithFilteredResult(_0x4ef433,_0x595730){return function(_0x54acb1){if(_0x54acb1){var _0x18e362=typeof _0x595730['offset']==='undefined'&&typeof _0x595730[_0xf60b('0xb')]===_0xf60b('0xc');var _0x1147fa=_0x54acb1['count'];var _0x1a7e1d=_0x18e362?0x0:_0x595730['offset'];var _0x97ef0c=_0x18e362?_0x54acb1[_0xf60b('0xd')]:_0x595730[_0xf60b('0xe')]+_0x595730[_0xf60b('0xb')];var _0x9c4bba;if(_0x97ef0c>=_0x1147fa){_0x97ef0c=_0x1147fa;_0x9c4bba=0xc8;}else{_0x9c4bba=0xce;}_0x4ef433['status'](_0x9c4bba);return _0x4ef433[_0xf60b('0xf')]('Content-Range',_0x1a7e1d+'-'+_0x97ef0c+'/'+_0x1147fa)[_0xf60b('0x10')](_0x54acb1);}return null;};}function saveUpdates(_0x37fde6){return function(_0x47915e){if(_0x47915e){return _0x47915e[_0xf60b('0x11')](_0x37fde6)[_0xf60b('0x12')](function(_0x34f858){return _0x34f858;});}return null;};}function removeEntity(_0x4ffc3c){return function(_0x208ae3){if(_0x208ae3){return _0x208ae3[_0xf60b('0x13')]()[_0xf60b('0x12')](function(){_0x4ffc3c['status'](0xcc)[_0xf60b('0xa')]();});}};}function handleEntityNotFound(_0x4193d3){return function(_0x15b8dc){if(!_0x15b8dc){_0x4193d3[_0xf60b('0x14')](0x194);}return _0x15b8dc;};}function handleError(_0x27f225,_0x27f13c){_0x27f13c=_0x27f13c||0x1f4;return function(_0x37dde3){logger[_0xf60b('0x15')](_0x37dde3[_0xf60b('0x16')]);if(_0x37dde3[_0xf60b('0x17')]){delete _0x37dde3[_0xf60b('0x17')];}_0x27f225[_0xf60b('0x9')](_0x27f13c)[_0xf60b('0x18')](_0x37dde3);};}function maskClientSecret(_0x71a502){return _[_0xf60b('0x19')](_0x71a502[_0xf60b('0x1a')](0x0,0x3),0x14,'*');}exports[_0xf60b('0x1b')]=function(_0x49fa79,_0x6771a4){var _0x5ada9a={},_0x585811={},_0x497497={'count':0x0,'rows':[]};var _0x4115a9=_[_0xf60b('0x1c')](db[_0xf60b('0x1d')][_0xf60b('0x1e')],function(_0x5925be){return{'name':_0x5925be[_0xf60b('0x1f')],'type':_0x5925be['type'][_0xf60b('0x20')]};});_0x585811[_0xf60b('0x21')]=_['map'](_0x4115a9,_0xf60b('0x17'));_0x585811[_0xf60b('0x22')]=_[_0xf60b('0x23')](_0x49fa79[_0xf60b('0x22')]);_0x585811['filters']=_['intersection'](_0x585811[_0xf60b('0x21')],_0x585811[_0xf60b('0x22')]);_0x5ada9a['attributes']=_['intersection'](_0x585811['model'],qs[_0xf60b('0x24')](_0x49fa79[_0xf60b('0x22')]['fields']));_0x5ada9a[_0xf60b('0x25')]=_0x5ada9a[_0xf60b('0x25')][_0xf60b('0x26')]?_0x5ada9a['attributes']:_0x585811[_0xf60b('0x21')];if(!_0x49fa79[_0xf60b('0x22')][_0xf60b('0x27')](_0xf60b('0x28'))){_0x5ada9a[_0xf60b('0xb')]=qs[_0xf60b('0xb')](_0x49fa79[_0xf60b('0x22')]['limit']);_0x5ada9a[_0xf60b('0xe')]=qs[_0xf60b('0xe')](_0x49fa79[_0xf60b('0x22')][_0xf60b('0xe')]);}_0x5ada9a[_0xf60b('0x29')]=qs[_0xf60b('0x2a')](_0x49fa79[_0xf60b('0x22')][_0xf60b('0x2a')]);_0x5ada9a[_0xf60b('0x2b')]=qs[_0xf60b('0x2c')](_['pick'](_0x49fa79[_0xf60b('0x22')],_0x585811['filters']),_0x4115a9);if(_0x49fa79[_0xf60b('0x22')][_0xf60b('0x2d')]){_0x5ada9a[_0xf60b('0x2b')]=_[_0xf60b('0x2e')](_0x5ada9a[_0xf60b('0x2b')],{'$or':_[_0xf60b('0x1c')](_0x4115a9,function(_0x1f4972){if(_0x1f4972['type']!==_0xf60b('0x2f')){var _0x9c872d={};_0x9c872d[_0x1f4972[_0xf60b('0x17')]]={'$like':'%'+_0x49fa79['query'][_0xf60b('0x2d')]+'%'};return _0x9c872d;}})});}_0x5ada9a=_['merge']({},_0x5ada9a,_0x49fa79['options']);var _0x193eee={'where':_0x5ada9a[_0xf60b('0x2b')]};return db['CloudProvider']['count'](_0x193eee)[_0xf60b('0x12')](function(_0xb33235){_0x497497['count']=_0xb33235;if(_0x49fa79[_0xf60b('0x22')][_0xf60b('0x30')]){_0x5ada9a[_0xf60b('0x31')]=[{'all':!![]}];}return db[_0xf60b('0x1d')]['findAll'](_0x5ada9a);})[_0xf60b('0x12')](function(_0xb4cce7){_0x497497[_0xf60b('0x32')]=_[_0xf60b('0x1c')](_0xb4cce7,function(_0x1e0401){if(_0x1e0401[_0xf60b('0x33')]===_0xf60b('0x34')){var _0xfe64fc=encryptor['decryptString'](_0x1e0401['data3']);_0x1e0401['data3']=maskClientSecret(_0xfe64fc);}return _0x1e0401;});return _0x497497;})[_0xf60b('0x12')](respondWithFilteredResult(_0x6771a4,_0x5ada9a))['catch'](handleError(_0x6771a4,null));};exports[_0xf60b('0x35')]=function(_0x3a1735,_0x3e55fe){var _0x45486b={'raw':!![],'where':{'id':_0x3a1735[_0xf60b('0x36')]['id']}},_0x58665e={};_0x58665e[_0xf60b('0x21')]=_[_0xf60b('0x23')](db[_0xf60b('0x1d')][_0xf60b('0x1e')]);_0x58665e['query']=_['keys'](_0x3a1735[_0xf60b('0x22')]);_0x58665e[_0xf60b('0x2c')]=_['intersection'](_0x58665e[_0xf60b('0x21')],_0x58665e[_0xf60b('0x22')]);_0x45486b['attributes']=_['intersection'](_0x58665e[_0xf60b('0x21')],qs['fields'](_0x3a1735['query']['fields']));_0x45486b['attributes']=_0x45486b[_0xf60b('0x25')][_0xf60b('0x26')]?_0x45486b['attributes']:_0x58665e[_0xf60b('0x21')];if(_0x3a1735[_0xf60b('0x22')][_0xf60b('0x30')]){_0x45486b[_0xf60b('0x31')]=[{'all':!![]}];}_0x45486b=_[_0xf60b('0x2e')]({},_0x45486b,_0x3a1735[_0xf60b('0x37')]);return db[_0xf60b('0x1d')][_0xf60b('0x38')](_0x45486b)[_0xf60b('0x12')](handleEntityNotFound(_0x3e55fe,null))[_0xf60b('0x12')](function(_0x41ac3f){if(_0x41ac3f[_0xf60b('0x33')]===_0xf60b('0x34')){var _0x56c972=encryptor['decryptString'](_0x41ac3f[_0xf60b('0x39')]);_0x41ac3f['data3']=maskClientSecret(_0x56c972);}return _0x41ac3f;})[_0xf60b('0x12')](respondWithResult(_0x3e55fe,null))[_0xf60b('0x3a')](handleError(_0x3e55fe,null));};exports[_0xf60b('0x3b')]=function(_0x34af79,_0x19914e){if(!_0x34af79[_0xf60b('0x3c')]['name'])throw new Error(_0xf60b('0x3d'));if(!_0x34af79[_0xf60b('0x3c')][_0xf60b('0x33')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x52812a=db[_0xf60b('0x1d')][_0xf60b('0x1e')][_0xf60b('0x33')][_0xf60b('0x3e')];if(!_0x52812a['includes'](_0x34af79['body']['service']))throw new Error(_0xf60b('0x3f')+_0x52812a['join'](',\x20'));if(_0x34af79['body'][_0xf60b('0x33')]===_0xf60b('0x34')&&_0x34af79[_0xf60b('0x3c')][_0xf60b('0x39')]){_0x34af79[_0xf60b('0x3c')]['data3']=encryptor[_0xf60b('0x40')](_0x34af79[_0xf60b('0x3c')][_0xf60b('0x39')]);}return db[_0xf60b('0x1d')]['create'](_0x34af79[_0xf60b('0x3c')],{})['then'](respondWithResult(_0x19914e,0xc9))[_0xf60b('0x3a')](handleError(_0x19914e,null));};exports[_0xf60b('0x11')]=function(_0x439149,_0x8da1a2){if(_0x439149[_0xf60b('0x3c')]['id']){delete _0x439149['body']['id'];}return db[_0xf60b('0x1d')][_0xf60b('0x38')]({'where':{'id':_0x439149[_0xf60b('0x36')]['id']}})[_0xf60b('0x12')](handleEntityNotFound(_0x8da1a2,null))[_0xf60b('0x12')](function(_0x23b6ba){if(_0x23b6ba['service']===_0xf60b('0x34')&&_0x439149[_0xf60b('0x3c')][_0xf60b('0x39')]){_0x439149[_0xf60b('0x3c')][_0xf60b('0x39')]=encryptor[_0xf60b('0x40')](_0x439149[_0xf60b('0x3c')][_0xf60b('0x39')]);}return _0x23b6ba;})[_0xf60b('0x12')](saveUpdates(_0x439149[_0xf60b('0x3c')],null))['then'](respondWithResult(_0x8da1a2,null))[_0xf60b('0x3a')](handleError(_0x8da1a2,null));};exports['destroy']=function(_0x34a4c3,_0x11c5e6){return db[_0xf60b('0x1d')]['find']({'where':{'id':_0x34a4c3['params']['id']}})[_0xf60b('0x12')](handleEntityNotFound(_0x11c5e6,null))[_0xf60b('0x12')](removeEntity(_0x11c5e6,null))['catch'](handleError(_0x11c5e6,null));};exports[_0xf60b('0x41')]=function(_0x585590,_0x3a13ba){return db[_0xf60b('0x1d')][_0xf60b('0x42')]({'where':{'id':_0x585590[_0xf60b('0x36')]['id']},'raw':!![]})[_0xf60b('0x12')](function(_0x193aa0){if(!_0x193aa0)return _0x3a13ba['sendStatus'](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x193aa0,_0x585590[_0xf60b('0x43')]['id'])};})['then'](respondWithResult(_0x3a13ba,null))[_0xf60b('0x3a')](handleError(_0x3a13ba,null));};exports[_0xf60b('0x44')]=function(_0x547bff,_0x5d45a6){var _0x242b0e=_0x547bff[_0xf60b('0x3c')];var _0x379ab7;var _0xdc24ba;if(_0x242b0e[_0xf60b('0x15')])throw _0x242b0e;redis[_0xf60b('0x45')](_0x242b0e[_0xf60b('0x46')])[_0xf60b('0x12')](function(_0x2022a9){if(!_0x2022a9)throw new Error(_0xf60b('0x47'));_0x379ab7=JSON[_0xf60b('0x48')](_0x2022a9);var _0x48ccfc=Buffer[_0xf60b('0x49')](_0x242b0e[_0xf60b('0x46')],_0xf60b('0x4a'))[_0xf60b('0x4b')](_0xf60b('0x4c'));_0xdc24ba=JSON[_0xf60b('0x48')](_0x48ccfc);if(!oauth[_0xf60b('0x4d')](_0x242b0e[_0xf60b('0x4e')],_0x379ab7[_0xf60b('0x4f')]))throw new Error(_0xf60b('0x50'));redis[_0xf60b('0x51')](_0x242b0e[_0xf60b('0x46')]);return oauth['getOauth2MicrosoftAccessToken'](_0x242b0e['code'],_0x379ab7);})[_0xf60b('0x12')](function(_0x335185){_0x379ab7[_0xf60b('0x52')]=_0x335185[_0xf60b('0x53')];_0x379ab7['data6']=_0x335185[_0xf60b('0x54')];return db[_0xf60b('0x1d')][_0xf60b('0x11')]({'data5':_0x379ab7[_0xf60b('0x52')],'data6':_0x379ab7[_0xf60b('0x55')]},{'where':{'id':_0x379ab7['id']}});})['then'](function(){oauth[_0xf60b('0x56')](_0x379ab7);socket[_0xf60b('0x57')]('microsoftAuthorization:success',{'id':_0xdc24ba['id']});return;})[_0xf60b('0x12')](respondWithStatusCode(_0x5d45a6,null))['catch'](function(_0x3d5b9c){if(_0xdc24ba){socket['emit'](_0xf60b('0x58'),{'id':_0xdc24ba['id']});}if(!_0x379ab7){logger[_0xf60b('0x15')](_0xf60b('0x59'),_0x3d5b9c);return _0x5d45a6[_0xf60b('0x9')](0x1f4)[_0xf60b('0x18')](_0x3d5b9c['message']);}logger[_0xf60b('0x15')](_0xf60b('0x5a'),_0x379ab7['id'],JSON['stringify'](_0x3d5b9c));});};