Built motion from commit (unavailable).|2.5.4
[motion2.git] / server / api / user / user.model.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 _0x7218=['bulkCreate','resolve','changed','destroy','encryptPassword','function','Missing\x20Callback','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','indexOf','provider','makeSalt',':asterisk:','md5secret','crypto','util','lodash','./user.attributes','context','system','length','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','wav','gsm','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','define','User','users','utf8','updateMd5Password','updatePassword','VoiceExtension'];(function(_0x8bfb3,_0x3e71f9){var _0x3f1e05=function(_0x394d9f){while(--_0x394d9f){_0x8bfb3['push'](_0x8bfb3['shift']());}};_0x3f1e05(++_0x3e71f9);}(_0x7218,0x1bc));var _0x8721=function(_0x623991,_0x3b49db){_0x623991=_0x623991-0x0;var _0x30ed17=_0x7218[_0x623991];return _0x30ed17;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x8721('0x0'));var util=require(_0x8721('0x1'));var md5=require('md5');var _=require(_0x8721('0x2'));var attributes=require(_0x8721('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x257d89){return _0x257d89&&_0x257d89['length'];};var getChanSpyApplications=function(_0x2a9483,_0x5b4934,_0x3f70a3){var _0x2b18cc={'context':_0x2a9483[_0x8721('0x4')]||'from-sip','type':_0x8721('0x5'),'isApp':![],'UserId':_0x2a9483['id']};var _0x54c4f2=[];for(var _0x14116d=0x0,_0xf2c759=0x1;_0x14116d<_0x3f70a3[_0x8721('0x6')];_0x14116d++,_0xf2c759=0x1){var _0x2f9d5f={'exten':util[_0x8721('0x7')](_0x8721('0x8'),_0x3f70a3[_0x14116d][_0x8721('0x9')],_0x5b4934),'ChanSpyId':_0x3f70a3[_0x14116d]['id']};_0x54c4f2[_0x8721('0xa')](_[_0x8721('0xb')]({'app':_0x8721('0xc'),'appdata':util[_0x8721('0x7')](_0x8721('0xd'),_0x8721('0xe')),'priority':_0xf2c759++},_0x2b18cc,_0x2f9d5f));if(_0x3f70a3[_0x14116d][_0x8721('0xf')]){_0x54c4f2[_0x8721('0xa')](_['merge']({'app':_0x8721('0x10'),'appdata':util[_0x8721('0x7')](_0x8721('0x11'),_0x3f70a3[_0x14116d][_0x8721('0x12')]),'priority':_0xf2c759++},_0x2b18cc,_0x2f9d5f));}if(_0x3f70a3[_0x14116d][_0x8721('0x13')]){_0x54c4f2['push'](_[_0x8721('0xb')]({'app':_0x8721('0x14'),'appdata':_0x3f70a3[_0x14116d][_0x8721('0x15')],'priority':_0xf2c759++},_0x2b18cc,_0x2f9d5f));}_0x54c4f2['push'](_['merge']({'app':_0x8721('0x16'),'appdata':util[_0x8721('0x7')]('SIP/%s,%s',_0x2a9483[_0x8721('0x17')],_0x3f70a3[_0x14116d]['options']?_0x3f70a3[_0x14116d][_0x8721('0x18')]['join'](''):''),'priority':_0xf2c759++},_0x2b18cc,_0x2f9d5f));if(_0x3f70a3[_0x14116d]['record']){_0x54c4f2[_0x8721('0xa')](_['merge']({'app':'StopMixMonitor','priority':_0xf2c759++},_0x2b18cc,_0x2f9d5f));}}return _0x54c4f2;};var getUserApplications=function(_0x19a092,_0x2e3626){var _0x56e699=[_0x8721('0x19'),'WAV',_0x8721('0x1a')];var _0x4e09d8={'context':_0x19a092[_0x8721('0x4')]||_0x8721('0x1b'),'exten':_0x2e3626,'type':_0x8721('0x5'),'isApp':![],'UserId':_0x19a092['id']};var _0x37ddc1=[{'app':_0x8721('0xc'),'appdata':_0x8721('0x1c')}];if(_0x19a092[_0x8721('0x1d')]&&_[_0x8721('0x1e')](_0x56e699,_0x19a092['extensionMonitor'])){_0x37ddc1[_0x8721('0xa')]({'app':'Set','appdata':_0x8721('0x1f')});_0x37ddc1[_0x8721('0xa')]({'app':'Set','appdata':util['format'](_0x8721('0x20'),_0x19a092[_0x8721('0x1d')])});_0x37ddc1['push']({'app':_0x8721('0x21'),'appdata':util[_0x8721('0x7')](_0x8721('0x22'),_0x19a092[_0x8721('0x17')])});}else{_0x37ddc1[_0x8721('0xa')]({'app':_0x8721('0x21'),'appdata':util['format'](_0x8721('0x23'),_0x19a092[_0x8721('0x17')])});}_0x37ddc1['push']({'app':_0x8721('0x24')});for(var _0x1fb8f3=0x0;_0x1fb8f3<_0x37ddc1[_0x8721('0x6')];_0x1fb8f3++){_0x37ddc1[_0x1fb8f3][_0x8721('0x25')]=_0x1fb8f3+0x1;_0x37ddc1[_0x1fb8f3]=_[_0x8721('0x26')](_0x37ddc1[_0x1fb8f3],_0x4e09d8);}return _0x37ddc1;};var getChanSpyPromise=function(_0x22567c,_0x193138){return new BPromise(function(_0x4933c0,_0x1918f6){return _0x22567c[_0x8721('0x27')][_0x8721('0x28')]()[_0x8721('0x29')](function(_0x46688b){if(_0x46688b){var _0x1b7508=getChanSpyApplications(_0x193138,_0x193138['internal'],_0x46688b);if(_0x193138[_0x8721('0x2a')]!=_0x193138[_0x8721('0x17')]){_0x1b7508=_0x1b7508[_0x8721('0x2b')](getChanSpyApplications(_0x193138,_0x193138[_0x8721('0x17')],_0x46688b));}return _0x4933c0(_0x1b7508);}return _0x4933c0([]);})[_0x8721('0x2c')](function(_0x390dbb){_0x1918f6(_0x390dbb);});});};module[_0x8721('0x2d')]=function(_0xda3dfb,_0xf6dc25){var _0x171681=_0xda3dfb['models'];return _0xda3dfb[_0x8721('0x2e')](_0x8721('0x2f'),attributes,{'tableName':_0x8721('0x30'),'charset':_0x8721('0x31'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x4cfa2f,_0x12e068,_0x4f04c7){_0x4cfa2f[_0x8721('0x32')]();_0x4cfa2f[_0x8721('0x33')](_0x4f04c7);},'beforeUpdate':function(_0x57c35e,_0x1f5b88,_0x22a4ab){if(_0x57c35e['changed'](_0x8721('0x15'))){_0x57c35e[_0x8721('0x32')]();return _0x57c35e['updatePassword'](_0x22a4ab);}_0x22a4ab();},'afterCreate':function(_0xc1b376,_0x4efb75,_0x4b7626){var _0x363545=getUserApplications(_0xc1b376,_0xc1b376['internal']);if(_0xc1b376[_0x8721('0x2a')]!=_0xc1b376[_0x8721('0x17')]){_0x363545=_0x363545['concat'](getUserApplications(_0xc1b376,_0xc1b376['name']));}return _0x171681[_0x8721('0x34')][_0x8721('0x35')](_0x363545)[_0x8721('0x29')](function(){if(_0xc1b376['chanspy']){return getChanSpyPromise(_0x171681,_0xc1b376);}})[_0x8721('0x29')](function(_0x1d172d){if(_0x1d172d&&_0x1d172d['length']){return _0x171681[_0x8721('0x34')][_0x8721('0x35')](_0x1d172d);}})[_0x8721('0x29')](function(){_0x4b7626();})[_0x8721('0x2c')](function(_0xed727a){_0x4b7626(_0xed727a);});},'afterUpdate':function(_0x2c09d0,_0x106eee,_0x5105ca){return BPromise[_0x8721('0x36')]()[_0x8721('0x29')](function(){if(_0x2c09d0['changed']('chanspy')||_0x2c09d0[_0x8721('0x37')]('context')){return _0x171681[_0x8721('0x34')][_0x8721('0x38')]({'where':{'UserId':_0x2c09d0['id'],'type':_0x8721('0x5'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x2c09d0[_0x8721('0xe')]){return getChanSpyPromise(_0x171681,_0x2c09d0)[_0x8721('0x29')](function(_0x264ee3){if(_0x264ee3&&_0x264ee3[_0x8721('0x6')]){return _0x171681[_0x8721('0x34')]['bulkCreate'](_0x264ee3);}});}});}})['then'](function(){if(_0x2c09d0[_0x8721('0x37')]('extensionMonitor')||_0x2c09d0['changed']('context')){return _0x171681[_0x8721('0x34')][_0x8721('0x38')]({'where':{'UserId':_0x2c09d0['id'],'type':_0x8721('0x5'),'ChanSpyId':null}})[_0x8721('0x29')](function(){var _0x46ed48=getUserApplications(_0x2c09d0,_0x2c09d0['internal']);if(_0x2c09d0['internal']!=_0x2c09d0[_0x8721('0x17')]){_0x46ed48=_0x46ed48[_0x8721('0x2b')](getUserApplications(_0x2c09d0,_0x2c09d0[_0x8721('0x17')]));}return _0x171681[_0x8721('0x34')]['bulkCreate'](_0x46ed48);});}})[_0x8721('0x29')](function(){_0x5105ca();})[_0x8721('0x2c')](function(_0x49c74d){_0x5105ca(_0x49c74d);});},'afterDestroy':function(_0x45469f,_0x327b2c){return _0x171681[_0x8721('0x34')]['destroy']({'where':{'UserId':_0x45469f['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x39b733,_0x45ace8){if(!_0x45ace8){return this[_0x8721('0x15')]===this[_0x8721('0x39')](_0x39b733);}var _0xcba057=this;this[_0x8721('0x39')](_0x39b733,function(_0x26f88b,_0x296015){if(_0x26f88b){_0x45ace8(_0x26f88b);}if(_0xcba057[_0x8721('0x15')]===_0x296015){_0x45ace8(null,!![]);}else{_0x45ace8(null,![]);}});},'makeSalt':function(_0x55f281,_0x4a9613){var _0x46d542=0x10;if(typeof arguments[0x0]===_0x8721('0x3a')){_0x4a9613=arguments[0x0];_0x55f281=_0x46d542;}else if(typeof arguments[0x1]===_0x8721('0x3a')){_0x4a9613=arguments[0x1];}else{throw new Error(_0x8721('0x3b'));}if(!_0x55f281){_0x55f281=_0x46d542;}return crypto['randomBytes'](_0x55f281,function(_0x322074,_0x39dadf){if(_0x322074){_0x4a9613(_0x322074);}return _0x4a9613(null,_0x39dadf['toString'](_0x8721('0x3c')));});},'encryptPassword':function(_0x5237ff,_0x456531){if(!_0x5237ff||!this[_0x8721('0x3d')]){return _0x456531?_0x456531(null):null;}var _0x51bd56=0x2710;var _0x3ee873=0x40;var _0x186ea4=new Buffer(this[_0x8721('0x3d')],_0x8721('0x3c'));if(!_0x456531){return crypto[_0x8721('0x3e')](_0x5237ff,_0x186ea4,_0x51bd56,_0x3ee873,_0x8721('0x3f'))['toString'](_0x8721('0x3c'));}return crypto[_0x8721('0x40')](_0x5237ff,_0x186ea4,_0x51bd56,_0x3ee873,_0x8721('0x3f'),function(_0x4b99a4,_0x491510){if(_0x4b99a4){_0x456531(_0x4b99a4);}return _0x456531(null,_0x491510[_0x8721('0x41')]('base64'));});},'updatePassword':function(_0x1f92a1){if(!this[_0x8721('0x15')]){return _0x1f92a1(null);}if(!validatePresenceOf(this[_0x8721('0x15')])&&authTypes[_0x8721('0x42')](this[_0x8721('0x43')])===-0x1){_0x1f92a1(new Error('Invalid\x20password'));}var _0x2bc777=this;this[_0x8721('0x44')](function(_0x3d1ec5,_0x4e8fd2){if(_0x3d1ec5){return _0x1f92a1(_0x3d1ec5);}_0x2bc777['salt']=_0x4e8fd2;_0x2bc777['encryptPassword'](_0x2bc777['password'],function(_0x1d6ea2,_0x3712ca){if(_0x1d6ea2){_0x1f92a1(_0x1d6ea2);}_0x2bc777['password']=_0x3712ca;_0x1f92a1(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0x8721('0x17')]+_0x8721('0x45')+this['password']);return this[_0x8721('0x46')];}}});};