Built motion from commit 538092ac.|2.6.10
[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 _0x9628=['message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','ioredis','../../components/parsers/qs','../../config/environment','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','status','end','json','offset','undefined','limit','count','set','update','then','sendStatus','error','name','send','padEnd','index','map','CloudProvider','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','service','MicrosoftAzure','data3','catch','show','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','find','params','destroy','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','id_token','Unable\x20to\x20validate\x20id_token','del','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:error'];(function(_0x12229b,_0x311a05){var _0x27af9c=function(_0x472b5d){while(--_0x472b5d){_0x12229b['push'](_0x12229b['shift']());}};_0x27af9c(++_0x311a05);}(_0x9628,0x166));var _0x8962=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x9628[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require('lodash');var Redis=require(_0x8962('0x0'));var qs=require(_0x8962('0x1'));var encryptor=require('../../components/encryptor');var config=require(_0x8962('0x2'));var logger=require('../../config/logger')(_0x8962('0x3'));var db=require(_0x8962('0x4'))['db'];var oauth=require(_0x8962('0x5'));config[_0x8962('0x6')]=_[_0x8962('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8962('0x6')]));var redis=new Redis(config[_0x8962('0x6')]);function respondWithStatusCode(_0x313878,_0xca630c){_0xca630c=_0xca630c||0xcc;return function(_0x1ec3bf){if(_0x1ec3bf){return _0x313878['sendStatus'](_0xca630c);}return _0x313878[_0x8962('0x8')](_0xca630c)[_0x8962('0x9')]();};}function respondWithResult(_0x5172a3,_0x16a02f){_0x16a02f=_0x16a02f||0xc8;return function(_0x235f98){if(_0x235f98){return _0x5172a3[_0x8962('0x8')](_0x16a02f)[_0x8962('0xa')](_0x235f98);}};}function respondWithFilteredResult(_0x343414,_0xb3b437){return function(_0x5a298d){if(_0x5a298d){var _0x2cd908=typeof _0xb3b437[_0x8962('0xb')]===_0x8962('0xc')&&typeof _0xb3b437[_0x8962('0xd')]===_0x8962('0xc');var _0x1dfa14=_0x5a298d[_0x8962('0xe')];var _0x399a04=_0x2cd908?0x0:_0xb3b437['offset'];var _0x2a734d=_0x2cd908?_0x5a298d[_0x8962('0xe')]:_0xb3b437['offset']+_0xb3b437['limit'];var _0x379df2;if(_0x2a734d>=_0x1dfa14){_0x2a734d=_0x1dfa14;_0x379df2=0xc8;}else{_0x379df2=0xce;}_0x343414[_0x8962('0x8')](_0x379df2);return _0x343414[_0x8962('0xf')]('Content-Range',_0x399a04+'-'+_0x2a734d+'/'+_0x1dfa14)[_0x8962('0xa')](_0x5a298d);}return null;};}function saveUpdates(_0x2570ef){return function(_0x79282c){if(_0x79282c){return _0x79282c[_0x8962('0x10')](_0x2570ef)[_0x8962('0x11')](function(_0x302668){return _0x302668;});}return null;};}function removeEntity(_0x5a190b){return function(_0x2320f8){if(_0x2320f8){return _0x2320f8['destroy']()[_0x8962('0x11')](function(){_0x5a190b['status'](0xcc)[_0x8962('0x9')]();});}};}function handleEntityNotFound(_0x508512){return function(_0x4b5ca2){if(!_0x4b5ca2){_0x508512[_0x8962('0x12')](0x194);}return _0x4b5ca2;};}function handleError(_0x245d41,_0x4b83a6){_0x4b83a6=_0x4b83a6||0x1f4;return function(_0x11e9ca){logger[_0x8962('0x13')](_0x11e9ca['stack']);if(_0x11e9ca[_0x8962('0x14')]){delete _0x11e9ca[_0x8962('0x14')];}_0x245d41[_0x8962('0x8')](_0x4b83a6)[_0x8962('0x15')](_0x11e9ca);};}function maskClientSecret(_0x50a01d){return _[_0x8962('0x16')](_0x50a01d['slice'](0x0,0x3),0x14,'*');}exports[_0x8962('0x17')]=function(_0x4cda3c,_0x19bcd7){var _0xe247c0={},_0x24e976={},_0x249baf={'count':0x0,'rows':[]};var _0x22b3ea=_[_0x8962('0x18')](db[_0x8962('0x19')][_0x8962('0x1a')],function(_0x57de17){return{'name':_0x57de17[_0x8962('0x1b')],'type':_0x57de17[_0x8962('0x1c')]['key']};});_0x24e976[_0x8962('0x1d')]=_[_0x8962('0x18')](_0x22b3ea,_0x8962('0x14'));_0x24e976['query']=_[_0x8962('0x1e')](_0x4cda3c[_0x8962('0x1f')]);_0x24e976[_0x8962('0x20')]=_[_0x8962('0x21')](_0x24e976[_0x8962('0x1d')],_0x24e976[_0x8962('0x1f')]);_0xe247c0[_0x8962('0x22')]=_['intersection'](_0x24e976[_0x8962('0x1d')],qs[_0x8962('0x23')](_0x4cda3c[_0x8962('0x1f')][_0x8962('0x23')]));_0xe247c0['attributes']=_0xe247c0[_0x8962('0x22')][_0x8962('0x24')]?_0xe247c0[_0x8962('0x22')]:_0x24e976[_0x8962('0x1d')];if(!_0x4cda3c['query']['hasOwnProperty']('nolimit')){_0xe247c0[_0x8962('0xd')]=qs[_0x8962('0xd')](_0x4cda3c['query'][_0x8962('0xd')]);_0xe247c0[_0x8962('0xb')]=qs[_0x8962('0xb')](_0x4cda3c[_0x8962('0x1f')]['offset']);}_0xe247c0[_0x8962('0x25')]=qs[_0x8962('0x26')](_0x4cda3c[_0x8962('0x1f')][_0x8962('0x26')]);_0xe247c0[_0x8962('0x27')]=qs[_0x8962('0x20')](_[_0x8962('0x28')](_0x4cda3c[_0x8962('0x1f')],_0x24e976[_0x8962('0x20')]),_0x22b3ea);if(_0x4cda3c[_0x8962('0x1f')][_0x8962('0x29')]){_0xe247c0[_0x8962('0x27')]=_[_0x8962('0x2a')](_0xe247c0[_0x8962('0x27')],{'$or':_['map'](_0x22b3ea,function(_0x2eb461){if(_0x2eb461[_0x8962('0x1c')]!==_0x8962('0x2b')){var _0x55ea9d={};_0x55ea9d[_0x2eb461[_0x8962('0x14')]]={'$like':'%'+_0x4cda3c[_0x8962('0x1f')][_0x8962('0x29')]+'%'};return _0x55ea9d;}})});}_0xe247c0=_['merge']({},_0xe247c0,_0x4cda3c[_0x8962('0x2c')]);var _0x508c72={'where':_0xe247c0['where']};return db[_0x8962('0x19')][_0x8962('0xe')](_0x508c72)[_0x8962('0x11')](function(_0x4e52cc){_0x249baf[_0x8962('0xe')]=_0x4e52cc;if(_0x4cda3c[_0x8962('0x1f')][_0x8962('0x2d')]){_0xe247c0[_0x8962('0x2e')]=[{'all':!![]}];}return db['CloudProvider'][_0x8962('0x2f')](_0xe247c0);})[_0x8962('0x11')](function(_0x33fbb1){_0x249baf[_0x8962('0x30')]=_[_0x8962('0x18')](_0x33fbb1,function(_0x102d93){if(_0x102d93[_0x8962('0x31')]===_0x8962('0x32')){var _0x562617=encryptor['decryptString'](_0x102d93[_0x8962('0x33')]);_0x102d93[_0x8962('0x33')]=maskClientSecret(_0x562617);}return _0x102d93;});return _0x249baf;})['then'](respondWithFilteredResult(_0x19bcd7,_0xe247c0))[_0x8962('0x34')](handleError(_0x19bcd7,null));};exports[_0x8962('0x35')]=function(_0x2d8801,_0x1c845e){var _0x2e0ddc={'raw':!![],'where':{'id':_0x2d8801['params']['id']}},_0xc2113c={};_0xc2113c[_0x8962('0x1d')]=_['keys'](db[_0x8962('0x19')]['rawAttributes']);_0xc2113c[_0x8962('0x1f')]=_[_0x8962('0x1e')](_0x2d8801['query']);_0xc2113c[_0x8962('0x20')]=_[_0x8962('0x21')](_0xc2113c['model'],_0xc2113c[_0x8962('0x1f')]);_0x2e0ddc[_0x8962('0x22')]=_[_0x8962('0x21')](_0xc2113c[_0x8962('0x1d')],qs[_0x8962('0x23')](_0x2d8801[_0x8962('0x1f')][_0x8962('0x23')]));_0x2e0ddc[_0x8962('0x22')]=_0x2e0ddc['attributes'][_0x8962('0x24')]?_0x2e0ddc[_0x8962('0x22')]:_0xc2113c[_0x8962('0x1d')];if(_0x2d8801[_0x8962('0x1f')][_0x8962('0x2d')]){_0x2e0ddc[_0x8962('0x2e')]=[{'all':!![]}];}_0x2e0ddc=_[_0x8962('0x2a')]({},_0x2e0ddc,_0x2d8801['options']);return db[_0x8962('0x19')]['find'](_0x2e0ddc)[_0x8962('0x11')](handleEntityNotFound(_0x1c845e,null))[_0x8962('0x11')](function(_0x3cfb53){if(_0x3cfb53[_0x8962('0x31')]===_0x8962('0x32')){var _0x1f3868=encryptor['decryptString'](_0x3cfb53['data3']);_0x3cfb53[_0x8962('0x33')]=maskClientSecret(_0x1f3868);}return _0x3cfb53;})['then'](respondWithResult(_0x1c845e,null))[_0x8962('0x34')](handleError(_0x1c845e,null));};exports['create']=function(_0x1ee08b,_0xb3be6c){if(!_0x1ee08b[_0x8962('0x36')][_0x8962('0x14')])throw new Error(_0x8962('0x37'));if(!_0x1ee08b[_0x8962('0x36')][_0x8962('0x31')])throw new Error(_0x8962('0x38'));var _0x535771=db[_0x8962('0x19')][_0x8962('0x1a')][_0x8962('0x31')][_0x8962('0x39')];if(!_0x535771[_0x8962('0x3a')](_0x1ee08b[_0x8962('0x36')][_0x8962('0x31')]))throw new Error(_0x8962('0x3b')+_0x535771[_0x8962('0x3c')](',\x20'));if(_0x1ee08b['body'][_0x8962('0x31')]===_0x8962('0x32')&&_0x1ee08b[_0x8962('0x36')]['data3']){_0x1ee08b[_0x8962('0x36')][_0x8962('0x33')]=encryptor[_0x8962('0x3d')](_0x1ee08b[_0x8962('0x36')]['data3']);}return db[_0x8962('0x19')]['create'](_0x1ee08b['body'],{})[_0x8962('0x11')](respondWithResult(_0xb3be6c,0xc9))[_0x8962('0x34')](handleError(_0xb3be6c,null));};exports['update']=function(_0xfa2a01,_0x5e72c2){if(_0xfa2a01[_0x8962('0x36')]['id']){delete _0xfa2a01[_0x8962('0x36')]['id'];}return db['CloudProvider'][_0x8962('0x3e')]({'where':{'id':_0xfa2a01[_0x8962('0x3f')]['id']}})[_0x8962('0x11')](handleEntityNotFound(_0x5e72c2,null))[_0x8962('0x11')](function(_0x1b6c99){if(_0x1b6c99['service']===_0x8962('0x32')&&_0xfa2a01[_0x8962('0x36')][_0x8962('0x33')]){_0xfa2a01['body'][_0x8962('0x33')]=encryptor[_0x8962('0x3d')](_0xfa2a01['body'][_0x8962('0x33')]);}return _0x1b6c99;})[_0x8962('0x11')](saveUpdates(_0xfa2a01[_0x8962('0x36')],null))['then'](respondWithResult(_0x5e72c2,null))[_0x8962('0x34')](handleError(_0x5e72c2,null));};exports[_0x8962('0x40')]=function(_0x1e69b0,_0xeb6c8b){return db['CloudProvider'][_0x8962('0x3e')]({'where':{'id':_0x1e69b0[_0x8962('0x3f')]['id']}})['then'](handleEntityNotFound(_0xeb6c8b,null))[_0x8962('0x11')](removeEntity(_0xeb6c8b,null))[_0x8962('0x34')](handleError(_0xeb6c8b,null));};exports['oauth2MicrosoftAuthorize']=function(_0x5be6c7,_0x6cd22f){return db['CloudProvider'][_0x8962('0x41')]({'where':{'id':_0x5be6c7[_0x8962('0x3f')]['id']},'raw':!![]})[_0x8962('0x11')](function(_0x2fa4ac){if(!_0x2fa4ac)return _0x6cd22f[_0x8962('0x12')](0x194);return{'url':oauth[_0x8962('0x42')](_0x2fa4ac,_0x5be6c7[_0x8962('0x43')]['id'])};})[_0x8962('0x11')](respondWithResult(_0x6cd22f,null))['catch'](handleError(_0x6cd22f,null));};exports[_0x8962('0x44')]=function(_0x3f8a1e,_0x2c4d10){var _0x4e28dc=_0x3f8a1e[_0x8962('0x36')];var _0x45b3d6;var _0x56b8a0;if(_0x4e28dc[_0x8962('0x13')])throw _0x4e28dc;redis[_0x8962('0x45')](_0x4e28dc[_0x8962('0x46')])[_0x8962('0x11')](function(_0x25f278){if(!_0x25f278)throw new Error(_0x8962('0x47'));_0x45b3d6=JSON[_0x8962('0x48')](_0x25f278);var _0x20d4ef=Buffer[_0x8962('0x49')](_0x4e28dc['state'],_0x8962('0x4a'))[_0x8962('0x4b')](_0x8962('0x4c'));_0x56b8a0=JSON[_0x8962('0x48')](_0x20d4ef);if(!oauth[_0x8962('0x4d')](_0x4e28dc[_0x8962('0x4e')],_0x45b3d6['oauth2Claims']))throw new Error(_0x8962('0x4f'));redis[_0x8962('0x50')](_0x4e28dc['state']);return oauth['getOauth2MicrosoftAccessToken'](_0x4e28dc['code'],_0x45b3d6);})[_0x8962('0x11')](function(_0x10a93f){_0x45b3d6[_0x8962('0x51')]=_0x10a93f[_0x8962('0x52')];_0x45b3d6[_0x8962('0x53')]=_0x10a93f[_0x8962('0x54')];return db[_0x8962('0x19')][_0x8962('0x10')]({'data5':_0x45b3d6['data5'],'data6':_0x45b3d6[_0x8962('0x53')]},{'where':{'id':_0x45b3d6['id']}});})[_0x8962('0x11')](function(){oauth['startRefreshInterval'](_0x45b3d6);socket[_0x8962('0x55')]('microsoftAuthorization:success',{'id':_0x56b8a0['id']});return;})[_0x8962('0x11')](respondWithStatusCode(_0x2c4d10,null))['catch'](function(_0x41ed4c){if(_0x56b8a0){socket['emit'](_0x8962('0x56'),{'id':_0x56b8a0['id']});}if(!_0x45b3d6){logger[_0x8962('0x13')]('Invalid\x20authentication\x20state\x20parameter',_0x41ed4c);return _0x2c4d10[_0x8962('0x8')](0x1f4)[_0x8962('0x15')](_0x41ed4c[_0x8962('0x57')]);}logger[_0x8962('0x13')](_0x8962('0x58'),_0x45b3d6['id'],JSON['stringify'](_0x41ed4c));});};