Built motion from commit ddca4d0d.|2.5.47
[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 _0x837a=['chanspy','record','push','MixMonitor','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','Hangup','priority','VoiceChanSpy','findAll','then','internal','catch','exports','models','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','createUserSetting','error','VoiceExtension','bulkCreate','destroy','system','concat','function','Missing\x20Callback','randomBytes','base64','salt','toString','pbkdf2','sha1','indexOf','provider','makeSalt','encryptPassword','md5secret','bluebird','crypto','md5','lodash','./user.attributes','google','length','context','from-sip','%s%s','prefix','merge','Set','format'];(function(_0x324f5c,_0x19e1f0){var _0x2c81c4=function(_0x3a5293){while(--_0x3a5293){_0x324f5c['push'](_0x324f5c['shift']());}};_0x2c81c4(++_0x19e1f0);}(_0x837a,0x1ba));var _0xa837=function(_0x4a4f99,_0x49f94f){_0x4a4f99=_0x4a4f99-0x0;var _0x548860=_0x837a[_0x4a4f99];return _0x548860;};'use strict';var BPromise=require(_0xa837('0x0'));var crypto=require(_0xa837('0x1'));var util=require('util');var md5=require(_0xa837('0x2'));var _=require(_0xa837('0x3'));var attributes=require(_0xa837('0x4'));var authTypes=[_0xa837('0x5')];var validatePresenceOf=function(_0x135f89){return _0x135f89&&_0x135f89[_0xa837('0x6')];};var getChanSpyApplications=function(_0x364d68,_0x2242c5,_0x5dcece){var _0x585d6f={'context':_0x364d68[_0xa837('0x7')]||_0xa837('0x8'),'type':'system','isApp':![],'UserId':_0x364d68['id']};var _0x38a7d8=[];for(var _0x4cf9e8=0x0,_0x448c06=0x1;_0x4cf9e8<_0x5dcece[_0xa837('0x6')];_0x4cf9e8++,_0x448c06=0x1){var _0x4e3f94={'exten':util['format'](_0xa837('0x9'),_0x5dcece[_0x4cf9e8][_0xa837('0xa')],_0x2242c5),'ChanSpyId':_0x5dcece[_0x4cf9e8]['id']};_0x38a7d8['push'](_[_0xa837('0xb')]({'app':_0xa837('0xc'),'appdata':util[_0xa837('0xd')]('CDR(type)=%s',_0xa837('0xe')),'priority':_0x448c06++},_0x585d6f,_0x4e3f94));if(_0x5dcece[_0x4cf9e8][_0xa837('0xf')]){_0x38a7d8[_0xa837('0x10')](_['merge']({'app':_0xa837('0x11'),'appdata':util[_0xa837('0xd')]('${UNIQUEID}.%s,a',_0x5dcece[_0x4cf9e8]['recordingFormat']),'priority':_0x448c06++},_0x585d6f,_0x4e3f94));}if(_0x5dcece[_0x4cf9e8]['auth']){_0x38a7d8[_0xa837('0x10')](_[_0xa837('0xb')]({'app':_0xa837('0x12'),'appdata':_0x5dcece[_0x4cf9e8][_0xa837('0x13')],'priority':_0x448c06++},_0x585d6f,_0x4e3f94));}_0x38a7d8['push'](_[_0xa837('0xb')]({'app':_0xa837('0x14'),'appdata':util[_0xa837('0xd')](_0xa837('0x15'),_0x364d68['name'],_0x5dcece[_0x4cf9e8]['options']?_0x5dcece[_0x4cf9e8][_0xa837('0x16')][_0xa837('0x17')](''):''),'priority':_0x448c06++},_0x585d6f,_0x4e3f94));if(_0x5dcece[_0x4cf9e8]['record']){_0x38a7d8[_0xa837('0x10')](_[_0xa837('0xb')]({'app':_0xa837('0x18'),'priority':_0x448c06++},_0x585d6f,_0x4e3f94));}}return _0x38a7d8;};var getUserApplications=function(_0x524bc0,_0x2b9e06){var _0x34a7fd=[_0xa837('0x19'),_0xa837('0x1a'),_0xa837('0x1b')];var _0x5b7272={'context':_0x524bc0['context']||'from-sip','exten':_0x2b9e06,'type':'system','isApp':![],'UserId':_0x524bc0['id']};var _0x4906cb=[{'app':_0xa837('0xc'),'appdata':_0xa837('0x1c')}];if(_0x524bc0[_0xa837('0x1d')]&&_['includes'](_0x34a7fd,_0x524bc0[_0xa837('0x1d')])){_0x4906cb[_0xa837('0x10')]({'app':_0xa837('0xc'),'appdata':_0xa837('0x1e')});_0x4906cb['push']({'app':_0xa837('0xc'),'appdata':util[_0xa837('0xd')](_0xa837('0x1f'),_0x524bc0[_0xa837('0x1d')])});_0x4906cb['push']({'app':_0xa837('0x20'),'appdata':util[_0xa837('0xd')](_0xa837('0x21'),_0x524bc0[_0xa837('0x22')])});}else{_0x4906cb[_0xa837('0x10')]({'app':'Dial','appdata':util[_0xa837('0xd')]('SIP/%s,,tTxX',_0x524bc0[_0xa837('0x22')])});}_0x4906cb['push']({'app':_0xa837('0x23')});for(var _0x353c0b=0x0;_0x353c0b<_0x4906cb[_0xa837('0x6')];_0x353c0b++){_0x4906cb[_0x353c0b][_0xa837('0x24')]=_0x353c0b+0x1;_0x4906cb[_0x353c0b]=_['defaults'](_0x4906cb[_0x353c0b],_0x5b7272);}return _0x4906cb;};var getChanSpyPromise=function(_0xd5c5e0,_0x5dd4d0){return new BPromise(function(_0x17b761,_0x1d5a16){return _0xd5c5e0[_0xa837('0x25')][_0xa837('0x26')]()[_0xa837('0x27')](function(_0x52a275){if(_0x52a275){var _0xda18ed=getChanSpyApplications(_0x5dd4d0,_0x5dd4d0[_0xa837('0x28')],_0x52a275);if(_0x5dd4d0[_0xa837('0x28')]!=_0x5dd4d0[_0xa837('0x22')]){_0xda18ed=_0xda18ed['concat'](getChanSpyApplications(_0x5dd4d0,_0x5dd4d0[_0xa837('0x22')],_0x52a275));}return _0x17b761(_0xda18ed);}return _0x17b761([]);})[_0xa837('0x29')](function(_0x1f057e){_0x1d5a16(_0x1f057e);});});};module[_0xa837('0x2a')]=function(_0x300534){var _0x14a530=_0x300534[_0xa837('0x2b')];return _0x300534['define']('User',attributes,{'tableName':_0xa837('0x2c'),'charset':_0xa837('0x2d'),'collate':_0xa837('0x2e'),'hooks':{'beforeCreate':function(_0x4d62c1,_0x6dc3cb,_0x444752){var _0x15442b=typeof _0x4d62c1[_0xa837('0x2f')]===_0xa837('0x30')?BPromise[_0xa837('0x31')](null):_0x14a530[_0xa837('0x32')][_0xa837('0x33')]({'where':{'id':_0x4d62c1[_0xa837('0x2f')]}});_0x15442b[_0xa837('0x27')](function(_0x5bdbda){if(_0x5bdbda){_0x4d62c1[_0xa837('0x34')]=_0x5bdbda[_0xa837('0x34')];}})[_0xa837('0x27')](function(){_0x4d62c1[_0xa837('0x35')]();_0x4d62c1[_0xa837('0x36')](_0x444752);})['catch'](function(_0x14de53){_0x444752(_0x14de53);});},'beforeUpdate':function(_0x596769,_0x16ef67,_0xcd9c91){Promise[_0xa837('0x31')]()['then'](function(){if(_0x596769[_0xa837('0x37')]('userProfileId')===![])return;return _0x14a530['UserProfile'][_0xa837('0x33')]({'where':{'id':_0x596769[_0xa837('0x2f')]}})[_0xa837('0x27')](function(_0x4b37cc){if(_0x4b37cc)_0x596769[_0xa837('0x34')]=_0x4b37cc['privacyEnabled'];return;});})[_0xa837('0x27')](function(){if(_0x596769[_0xa837('0x37')](_0xa837('0x13'))){_0x596769['updateMd5Password']();return _0x596769[_0xa837('0x36')](_0xcd9c91);}_0xcd9c91();})[_0xa837('0x29')](function(_0x4ab984){_0xcd9c91(_0x4ab984);});},'afterCreate':function(_0x109686,_0x69540,_0x5c0680){var _0x1de558=getUserApplications(_0x109686,_0x109686[_0xa837('0x28')]);if(_0x109686[_0xa837('0x28')]!=_0x109686['name']){_0x1de558=_0x1de558['concat'](getUserApplications(_0x109686,_0x109686[_0xa837('0x22')]));}return Promise[_0xa837('0x31')]()[_0xa837('0x27')](function(){if(!_0x109686['userSetting']){return _0x109686[_0xa837('0x38')]({'clientSideLoggingLevel':_0xa837('0x39'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x14a530['VoiceExtension']['bulkCreate'](_0x1de558);})[_0xa837('0x27')](function(){if(_0x109686[_0xa837('0xe')]){return getChanSpyPromise(_0x14a530,_0x109686);}})['then'](function(_0x129d7a){if(_0x129d7a&&_0x129d7a[_0xa837('0x6')]){return _0x14a530[_0xa837('0x3a')][_0xa837('0x3b')](_0x129d7a);}})['then'](function(){_0x5c0680();})[_0xa837('0x29')](function(_0x14903a){_0x5c0680(_0x14903a);});},'afterUpdate':function(_0x190484,_0x196a23,_0x1cabb9){return BPromise[_0xa837('0x31')]()[_0xa837('0x27')](function(){if(_0x190484[_0xa837('0x37')](_0xa837('0xe'))||_0x190484[_0xa837('0x37')](_0xa837('0x7'))){return _0x14a530[_0xa837('0x3a')][_0xa837('0x3c')]({'where':{'UserId':_0x190484['id'],'type':_0xa837('0x3d'),'ChanSpyId':{'$ne':null}}})[_0xa837('0x27')](function(){if(_0x190484[_0xa837('0xe')]){return getChanSpyPromise(_0x14a530,_0x190484)[_0xa837('0x27')](function(_0x32af8e){if(_0x32af8e&&_0x32af8e[_0xa837('0x6')]){return _0x14a530['VoiceExtension']['bulkCreate'](_0x32af8e);}});}});}})['then'](function(){if(_0x190484[_0xa837('0x37')](_0xa837('0x1d'))||_0x190484[_0xa837('0x37')](_0xa837('0x7'))){return _0x14a530[_0xa837('0x3a')]['destroy']({'where':{'UserId':_0x190484['id'],'type':_0xa837('0x3d'),'ChanSpyId':null}})['then'](function(){var _0x2c3dd7=getUserApplications(_0x190484,_0x190484[_0xa837('0x28')]);if(_0x190484['internal']!=_0x190484[_0xa837('0x22')]){_0x2c3dd7=_0x2c3dd7[_0xa837('0x3e')](getUserApplications(_0x190484,_0x190484[_0xa837('0x22')]));}return _0x14a530[_0xa837('0x3a')]['bulkCreate'](_0x2c3dd7);});}})[_0xa837('0x27')](function(){_0x1cabb9();})[_0xa837('0x29')](function(_0x49b4af){_0x1cabb9(_0x49b4af);});},'afterDestroy':function(_0x2f28c5){return _0x14a530[_0xa837('0x3a')][_0xa837('0x3c')]({'where':{'UserId':_0x2f28c5['id'],'type':_0xa837('0x3d')}});}},'instanceMethods':{'authenticate':function(_0x377eda,_0x2ccd5b){if(!_0x2ccd5b){return this[_0xa837('0x13')]===this['encryptPassword'](_0x377eda);}var _0x3fae99=this;this['encryptPassword'](_0x377eda,function(_0x520ecc,_0x3090b6){if(_0x520ecc){_0x2ccd5b(_0x520ecc);}if(_0x3fae99['password']===_0x3090b6){_0x2ccd5b(null,!![]);}else{_0x2ccd5b(null,![]);}});},'makeSalt':function(_0x5bb19d,_0x3cac52){var _0x398879=0x10;if(typeof arguments[0x0]===_0xa837('0x3f')){_0x3cac52=arguments[0x0];_0x5bb19d=_0x398879;}else if(typeof arguments[0x1]===_0xa837('0x3f')){_0x3cac52=arguments[0x1];}else{throw new Error(_0xa837('0x40'));}if(!_0x5bb19d){_0x5bb19d=_0x398879;}return crypto[_0xa837('0x41')](_0x5bb19d,function(_0x40e5c3,_0x1b2067){if(_0x40e5c3){_0x3cac52(_0x40e5c3);}return _0x3cac52(null,_0x1b2067['toString'](_0xa837('0x42')));});},'encryptPassword':function(_0x3a31ce,_0x16ea82){if(!_0x3a31ce||!this[_0xa837('0x43')]){return _0x16ea82?_0x16ea82(null):null;}var _0x4b7593=0x2710;var _0x418247=0x40;var _0x45615e=new Buffer(this['salt'],'base64');if(!_0x16ea82){return crypto['pbkdf2Sync'](_0x3a31ce,_0x45615e,_0x4b7593,_0x418247,'sha1')[_0xa837('0x44')]('base64');}return crypto[_0xa837('0x45')](_0x3a31ce,_0x45615e,_0x4b7593,_0x418247,_0xa837('0x46'),function(_0xd49c75,_0x272685){if(_0xd49c75){_0x16ea82(_0xd49c75);}return _0x16ea82(null,_0x272685[_0xa837('0x44')](_0xa837('0x42')));});},'updatePassword':function(_0x3970f7){if(!this[_0xa837('0x13')]){return _0x3970f7(null);}if(!validatePresenceOf(this[_0xa837('0x13')])&&authTypes[_0xa837('0x47')](this[_0xa837('0x48')])===-0x1){_0x3970f7(new Error('Invalid\x20password'));}var _0x5077ec=this;this[_0xa837('0x49')](function(_0x1b67d7,_0x51d006){if(_0x1b67d7){return _0x3970f7(_0x1b67d7);}_0x5077ec[_0xa837('0x43')]=_0x51d006;_0x5077ec[_0xa837('0x4a')](_0x5077ec[_0xa837('0x13')],function(_0x4c2877,_0x548918){if(_0x4c2877){_0x3970f7(_0x4c2877);}_0x5077ec[_0xa837('0x13')]=_0x548918;_0x3970f7(null);});});},'updateMd5Password':function(){this[_0xa837('0x4b')]=md5(this[_0xa837('0x22')]+':asterisk:'+this[_0xa837('0x13')]);return this[_0xa837('0x4b')];}}});};