Built motion from commit 4a17b4ed.|2.6.17
[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 _0xf63a=['oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','from','base64','toString','parse','id_token','Unable\x20to\x20validate\x20id_token','del','code','data5','access_token','refresh_token','update','data6','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','status','offset','undefined','count','limit','set','Content-Range','json','then','destroy','end','sendStatus','error','name','slice','index','map','CloudProvider','fieldName','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','type','options','includeAll','include','findAll','rows','MicrosoftAzure','decryptString','data3','catch','params','service','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','rawAttributes','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','find','findOne','user'];(function(_0x2e8714,_0x4e3288){var _0x4a714f=function(_0xf1d79d){while(--_0xf1d79d){_0x2e8714['push'](_0x2e8714['shift']());}};_0x4a714f(++_0x4e3288);}(_0xf63a,0x17a));var _0xaf63=function(_0x1f885e,_0x83ce8){_0x1f885e=_0x1f885e-0x0;var _0xb76bca=_0xf63a[_0x1f885e];return _0xb76bca;};'use strict';var _=require(_0xaf63('0x0'));var Redis=require(_0xaf63('0x1'));var qs=require(_0xaf63('0x2'));var encryptor=require(_0xaf63('0x3'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xaf63('0x4'));var db=require(_0xaf63('0x5'))['db'];var oauth=require(_0xaf63('0x6'));config[_0xaf63('0x7')]=_[_0xaf63('0x8')](config['redis'],{'host':_0xaf63('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf63('0x7')]));var redis=new Redis(config[_0xaf63('0x7')]);function respondWithStatusCode(_0x464107,_0x38f1b7){_0x38f1b7=_0x38f1b7||0xcc;return function(_0x5d280e){if(_0x5d280e){return _0x464107['sendStatus'](_0x38f1b7);}return _0x464107[_0xaf63('0xa')](_0x38f1b7)['end']();};}function respondWithResult(_0x486f74,_0x4901e5){_0x4901e5=_0x4901e5||0xc8;return function(_0x555434){if(_0x555434){return _0x486f74[_0xaf63('0xa')](_0x4901e5)['json'](_0x555434);}};}function respondWithFilteredResult(_0x1042e4,_0x4c2dfc){return function(_0x1c8b60){if(_0x1c8b60){var _0x94e6fc=typeof _0x4c2dfc[_0xaf63('0xb')]===_0xaf63('0xc')&&typeof _0x4c2dfc['limit']===_0xaf63('0xc');var _0x3ffcee=_0x1c8b60[_0xaf63('0xd')];var _0x2a8ea2=_0x94e6fc?0x0:_0x4c2dfc[_0xaf63('0xb')];var _0x42b491=_0x94e6fc?_0x1c8b60[_0xaf63('0xd')]:_0x4c2dfc[_0xaf63('0xb')]+_0x4c2dfc[_0xaf63('0xe')];var _0x6b8ac1;if(_0x42b491>=_0x3ffcee){_0x42b491=_0x3ffcee;_0x6b8ac1=0xc8;}else{_0x6b8ac1=0xce;}_0x1042e4['status'](_0x6b8ac1);return _0x1042e4[_0xaf63('0xf')](_0xaf63('0x10'),_0x2a8ea2+'-'+_0x42b491+'/'+_0x3ffcee)[_0xaf63('0x11')](_0x1c8b60);}return null;};}function saveUpdates(_0x251154){return function(_0x26cd8e){if(_0x26cd8e){return _0x26cd8e['update'](_0x251154)[_0xaf63('0x12')](function(_0x3e8515){return _0x3e8515;});}return null;};}function removeEntity(_0x7cf550){return function(_0x382801){if(_0x382801){return _0x382801[_0xaf63('0x13')]()['then'](function(){_0x7cf550[_0xaf63('0xa')](0xcc)[_0xaf63('0x14')]();});}};}function handleEntityNotFound(_0x13bc09){return function(_0xfe3d6d){if(!_0xfe3d6d){_0x13bc09[_0xaf63('0x15')](0x194);}return _0xfe3d6d;};}function handleError(_0x143cbf,_0xc7a779){_0xc7a779=_0xc7a779||0x1f4;return function(_0x6760c7){logger[_0xaf63('0x16')](_0x6760c7['stack']);if(_0x6760c7[_0xaf63('0x17')]){delete _0x6760c7[_0xaf63('0x17')];}_0x143cbf[_0xaf63('0xa')](_0xc7a779)['send'](_0x6760c7);};}function maskClientSecret(_0x2484fe){return _['padEnd'](_0x2484fe[_0xaf63('0x18')](0x0,0x3),0x14,'*');}exports[_0xaf63('0x19')]=function(_0x4b99dd,_0x5b8268){var _0x58819c={},_0x87bc4e={},_0x4036ff={'count':0x0,'rows':[]};var _0x968e61=_[_0xaf63('0x1a')](db[_0xaf63('0x1b')]['rawAttributes'],function(_0x43eb89){return{'name':_0x43eb89[_0xaf63('0x1c')],'type':_0x43eb89['type']['key']};});_0x87bc4e['model']=_[_0xaf63('0x1a')](_0x968e61,_0xaf63('0x17'));_0x87bc4e[_0xaf63('0x1d')]=_[_0xaf63('0x1e')](_0x4b99dd[_0xaf63('0x1d')]);_0x87bc4e['filters']=_[_0xaf63('0x1f')](_0x87bc4e[_0xaf63('0x20')],_0x87bc4e[_0xaf63('0x1d')]);_0x58819c[_0xaf63('0x21')]=_[_0xaf63('0x1f')](_0x87bc4e[_0xaf63('0x20')],qs[_0xaf63('0x22')](_0x4b99dd[_0xaf63('0x1d')][_0xaf63('0x22')]));_0x58819c['attributes']=_0x58819c['attributes'][_0xaf63('0x23')]?_0x58819c[_0xaf63('0x21')]:_0x87bc4e[_0xaf63('0x20')];if(!_0x4b99dd[_0xaf63('0x1d')][_0xaf63('0x24')]('nolimit')){_0x58819c[_0xaf63('0xe')]=qs['limit'](_0x4b99dd[_0xaf63('0x1d')][_0xaf63('0xe')]);_0x58819c['offset']=qs[_0xaf63('0xb')](_0x4b99dd[_0xaf63('0x1d')][_0xaf63('0xb')]);}_0x58819c[_0xaf63('0x25')]=qs[_0xaf63('0x26')](_0x4b99dd[_0xaf63('0x1d')]['sort']);_0x58819c[_0xaf63('0x27')]=qs[_0xaf63('0x28')](_[_0xaf63('0x29')](_0x4b99dd[_0xaf63('0x1d')],_0x87bc4e[_0xaf63('0x28')]),_0x968e61);if(_0x4b99dd[_0xaf63('0x1d')]['filter']){_0x58819c['where']=_[_0xaf63('0x2a')](_0x58819c[_0xaf63('0x27')],{'$or':_['map'](_0x968e61,function(_0x4a200e){if(_0x4a200e[_0xaf63('0x2b')]!=='VIRTUAL'){var _0x342a01={};_0x342a01[_0x4a200e['name']]={'$like':'%'+_0x4b99dd[_0xaf63('0x1d')]['filter']+'%'};return _0x342a01;}})});}_0x58819c=_['merge']({},_0x58819c,_0x4b99dd[_0xaf63('0x2c')]);var _0x8bf9d6={'where':_0x58819c[_0xaf63('0x27')]};return db[_0xaf63('0x1b')][_0xaf63('0xd')](_0x8bf9d6)['then'](function(_0x3a4259){_0x4036ff[_0xaf63('0xd')]=_0x3a4259;if(_0x4b99dd['query'][_0xaf63('0x2d')]){_0x58819c[_0xaf63('0x2e')]=[{'all':!![]}];}return db[_0xaf63('0x1b')][_0xaf63('0x2f')](_0x58819c);})['then'](function(_0x35afbd){_0x4036ff[_0xaf63('0x30')]=_['map'](_0x35afbd,function(_0x675d18){if(_0x675d18['service']===_0xaf63('0x31')){var _0x1a73b5=encryptor[_0xaf63('0x32')](_0x675d18[_0xaf63('0x33')]);_0x675d18[_0xaf63('0x33')]=maskClientSecret(_0x1a73b5);}return _0x675d18;});return _0x4036ff;})[_0xaf63('0x12')](respondWithFilteredResult(_0x5b8268,_0x58819c))[_0xaf63('0x34')](handleError(_0x5b8268,null));};exports['show']=function(_0x44c5fd,_0x436eb2){var _0x2536ad={'raw':!![],'where':{'id':_0x44c5fd[_0xaf63('0x35')]['id']}},_0x214139={};_0x214139[_0xaf63('0x20')]=_['keys'](db[_0xaf63('0x1b')]['rawAttributes']);_0x214139[_0xaf63('0x1d')]=_['keys'](_0x44c5fd[_0xaf63('0x1d')]);_0x214139['filters']=_[_0xaf63('0x1f')](_0x214139[_0xaf63('0x20')],_0x214139[_0xaf63('0x1d')]);_0x2536ad[_0xaf63('0x21')]=_[_0xaf63('0x1f')](_0x214139[_0xaf63('0x20')],qs[_0xaf63('0x22')](_0x44c5fd[_0xaf63('0x1d')]['fields']));_0x2536ad[_0xaf63('0x21')]=_0x2536ad[_0xaf63('0x21')][_0xaf63('0x23')]?_0x2536ad[_0xaf63('0x21')]:_0x214139[_0xaf63('0x20')];if(_0x44c5fd['query'][_0xaf63('0x2d')]){_0x2536ad[_0xaf63('0x2e')]=[{'all':!![]}];}_0x2536ad=_[_0xaf63('0x2a')]({},_0x2536ad,_0x44c5fd['options']);return db['CloudProvider']['find'](_0x2536ad)[_0xaf63('0x12')](handleEntityNotFound(_0x436eb2,null))[_0xaf63('0x12')](function(_0x32210d){if(_0x32210d[_0xaf63('0x36')]===_0xaf63('0x31')){var _0x193b61=encryptor[_0xaf63('0x32')](_0x32210d[_0xaf63('0x33')]);_0x32210d[_0xaf63('0x33')]=maskClientSecret(_0x193b61);}return _0x32210d;})[_0xaf63('0x12')](respondWithResult(_0x436eb2,null))['catch'](handleError(_0x436eb2,null));};exports[_0xaf63('0x37')]=function(_0x15e967,_0x1909ff){if(!_0x15e967[_0xaf63('0x38')][_0xaf63('0x17')])throw new Error(_0xaf63('0x39'));if(!_0x15e967[_0xaf63('0x38')]['service'])throw new Error(_0xaf63('0x3a'));var _0x8f521b=db[_0xaf63('0x1b')][_0xaf63('0x3b')][_0xaf63('0x36')][_0xaf63('0x3c')];if(!_0x8f521b[_0xaf63('0x3d')](_0x15e967['body'][_0xaf63('0x36')]))throw new Error(_0xaf63('0x3e')+_0x8f521b[_0xaf63('0x3f')](',\x20'));if(_0x15e967[_0xaf63('0x38')]['service']==='MicrosoftAzure'&&_0x15e967['body'][_0xaf63('0x33')]){_0x15e967['body'][_0xaf63('0x33')]=encryptor['encryptString'](_0x15e967[_0xaf63('0x38')]['data3']);}return db[_0xaf63('0x1b')][_0xaf63('0x37')](_0x15e967[_0xaf63('0x38')],{})['then'](respondWithResult(_0x1909ff,0xc9))[_0xaf63('0x34')](handleError(_0x1909ff,null));};exports['update']=function(_0x2cd1c8,_0x4110d3){if(_0x2cd1c8[_0xaf63('0x38')]['id']){delete _0x2cd1c8[_0xaf63('0x38')]['id'];}return db[_0xaf63('0x1b')][_0xaf63('0x40')]({'where':{'id':_0x2cd1c8[_0xaf63('0x35')]['id']}})[_0xaf63('0x12')](handleEntityNotFound(_0x4110d3,null))[_0xaf63('0x12')](function(_0x236be5){if(_0x236be5[_0xaf63('0x36')]===_0xaf63('0x31')&&_0x2cd1c8[_0xaf63('0x38')]['data3']){_0x2cd1c8[_0xaf63('0x38')][_0xaf63('0x33')]=encryptor['encryptString'](_0x2cd1c8[_0xaf63('0x38')][_0xaf63('0x33')]);}return _0x236be5;})[_0xaf63('0x12')](saveUpdates(_0x2cd1c8['body'],null))['then'](respondWithResult(_0x4110d3,null))[_0xaf63('0x34')](handleError(_0x4110d3,null));};exports[_0xaf63('0x13')]=function(_0x32f216,_0x503f18){return db[_0xaf63('0x1b')]['find']({'where':{'id':_0x32f216[_0xaf63('0x35')]['id']}})[_0xaf63('0x12')](handleEntityNotFound(_0x503f18,null))[_0xaf63('0x12')](removeEntity(_0x503f18,null))[_0xaf63('0x34')](handleError(_0x503f18,null));};exports['oauth2MicrosoftAuthorize']=function(_0x22de89,_0x567bed){return db[_0xaf63('0x1b')][_0xaf63('0x41')]({'where':{'id':_0x22de89[_0xaf63('0x35')]['id']},'raw':!![]})[_0xaf63('0x12')](function(_0x27a710){if(!_0x27a710)return _0x567bed[_0xaf63('0x15')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x27a710,_0x22de89[_0xaf63('0x42')]['id'])};})[_0xaf63('0x12')](respondWithResult(_0x567bed,null))[_0xaf63('0x34')](handleError(_0x567bed,null));};exports[_0xaf63('0x43')]=function(_0x38e9f0,_0x440e76){var _0x5a2515=_0x38e9f0['body'];var _0x4475d5;var _0x5bee85;if(_0x5a2515['error'])throw _0x5a2515;redis[_0xaf63('0x44')](_0x5a2515[_0xaf63('0x45')])[_0xaf63('0x12')](function(_0x3b5434){if(!_0x3b5434)throw new Error(_0xaf63('0x46'));_0x4475d5=JSON['parse'](_0x3b5434);var _0x14096d=Buffer[_0xaf63('0x47')](_0x5a2515[_0xaf63('0x45')],_0xaf63('0x48'))[_0xaf63('0x49')]('ascii');_0x5bee85=JSON[_0xaf63('0x4a')](_0x14096d);if(!oauth['isValidIdToken'](_0x5a2515[_0xaf63('0x4b')],_0x4475d5['oauth2Claims']))throw new Error(_0xaf63('0x4c'));redis[_0xaf63('0x4d')](_0x5a2515[_0xaf63('0x45')]);return oauth['getOauth2MicrosoftAccessToken'](_0x5a2515[_0xaf63('0x4e')],_0x4475d5);})[_0xaf63('0x12')](function(_0x26c1fc){_0x4475d5[_0xaf63('0x4f')]=_0x26c1fc[_0xaf63('0x50')];_0x4475d5['data6']=_0x26c1fc[_0xaf63('0x51')];return db['CloudProvider'][_0xaf63('0x52')]({'data5':_0x4475d5['data5'],'data6':_0x4475d5[_0xaf63('0x53')]},{'where':{'id':_0x4475d5['id']}});})[_0xaf63('0x12')](function(){oauth['startRefreshInterval'](_0x4475d5);socket[_0xaf63('0x54')](_0xaf63('0x55'),{'id':_0x5bee85['id']});return;})[_0xaf63('0x12')](respondWithStatusCode(_0x440e76,null))[_0xaf63('0x34')](function(_0x25504c){if(_0x5bee85){socket['emit'](_0xaf63('0x56'),{'id':_0x5bee85['id']});}if(!_0x4475d5){logger[_0xaf63('0x16')]('Invalid\x20authentication\x20state\x20parameter',_0x25504c);return _0x440e76['status'](0x1f4)['send'](_0x25504c[_0xaf63('0x57')]);}logger[_0xaf63('0x16')](_0xaf63('0x58'),_0x4475d5['id'],JSON['stringify'](_0x25504c));});};