Built motion from commit (unavailable).|2.4.11
[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 _0x6702=['system','%s%s','prefix','push','CDR(type)=%s','chanspy','record','merge','MixMonitor','format','${UNIQUEID}.%s,ab','recordingFormat','auth','Authenticate','password','options','wav','WAV','gsm','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Set','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','findAll','internal','concat','catch','exports','models','User','users','utf8','utf8_bin','updateMd5Password','updatePassword','changed','bulkCreate','then','VoiceExtension','resolve','destroy','encryptPassword','function','toString','salt','sha1','pbkdf2','base64','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','crypto','util','md5','./user.attributes','google','length','context','from-sip'];(function(_0x4668a6,_0x4e8a1f){var _0x23215d=function(_0x4f4cfc){while(--_0x4f4cfc){_0x4668a6['push'](_0x4668a6['shift']());}};_0x23215d(++_0x4e8a1f);}(_0x6702,0x14c));var _0x2670=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x6702[_0x4b2436];return _0x4f5ab2;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x2670('0x0'));var util=require(_0x2670('0x1'));var md5=require(_0x2670('0x2'));var _=require('lodash');var attributes=require(_0x2670('0x3'));var authTypes=[_0x2670('0x4')];var validatePresenceOf=function(_0xc0db7e){return _0xc0db7e&&_0xc0db7e[_0x2670('0x5')];};var getChanSpyApplications=function(_0x457ac5,_0x467197,_0x323cf8){var _0x503690={'context':_0x457ac5[_0x2670('0x6')]||_0x2670('0x7'),'type':_0x2670('0x8'),'isApp':![],'UserId':_0x457ac5['id']};var _0x24354d=[];for(var _0x1d8f19=0x0,_0x549ac6=0x1;_0x1d8f19<_0x323cf8[_0x2670('0x5')];_0x1d8f19++,_0x549ac6=0x1){var _0x10bae1={'exten':util['format'](_0x2670('0x9'),_0x323cf8[_0x1d8f19][_0x2670('0xa')],_0x467197),'ChanSpyId':_0x323cf8[_0x1d8f19]['id']};_0x24354d[_0x2670('0xb')](_['merge']({'app':'Set','appdata':util['format'](_0x2670('0xc'),_0x2670('0xd')),'priority':_0x549ac6++},_0x503690,_0x10bae1));if(_0x323cf8[_0x1d8f19][_0x2670('0xe')]){_0x24354d[_0x2670('0xb')](_[_0x2670('0xf')]({'app':_0x2670('0x10'),'appdata':util[_0x2670('0x11')](_0x2670('0x12'),_0x323cf8[_0x1d8f19][_0x2670('0x13')]),'priority':_0x549ac6++},_0x503690,_0x10bae1));}if(_0x323cf8[_0x1d8f19][_0x2670('0x14')]){_0x24354d[_0x2670('0xb')](_[_0x2670('0xf')]({'app':_0x2670('0x15'),'appdata':_0x323cf8[_0x1d8f19][_0x2670('0x16')],'priority':_0x549ac6++},_0x503690,_0x10bae1));}_0x24354d[_0x2670('0xb')](_[_0x2670('0xf')]({'app':'ChanSpy','appdata':util[_0x2670('0x11')]('SIP/%s,%s',_0x457ac5['name'],_0x323cf8[_0x1d8f19][_0x2670('0x17')]?_0x323cf8[_0x1d8f19][_0x2670('0x17')]['join'](''):''),'priority':_0x549ac6++},_0x503690,_0x10bae1));if(_0x323cf8[_0x1d8f19]['record']){_0x24354d['push'](_[_0x2670('0xf')]({'app':'StopMixMonitor','priority':_0x549ac6++},_0x503690,_0x10bae1));}}return _0x24354d;};var getUserApplications=function(_0xc81bec,_0x2e19e9){var _0x83756=[_0x2670('0x18'),_0x2670('0x19'),_0x2670('0x1a')];var _0x7114b7={'context':_0xc81bec['context']||'from-sip','exten':_0x2e19e9,'type':_0x2670('0x8'),'isApp':![],'UserId':_0xc81bec['id']};var _0x54654d=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0xc81bec[_0x2670('0x1b')]&&_['includes'](_0x83756,_0xc81bec[_0x2670('0x1b')])){_0x54654d[_0x2670('0xb')]({'app':'Set','appdata':_0x2670('0x1c')});_0x54654d[_0x2670('0xb')]({'app':_0x2670('0x1d'),'appdata':util['format'](_0x2670('0x1e'),_0xc81bec[_0x2670('0x1b')])});_0x54654d[_0x2670('0xb')]({'app':_0x2670('0x1f'),'appdata':util['format'](_0x2670('0x20'),_0xc81bec[_0x2670('0x21')])});}else{_0x54654d[_0x2670('0xb')]({'app':_0x2670('0x1f'),'appdata':util[_0x2670('0x11')](_0x2670('0x22'),_0xc81bec['name'])});}_0x54654d[_0x2670('0xb')]({'app':_0x2670('0x23')});for(var _0x1786ce=0x0;_0x1786ce<_0x54654d['length'];_0x1786ce++){_0x54654d[_0x1786ce][_0x2670('0x24')]=_0x1786ce+0x1;_0x54654d[_0x1786ce]=_['defaults'](_0x54654d[_0x1786ce],_0x7114b7);}return _0x54654d;};var getChanSpyPromise=function(_0x3cf3ad,_0x23530){return new BPromise(function(_0x1e1ceb,_0x3842f0){return _0x3cf3ad[_0x2670('0x25')][_0x2670('0x26')]()['then'](function(_0x12ec23){if(_0x12ec23){var _0x5edc63=getChanSpyApplications(_0x23530,_0x23530[_0x2670('0x27')],_0x12ec23);if(_0x23530[_0x2670('0x27')]!=_0x23530[_0x2670('0x21')]){_0x5edc63=_0x5edc63[_0x2670('0x28')](getChanSpyApplications(_0x23530,_0x23530[_0x2670('0x21')],_0x12ec23));}return _0x1e1ceb(_0x5edc63);}return _0x1e1ceb([]);})[_0x2670('0x29')](function(_0x119922){_0x3842f0(_0x119922);});});};module[_0x2670('0x2a')]=function(_0x27a18a,_0x59257f){var _0x4442b4=_0x27a18a[_0x2670('0x2b')];return _0x27a18a['define'](_0x2670('0x2c'),attributes,{'tableName':_0x2670('0x2d'),'charset':_0x2670('0x2e'),'collate':_0x2670('0x2f'),'hooks':{'beforeCreate':function(_0x3e0914,_0x2f497a,_0x1b8e56){_0x3e0914[_0x2670('0x30')]();_0x3e0914[_0x2670('0x31')](_0x1b8e56);},'beforeUpdate':function(_0x293633,_0x4a526b,_0x3b3863){if(_0x293633[_0x2670('0x32')](_0x2670('0x16'))){_0x293633[_0x2670('0x30')]();return _0x293633[_0x2670('0x31')](_0x3b3863);}_0x3b3863();},'afterCreate':function(_0x46886e,_0x26024f,_0xbb9a46){var _0x46a876=getUserApplications(_0x46886e,_0x46886e[_0x2670('0x27')]);if(_0x46886e[_0x2670('0x27')]!=_0x46886e['name']){_0x46a876=_0x46a876['concat'](getUserApplications(_0x46886e,_0x46886e[_0x2670('0x21')]));}return _0x4442b4['VoiceExtension'][_0x2670('0x33')](_0x46a876)[_0x2670('0x34')](function(){if(_0x46886e[_0x2670('0xd')]){return getChanSpyPromise(_0x4442b4,_0x46886e);}})['then'](function(_0x1349df){if(_0x1349df&&_0x1349df[_0x2670('0x5')]){return _0x4442b4[_0x2670('0x35')][_0x2670('0x33')](_0x1349df);}})['then'](function(){_0xbb9a46();})[_0x2670('0x29')](function(_0x2fb15b){_0xbb9a46(_0x2fb15b);});},'afterUpdate':function(_0x534443,_0x338459,_0x170ea8){return BPromise[_0x2670('0x36')]()[_0x2670('0x34')](function(){if(_0x534443[_0x2670('0x32')]('chanspy')||_0x534443[_0x2670('0x32')](_0x2670('0x6'))){return _0x4442b4[_0x2670('0x35')][_0x2670('0x37')]({'where':{'UserId':_0x534443['id'],'type':_0x2670('0x8'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x534443[_0x2670('0xd')]){return getChanSpyPromise(_0x4442b4,_0x534443)[_0x2670('0x34')](function(_0x1f684b){if(_0x1f684b&&_0x1f684b[_0x2670('0x5')]){return _0x4442b4[_0x2670('0x35')]['bulkCreate'](_0x1f684b);}});}});}})[_0x2670('0x34')](function(){if(_0x534443[_0x2670('0x32')](_0x2670('0x1b'))||_0x534443[_0x2670('0x32')]('context')){return _0x4442b4['VoiceExtension']['destroy']({'where':{'UserId':_0x534443['id'],'type':_0x2670('0x8'),'ChanSpyId':null}})[_0x2670('0x34')](function(){var _0x9f34e5=getUserApplications(_0x534443,_0x534443[_0x2670('0x27')]);if(_0x534443['internal']!=_0x534443[_0x2670('0x21')]){_0x9f34e5=_0x9f34e5['concat'](getUserApplications(_0x534443,_0x534443[_0x2670('0x21')]));}return _0x4442b4['VoiceExtension']['bulkCreate'](_0x9f34e5);});}})[_0x2670('0x34')](function(){_0x170ea8();})[_0x2670('0x29')](function(_0x21ac8d){_0x170ea8(_0x21ac8d);});},'afterDestroy':function(_0x1c04a9,_0x454cc4){return _0x4442b4[_0x2670('0x35')][_0x2670('0x37')]({'where':{'UserId':_0x1c04a9['id'],'type':_0x2670('0x8')}});}},'instanceMethods':{'authenticate':function(_0x20c4eb,_0x1a1100){if(!_0x1a1100){return this[_0x2670('0x16')]===this['encryptPassword'](_0x20c4eb);}var _0x2f5501=this;this[_0x2670('0x38')](_0x20c4eb,function(_0x497213,_0x566838){if(_0x497213){_0x1a1100(_0x497213);}if(_0x2f5501[_0x2670('0x16')]===_0x566838){_0x1a1100(null,!![]);}else{_0x1a1100(null,![]);}});},'makeSalt':function(_0x4863f4,_0x86ec5a){var _0x12825f=0x10;if(typeof arguments[0x0]===_0x2670('0x39')){_0x86ec5a=arguments[0x0];_0x4863f4=_0x12825f;}else if(typeof arguments[0x1]===_0x2670('0x39')){_0x86ec5a=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x4863f4){_0x4863f4=_0x12825f;}return crypto['randomBytes'](_0x4863f4,function(_0x43d19c,_0xd7ab1b){if(_0x43d19c){_0x86ec5a(_0x43d19c);}return _0x86ec5a(null,_0xd7ab1b[_0x2670('0x3a')]('base64'));});},'encryptPassword':function(_0x1000a4,_0x3dc200){if(!_0x1000a4||!this['salt']){return _0x3dc200?_0x3dc200(null):null;}var _0x42fd70=0x2710;var _0x324cc9=0x40;var _0x5d9e70=new Buffer(this[_0x2670('0x3b')],'base64');if(!_0x3dc200){return crypto['pbkdf2Sync'](_0x1000a4,_0x5d9e70,_0x42fd70,_0x324cc9,_0x2670('0x3c'))[_0x2670('0x3a')]('base64');}return crypto[_0x2670('0x3d')](_0x1000a4,_0x5d9e70,_0x42fd70,_0x324cc9,_0x2670('0x3c'),function(_0x27adb7,_0x3540b1){if(_0x27adb7){_0x3dc200(_0x27adb7);}return _0x3dc200(null,_0x3540b1[_0x2670('0x3a')](_0x2670('0x3e')));});},'updatePassword':function(_0x2c4313){if(!this[_0x2670('0x16')]){return _0x2c4313(null);}if(!validatePresenceOf(this[_0x2670('0x16')])&&authTypes['indexOf'](this[_0x2670('0x3f')])===-0x1){_0x2c4313(new Error(_0x2670('0x40')));}var _0x1574fb=this;this[_0x2670('0x41')](function(_0x4a33aa,_0x5f3dad){if(_0x4a33aa){return _0x2c4313(_0x4a33aa);}_0x1574fb[_0x2670('0x3b')]=_0x5f3dad;_0x1574fb[_0x2670('0x38')](_0x1574fb[_0x2670('0x16')],function(_0x4e1b21,_0x300a09){if(_0x4e1b21){_0x2c4313(_0x4e1b21);}_0x1574fb[_0x2670('0x16')]=_0x300a09;_0x2c4313(null);});});},'updateMd5Password':function(){this[_0x2670('0x42')]=md5(this['name']+_0x2670('0x43')+this[_0x2670('0x16')]);return this[_0x2670('0x42')];}}});};