Built motion from commit (unavailable).|2.5.2
[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 _0x4af2=['Invalid\x20password','makeSalt','md5secret','bluebird','crypto','lodash','./user.attributes','google','context','from-sip','system','length','format','%s%s','prefix','push','merge','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','record','StopMixMonitor','wav','gsm','Set','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','models','define','User','users','utf8','utf8_bin','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','chanspy','resolve','destroy','encryptPassword','function','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider'];(function(_0x3009d0,_0xc9e702){var _0x306860=function(_0x435c49){while(--_0x435c49){_0x3009d0['push'](_0x3009d0['shift']());}};_0x306860(++_0xc9e702);}(_0x4af2,0x175));var _0x24af=function(_0x293421,_0x305906){_0x293421=_0x293421-0x0;var _0xcf24a1=_0x4af2[_0x293421];return _0xcf24a1;};'use strict';var BPromise=require(_0x24af('0x0'));var crypto=require(_0x24af('0x1'));var util=require('util');var md5=require('md5');var _=require(_0x24af('0x2'));var attributes=require(_0x24af('0x3'));var authTypes=[_0x24af('0x4')];var validatePresenceOf=function(_0x1ee187){return _0x1ee187&&_0x1ee187['length'];};var getChanSpyApplications=function(_0x5cc751,_0x3937fa,_0xbae306){var _0x5f33fb={'context':_0x5cc751[_0x24af('0x5')]||_0x24af('0x6'),'type':_0x24af('0x7'),'isApp':![],'UserId':_0x5cc751['id']};var _0xe3f93c=[];for(var _0x5bbc9b=0x0,_0x302769=0x1;_0x5bbc9b<_0xbae306[_0x24af('0x8')];_0x5bbc9b++,_0x302769=0x1){var _0x206829={'exten':util[_0x24af('0x9')](_0x24af('0xa'),_0xbae306[_0x5bbc9b][_0x24af('0xb')],_0x3937fa),'ChanSpyId':_0xbae306[_0x5bbc9b]['id']};_0xe3f93c[_0x24af('0xc')](_[_0x24af('0xd')]({'app':'Set','appdata':util['format']('CDR(type)=%s','chanspy'),'priority':_0x302769++},_0x5f33fb,_0x206829));if(_0xbae306[_0x5bbc9b]['record']){_0xe3f93c[_0x24af('0xc')](_[_0x24af('0xd')]({'app':_0x24af('0xe'),'appdata':util[_0x24af('0x9')]('${UNIQUEID}.%s,a',_0xbae306[_0x5bbc9b][_0x24af('0xf')]),'priority':_0x302769++},_0x5f33fb,_0x206829));}if(_0xbae306[_0x5bbc9b][_0x24af('0x10')]){_0xe3f93c[_0x24af('0xc')](_['merge']({'app':_0x24af('0x11'),'appdata':_0xbae306[_0x5bbc9b][_0x24af('0x12')],'priority':_0x302769++},_0x5f33fb,_0x206829));}_0xe3f93c[_0x24af('0xc')](_[_0x24af('0xd')]({'app':_0x24af('0x13'),'appdata':util[_0x24af('0x9')](_0x24af('0x14'),_0x5cc751[_0x24af('0x15')],_0xbae306[_0x5bbc9b][_0x24af('0x16')]?_0xbae306[_0x5bbc9b][_0x24af('0x16')]['join'](''):''),'priority':_0x302769++},_0x5f33fb,_0x206829));if(_0xbae306[_0x5bbc9b][_0x24af('0x17')]){_0xe3f93c[_0x24af('0xc')](_[_0x24af('0xd')]({'app':_0x24af('0x18'),'priority':_0x302769++},_0x5f33fb,_0x206829));}}return _0xe3f93c;};var getUserApplications=function(_0x22e06a,_0x707355){var _0x14a35e=[_0x24af('0x19'),'WAV',_0x24af('0x1a')];var _0x6660ba={'context':_0x22e06a[_0x24af('0x5')]||_0x24af('0x6'),'exten':_0x707355,'type':'system','isApp':![],'UserId':_0x22e06a['id']};var _0x314c84=[{'app':_0x24af('0x1b'),'appdata':_0x24af('0x1c')}];if(_0x22e06a[_0x24af('0x1d')]&&_[_0x24af('0x1e')](_0x14a35e,_0x22e06a[_0x24af('0x1d')])){_0x314c84[_0x24af('0xc')]({'app':'Set','appdata':_0x24af('0x1f')});_0x314c84[_0x24af('0xc')]({'app':_0x24af('0x1b'),'appdata':util[_0x24af('0x9')](_0x24af('0x20'),_0x22e06a['extensionMonitor'])});_0x314c84[_0x24af('0xc')]({'app':_0x24af('0x21'),'appdata':util[_0x24af('0x9')](_0x24af('0x22'),_0x22e06a[_0x24af('0x15')])});}else{_0x314c84[_0x24af('0xc')]({'app':_0x24af('0x21'),'appdata':util['format'](_0x24af('0x23'),_0x22e06a[_0x24af('0x15')])});}_0x314c84[_0x24af('0xc')]({'app':_0x24af('0x24')});for(var _0xd6e7bf=0x0;_0xd6e7bf<_0x314c84[_0x24af('0x8')];_0xd6e7bf++){_0x314c84[_0xd6e7bf][_0x24af('0x25')]=_0xd6e7bf+0x1;_0x314c84[_0xd6e7bf]=_[_0x24af('0x26')](_0x314c84[_0xd6e7bf],_0x6660ba);}return _0x314c84;};var getChanSpyPromise=function(_0x27090f,_0x190476){return new BPromise(function(_0x2479cb,_0x4a783e){return _0x27090f[_0x24af('0x27')][_0x24af('0x28')]()[_0x24af('0x29')](function(_0x4c9783){if(_0x4c9783){var _0xe740a3=getChanSpyApplications(_0x190476,_0x190476['internal'],_0x4c9783);if(_0x190476[_0x24af('0x2a')]!=_0x190476[_0x24af('0x15')]){_0xe740a3=_0xe740a3[_0x24af('0x2b')](getChanSpyApplications(_0x190476,_0x190476[_0x24af('0x15')],_0x4c9783));}return _0x2479cb(_0xe740a3);}return _0x2479cb([]);})[_0x24af('0x2c')](function(_0x34136c){_0x4a783e(_0x34136c);});});};module[_0x24af('0x2d')]=function(_0x1e855f,_0x3825f7){var _0x5f5296=_0x1e855f[_0x24af('0x2e')];return _0x1e855f[_0x24af('0x2f')](_0x24af('0x30'),attributes,{'tableName':_0x24af('0x31'),'charset':_0x24af('0x32'),'collate':_0x24af('0x33'),'hooks':{'beforeCreate':function(_0x144ac0,_0x6604f,_0x337e4d){_0x144ac0[_0x24af('0x34')]();_0x144ac0[_0x24af('0x35')](_0x337e4d);},'beforeUpdate':function(_0x320b3b,_0x4a7540,_0x110253){if(_0x320b3b[_0x24af('0x36')](_0x24af('0x12'))){_0x320b3b['updateMd5Password']();return _0x320b3b[_0x24af('0x35')](_0x110253);}_0x110253();},'afterCreate':function(_0x123772,_0x1dc82c,_0x11fdb8){var _0x133785=getUserApplications(_0x123772,_0x123772[_0x24af('0x2a')]);if(_0x123772[_0x24af('0x2a')]!=_0x123772[_0x24af('0x15')]){_0x133785=_0x133785[_0x24af('0x2b')](getUserApplications(_0x123772,_0x123772[_0x24af('0x15')]));}return _0x5f5296[_0x24af('0x37')][_0x24af('0x38')](_0x133785)[_0x24af('0x29')](function(){if(_0x123772[_0x24af('0x39')]){return getChanSpyPromise(_0x5f5296,_0x123772);}})[_0x24af('0x29')](function(_0x51461d){if(_0x51461d&&_0x51461d[_0x24af('0x8')]){return _0x5f5296[_0x24af('0x37')][_0x24af('0x38')](_0x51461d);}})[_0x24af('0x29')](function(){_0x11fdb8();})['catch'](function(_0x1112fb){_0x11fdb8(_0x1112fb);});},'afterUpdate':function(_0x55fcfb,_0x30ce05,_0x538a29){return BPromise[_0x24af('0x3a')]()[_0x24af('0x29')](function(){if(_0x55fcfb[_0x24af('0x36')]('chanspy')||_0x55fcfb[_0x24af('0x36')]('context')){return _0x5f5296[_0x24af('0x37')][_0x24af('0x3b')]({'where':{'UserId':_0x55fcfb['id'],'type':_0x24af('0x7'),'ChanSpyId':{'$ne':null}}})[_0x24af('0x29')](function(){if(_0x55fcfb['chanspy']){return getChanSpyPromise(_0x5f5296,_0x55fcfb)[_0x24af('0x29')](function(_0x3a55c2){if(_0x3a55c2&&_0x3a55c2[_0x24af('0x8')]){return _0x5f5296[_0x24af('0x37')][_0x24af('0x38')](_0x3a55c2);}});}});}})[_0x24af('0x29')](function(){if(_0x55fcfb[_0x24af('0x36')](_0x24af('0x1d'))||_0x55fcfb[_0x24af('0x36')](_0x24af('0x5'))){return _0x5f5296[_0x24af('0x37')][_0x24af('0x3b')]({'where':{'UserId':_0x55fcfb['id'],'type':_0x24af('0x7'),'ChanSpyId':null}})[_0x24af('0x29')](function(){var _0x26edc1=getUserApplications(_0x55fcfb,_0x55fcfb[_0x24af('0x2a')]);if(_0x55fcfb[_0x24af('0x2a')]!=_0x55fcfb[_0x24af('0x15')]){_0x26edc1=_0x26edc1[_0x24af('0x2b')](getUserApplications(_0x55fcfb,_0x55fcfb[_0x24af('0x15')]));}return _0x5f5296['VoiceExtension'][_0x24af('0x38')](_0x26edc1);});}})[_0x24af('0x29')](function(){_0x538a29();})[_0x24af('0x2c')](function(_0x242a0d){_0x538a29(_0x242a0d);});},'afterDestroy':function(_0x3f8a27,_0x910265){return _0x5f5296[_0x24af('0x37')]['destroy']({'where':{'UserId':_0x3f8a27['id'],'type':_0x24af('0x7')}});}},'instanceMethods':{'authenticate':function(_0x493fce,_0x1ff85b){if(!_0x1ff85b){return this[_0x24af('0x12')]===this['encryptPassword'](_0x493fce);}var _0x1b5d32=this;this[_0x24af('0x3c')](_0x493fce,function(_0x57f56c,_0x50927a){if(_0x57f56c){_0x1ff85b(_0x57f56c);}if(_0x1b5d32['password']===_0x50927a){_0x1ff85b(null,!![]);}else{_0x1ff85b(null,![]);}});},'makeSalt':function(_0x52089d,_0x21b7a2){var _0x23e0c1=0x10;if(typeof arguments[0x0]===_0x24af('0x3d')){_0x21b7a2=arguments[0x0];_0x52089d=_0x23e0c1;}else if(typeof arguments[0x1]===_0x24af('0x3d')){_0x21b7a2=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x52089d){_0x52089d=_0x23e0c1;}return crypto[_0x24af('0x3e')](_0x52089d,function(_0x3a366f,_0x1efdf7){if(_0x3a366f){_0x21b7a2(_0x3a366f);}return _0x21b7a2(null,_0x1efdf7['toString'](_0x24af('0x3f')));});},'encryptPassword':function(_0x574363,_0x4b8c32){if(!_0x574363||!this[_0x24af('0x40')]){return _0x4b8c32?_0x4b8c32(null):null;}var _0x4edebb=0x2710;var _0x42a259=0x40;var _0xc3e66f=new Buffer(this['salt'],_0x24af('0x3f'));if(!_0x4b8c32){return crypto[_0x24af('0x41')](_0x574363,_0xc3e66f,_0x4edebb,_0x42a259,_0x24af('0x42'))[_0x24af('0x43')](_0x24af('0x3f'));}return crypto[_0x24af('0x44')](_0x574363,_0xc3e66f,_0x4edebb,_0x42a259,_0x24af('0x42'),function(_0x3c210d,_0x4aff27){if(_0x3c210d){_0x4b8c32(_0x3c210d);}return _0x4b8c32(null,_0x4aff27[_0x24af('0x43')](_0x24af('0x3f')));});},'updatePassword':function(_0x2e4661){if(!this[_0x24af('0x12')]){return _0x2e4661(null);}if(!validatePresenceOf(this[_0x24af('0x12')])&&authTypes[_0x24af('0x45')](this[_0x24af('0x46')])===-0x1){_0x2e4661(new Error(_0x24af('0x47')));}var _0x36fac0=this;this[_0x24af('0x48')](function(_0x4a9eff,_0x1ab814){if(_0x4a9eff){return _0x2e4661(_0x4a9eff);}_0x36fac0[_0x24af('0x40')]=_0x1ab814;_0x36fac0['encryptPassword'](_0x36fac0[_0x24af('0x12')],function(_0x3cea00,_0x1a5296){if(_0x3cea00){_0x2e4661(_0x3cea00);}_0x36fac0['password']=_0x1a5296;_0x2e4661(null);});});},'updateMd5Password':function(){this[_0x24af('0x49')]=md5(this['name']+':asterisk:'+this[_0x24af('0x12')]);return this[_0x24af('0x49')];}}});};