Built motion from commit (unavailable).|2.5.21
[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 _0x1d99=['models','define','User','users','utf8','utf8_bin','updateMd5Password','updatePassword','bulkCreate','VoiceExtension','changed','context','destroy','encryptPassword','function','randomBytes','base64','salt','pbkdf2Sync','sha1','pbkdf2','toString','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','md5','length','from-sip','system','%s%s','prefix','push','merge','Set','chanspy','MixMonitor','format','auth','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','wav','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports'];(function(_0x20f30d,_0x9b2da){var _0x5a0881=function(_0x3d4cc4){while(--_0x3d4cc4){_0x20f30d['push'](_0x20f30d['shift']());}};_0x5a0881(++_0x9b2da);}(_0x1d99,0x1f0));var _0x91d9=function(_0x3fe72a,_0x340960){_0x3fe72a=_0x3fe72a-0x0;var _0x51b62a=_0x1d99[_0x3fe72a];return _0x51b62a;};'use strict';var BPromise=require(_0x91d9('0x0'));var crypto=require(_0x91d9('0x1'));var util=require('util');var md5=require(_0x91d9('0x2'));var _=require('lodash');var attributes=require('./user.attributes');var authTypes=['google'];var validatePresenceOf=function(_0x2c656b){return _0x2c656b&&_0x2c656b[_0x91d9('0x3')];};var getChanSpyApplications=function(_0x44843d,_0x47a5a5,_0x1bce4d){var _0x45492d={'context':_0x44843d['context']||_0x91d9('0x4'),'type':_0x91d9('0x5'),'isApp':![],'UserId':_0x44843d['id']};var _0x5381b3=[];for(var _0x3c5edf=0x0,_0x570406=0x1;_0x3c5edf<_0x1bce4d[_0x91d9('0x3')];_0x3c5edf++,_0x570406=0x1){var _0x11bbe7={'exten':util['format'](_0x91d9('0x6'),_0x1bce4d[_0x3c5edf][_0x91d9('0x7')],_0x47a5a5),'ChanSpyId':_0x1bce4d[_0x3c5edf]['id']};_0x5381b3[_0x91d9('0x8')](_[_0x91d9('0x9')]({'app':_0x91d9('0xa'),'appdata':util['format']('CDR(type)=%s',_0x91d9('0xb')),'priority':_0x570406++},_0x45492d,_0x11bbe7));if(_0x1bce4d[_0x3c5edf]['record']){_0x5381b3[_0x91d9('0x8')](_['merge']({'app':_0x91d9('0xc'),'appdata':util[_0x91d9('0xd')]('${UNIQUEID}.%s,a',_0x1bce4d[_0x3c5edf]['recordingFormat']),'priority':_0x570406++},_0x45492d,_0x11bbe7));}if(_0x1bce4d[_0x3c5edf][_0x91d9('0xe')]){_0x5381b3[_0x91d9('0x8')](_[_0x91d9('0x9')]({'app':'Authenticate','appdata':_0x1bce4d[_0x3c5edf][_0x91d9('0xf')],'priority':_0x570406++},_0x45492d,_0x11bbe7));}_0x5381b3['push'](_[_0x91d9('0x9')]({'app':_0x91d9('0x10'),'appdata':util['format'](_0x91d9('0x11'),_0x44843d[_0x91d9('0x12')],_0x1bce4d[_0x3c5edf]['options']?_0x1bce4d[_0x3c5edf][_0x91d9('0x13')][_0x91d9('0x14')](''):''),'priority':_0x570406++},_0x45492d,_0x11bbe7));if(_0x1bce4d[_0x3c5edf][_0x91d9('0x15')]){_0x5381b3[_0x91d9('0x8')](_[_0x91d9('0x9')]({'app':_0x91d9('0x16'),'priority':_0x570406++},_0x45492d,_0x11bbe7));}}return _0x5381b3;};var getUserApplications=function(_0x2989f9,_0x4ead03){var _0x2056ab=[_0x91d9('0x17'),'WAV','gsm'];var _0x47927c={'context':_0x2989f9['context']||_0x91d9('0x4'),'exten':_0x4ead03,'type':_0x91d9('0x5'),'isApp':![],'UserId':_0x2989f9['id']};var _0x28bb25=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x2989f9[_0x91d9('0x18')]&&_[_0x91d9('0x19')](_0x2056ab,_0x2989f9[_0x91d9('0x18')])){_0x28bb25[_0x91d9('0x8')]({'app':_0x91d9('0xa'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x28bb25['push']({'app':'Set','appdata':util['format'](_0x91d9('0x1a'),_0x2989f9[_0x91d9('0x18')])});_0x28bb25[_0x91d9('0x8')]({'app':_0x91d9('0x1b'),'appdata':util[_0x91d9('0xd')](_0x91d9('0x1c'),_0x2989f9[_0x91d9('0x12')])});}else{_0x28bb25['push']({'app':_0x91d9('0x1b'),'appdata':util[_0x91d9('0xd')](_0x91d9('0x1d'),_0x2989f9[_0x91d9('0x12')])});}_0x28bb25['push']({'app':_0x91d9('0x1e')});for(var _0x35eda3=0x0;_0x35eda3<_0x28bb25['length'];_0x35eda3++){_0x28bb25[_0x35eda3][_0x91d9('0x1f')]=_0x35eda3+0x1;_0x28bb25[_0x35eda3]=_[_0x91d9('0x20')](_0x28bb25[_0x35eda3],_0x47927c);}return _0x28bb25;};var getChanSpyPromise=function(_0x1767ae,_0x456d55){return new BPromise(function(_0x3774d5,_0x490d5d){return _0x1767ae[_0x91d9('0x21')][_0x91d9('0x22')]()[_0x91d9('0x23')](function(_0x46a219){if(_0x46a219){var _0x21e9d9=getChanSpyApplications(_0x456d55,_0x456d55[_0x91d9('0x24')],_0x46a219);if(_0x456d55[_0x91d9('0x24')]!=_0x456d55[_0x91d9('0x12')]){_0x21e9d9=_0x21e9d9[_0x91d9('0x25')](getChanSpyApplications(_0x456d55,_0x456d55['name'],_0x46a219));}return _0x3774d5(_0x21e9d9);}return _0x3774d5([]);})[_0x91d9('0x26')](function(_0x331d6a){_0x490d5d(_0x331d6a);});});};module[_0x91d9('0x27')]=function(_0x1cd808,_0x202711){var _0x114049=_0x1cd808[_0x91d9('0x28')];return _0x1cd808[_0x91d9('0x29')](_0x91d9('0x2a'),attributes,{'tableName':_0x91d9('0x2b'),'charset':_0x91d9('0x2c'),'collate':_0x91d9('0x2d'),'hooks':{'beforeCreate':function(_0x168cba,_0x8f402e,_0xa31ce9){_0x168cba[_0x91d9('0x2e')]();_0x168cba[_0x91d9('0x2f')](_0xa31ce9);},'beforeUpdate':function(_0xe7b346,_0x5ca974,_0x55f801){if(_0xe7b346['changed'](_0x91d9('0xf'))){_0xe7b346[_0x91d9('0x2e')]();return _0xe7b346[_0x91d9('0x2f')](_0x55f801);}_0x55f801();},'afterCreate':function(_0x497d67,_0x40662f,_0x48cd6e){var _0x156742=getUserApplications(_0x497d67,_0x497d67[_0x91d9('0x24')]);if(_0x497d67[_0x91d9('0x24')]!=_0x497d67[_0x91d9('0x12')]){_0x156742=_0x156742[_0x91d9('0x25')](getUserApplications(_0x497d67,_0x497d67[_0x91d9('0x12')]));}return _0x114049['VoiceExtension'][_0x91d9('0x30')](_0x156742)['then'](function(){if(_0x497d67['chanspy']){return getChanSpyPromise(_0x114049,_0x497d67);}})[_0x91d9('0x23')](function(_0x7313b){if(_0x7313b&&_0x7313b[_0x91d9('0x3')]){return _0x114049[_0x91d9('0x31')][_0x91d9('0x30')](_0x7313b);}})['then'](function(){_0x48cd6e();})[_0x91d9('0x26')](function(_0x2ce32e){_0x48cd6e(_0x2ce32e);});},'afterUpdate':function(_0x553352,_0x58b311,_0x4d588c){return BPromise['resolve']()[_0x91d9('0x23')](function(){if(_0x553352[_0x91d9('0x32')](_0x91d9('0xb'))||_0x553352[_0x91d9('0x32')]('context')){return _0x114049[_0x91d9('0x31')]['destroy']({'where':{'UserId':_0x553352['id'],'type':_0x91d9('0x5'),'ChanSpyId':{'$ne':null}}})[_0x91d9('0x23')](function(){if(_0x553352[_0x91d9('0xb')]){return getChanSpyPromise(_0x114049,_0x553352)[_0x91d9('0x23')](function(_0xce93a0){if(_0xce93a0&&_0xce93a0[_0x91d9('0x3')]){return _0x114049['VoiceExtension'][_0x91d9('0x30')](_0xce93a0);}});}});}})[_0x91d9('0x23')](function(){if(_0x553352['changed'](_0x91d9('0x18'))||_0x553352['changed'](_0x91d9('0x33'))){return _0x114049[_0x91d9('0x31')][_0x91d9('0x34')]({'where':{'UserId':_0x553352['id'],'type':_0x91d9('0x5'),'ChanSpyId':null}})[_0x91d9('0x23')](function(){var _0x40a0fc=getUserApplications(_0x553352,_0x553352[_0x91d9('0x24')]);if(_0x553352[_0x91d9('0x24')]!=_0x553352['name']){_0x40a0fc=_0x40a0fc[_0x91d9('0x25')](getUserApplications(_0x553352,_0x553352[_0x91d9('0x12')]));}return _0x114049['VoiceExtension'][_0x91d9('0x30')](_0x40a0fc);});}})[_0x91d9('0x23')](function(){_0x4d588c();})['catch'](function(_0x49c537){_0x4d588c(_0x49c537);});},'afterDestroy':function(_0x128455,_0x11cf4a){return _0x114049[_0x91d9('0x31')][_0x91d9('0x34')]({'where':{'UserId':_0x128455['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x3fa8c9,_0x46d532){if(!_0x46d532){return this[_0x91d9('0xf')]===this[_0x91d9('0x35')](_0x3fa8c9);}var _0x1d7635=this;this[_0x91d9('0x35')](_0x3fa8c9,function(_0x3e5853,_0x4eca6f){if(_0x3e5853){_0x46d532(_0x3e5853);}if(_0x1d7635[_0x91d9('0xf')]===_0x4eca6f){_0x46d532(null,!![]);}else{_0x46d532(null,![]);}});},'makeSalt':function(_0x2e70dc,_0x42b4ec){var _0xc4165=0x10;if(typeof arguments[0x0]===_0x91d9('0x36')){_0x42b4ec=arguments[0x0];_0x2e70dc=_0xc4165;}else if(typeof arguments[0x1]===_0x91d9('0x36')){_0x42b4ec=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x2e70dc){_0x2e70dc=_0xc4165;}return crypto[_0x91d9('0x37')](_0x2e70dc,function(_0x3591ef,_0x39078a){if(_0x3591ef){_0x42b4ec(_0x3591ef);}return _0x42b4ec(null,_0x39078a['toString'](_0x91d9('0x38')));});},'encryptPassword':function(_0x2c3e0a,_0x42bc27){if(!_0x2c3e0a||!this['salt']){return _0x42bc27?_0x42bc27(null):null;}var _0x45c38f=0x2710;var _0x3b0307=0x40;var _0x414863=new Buffer(this[_0x91d9('0x39')],_0x91d9('0x38'));if(!_0x42bc27){return crypto[_0x91d9('0x3a')](_0x2c3e0a,_0x414863,_0x45c38f,_0x3b0307,_0x91d9('0x3b'))['toString']('base64');}return crypto[_0x91d9('0x3c')](_0x2c3e0a,_0x414863,_0x45c38f,_0x3b0307,_0x91d9('0x3b'),function(_0x4d2c6e,_0x1b3899){if(_0x4d2c6e){_0x42bc27(_0x4d2c6e);}return _0x42bc27(null,_0x1b3899[_0x91d9('0x3d')](_0x91d9('0x38')));});},'updatePassword':function(_0x40af7){if(!this[_0x91d9('0xf')]){return _0x40af7(null);}if(!validatePresenceOf(this[_0x91d9('0xf')])&&authTypes[_0x91d9('0x3e')](this[_0x91d9('0x3f')])===-0x1){_0x40af7(new Error(_0x91d9('0x40')));}var _0x58b6f2=this;this['makeSalt'](function(_0x177361,_0xd25a2b){if(_0x177361){return _0x40af7(_0x177361);}_0x58b6f2[_0x91d9('0x39')]=_0xd25a2b;_0x58b6f2['encryptPassword'](_0x58b6f2[_0x91d9('0xf')],function(_0xf324eb,_0x5b2fcf){if(_0xf324eb){_0x40af7(_0xf324eb);}_0x58b6f2['password']=_0x5b2fcf;_0x40af7(null);});});},'updateMd5Password':function(){this[_0x91d9('0x41')]=md5(this[_0x91d9('0x12')]+_0x91d9('0x42')+this[_0x91d9('0xf')]);return this[_0x91d9('0x41')];}}});};