Built motion from commit (unavailable).|2.5.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 _0x3886=['record','MixMonitor','${UNIQUEID}.%s,a','auth','password','ChanSpy','name','options','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','Hangup','defaults','VoiceChanSpy','findAll','then','concat','exports','models','define','User','users','utf8','utf8_bin','updateMd5Password','updatePassword','changed','internal','VoiceExtension','bulkCreate','resolve','destroy','catch','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','makeSalt','md5secret','bluebird','crypto','util','lodash','./user.attributes','google','length','context','from-sip','system','format','prefix','push','merge','Set','CDR(type)=%s','chanspy'];(function(_0x31cc0e,_0x24ba4c){var _0x144862=function(_0x4d236e){while(--_0x4d236e){_0x31cc0e['push'](_0x31cc0e['shift']());}};_0x144862(++_0x24ba4c);}(_0x3886,0x148));var _0x6388=function(_0x428d9d,_0x4f8127){_0x428d9d=_0x428d9d-0x0;var _0x497319=_0x3886[_0x428d9d];return _0x497319;};'use strict';var BPromise=require(_0x6388('0x0'));var crypto=require(_0x6388('0x1'));var util=require(_0x6388('0x2'));var md5=require('md5');var _=require(_0x6388('0x3'));var attributes=require(_0x6388('0x4'));var authTypes=[_0x6388('0x5')];var validatePresenceOf=function(_0x5f0957){return _0x5f0957&&_0x5f0957[_0x6388('0x6')];};var getChanSpyApplications=function(_0x3d8690,_0x4c5f2b,_0x44fee8){var _0xd297f8={'context':_0x3d8690[_0x6388('0x7')]||_0x6388('0x8'),'type':_0x6388('0x9'),'isApp':![],'UserId':_0x3d8690['id']};var _0x261f7b=[];for(var _0x3cba48=0x0,_0x4f995e=0x1;_0x3cba48<_0x44fee8[_0x6388('0x6')];_0x3cba48++,_0x4f995e=0x1){var _0x564fbc={'exten':util[_0x6388('0xa')]('%s%s',_0x44fee8[_0x3cba48][_0x6388('0xb')],_0x4c5f2b),'ChanSpyId':_0x44fee8[_0x3cba48]['id']};_0x261f7b[_0x6388('0xc')](_[_0x6388('0xd')]({'app':_0x6388('0xe'),'appdata':util['format'](_0x6388('0xf'),_0x6388('0x10')),'priority':_0x4f995e++},_0xd297f8,_0x564fbc));if(_0x44fee8[_0x3cba48][_0x6388('0x11')]){_0x261f7b[_0x6388('0xc')](_[_0x6388('0xd')]({'app':_0x6388('0x12'),'appdata':util[_0x6388('0xa')](_0x6388('0x13'),_0x44fee8[_0x3cba48]['recordingFormat']),'priority':_0x4f995e++},_0xd297f8,_0x564fbc));}if(_0x44fee8[_0x3cba48][_0x6388('0x14')]){_0x261f7b[_0x6388('0xc')](_[_0x6388('0xd')]({'app':'Authenticate','appdata':_0x44fee8[_0x3cba48][_0x6388('0x15')],'priority':_0x4f995e++},_0xd297f8,_0x564fbc));}_0x261f7b['push'](_[_0x6388('0xd')]({'app':_0x6388('0x16'),'appdata':util[_0x6388('0xa')]('SIP/%s,%s',_0x3d8690[_0x6388('0x17')],_0x44fee8[_0x3cba48]['options']?_0x44fee8[_0x3cba48][_0x6388('0x18')]['join'](''):''),'priority':_0x4f995e++},_0xd297f8,_0x564fbc));if(_0x44fee8[_0x3cba48][_0x6388('0x11')]){_0x261f7b[_0x6388('0xc')](_[_0x6388('0xd')]({'app':_0x6388('0x19'),'priority':_0x4f995e++},_0xd297f8,_0x564fbc));}}return _0x261f7b;};var getUserApplications=function(_0x4cbe67,_0x34e538){var _0x166400=['wav',_0x6388('0x1a'),_0x6388('0x1b')];var _0x4f7f7e={'context':_0x4cbe67[_0x6388('0x7')]||'from-sip','exten':_0x34e538,'type':_0x6388('0x9'),'isApp':![],'UserId':_0x4cbe67['id']};var _0x300393=[{'app':_0x6388('0xe'),'appdata':_0x6388('0x1c')}];if(_0x4cbe67[_0x6388('0x1d')]&&_[_0x6388('0x1e')](_0x166400,_0x4cbe67[_0x6388('0x1d')])){_0x300393[_0x6388('0xc')]({'app':_0x6388('0xe'),'appdata':_0x6388('0x1f')});_0x300393['push']({'app':_0x6388('0xe'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x4cbe67[_0x6388('0x1d')])});_0x300393['push']({'app':_0x6388('0x20'),'appdata':util[_0x6388('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x4cbe67['name'])});}else{_0x300393[_0x6388('0xc')]({'app':_0x6388('0x20'),'appdata':util['format'](_0x6388('0x21'),_0x4cbe67[_0x6388('0x17')])});}_0x300393[_0x6388('0xc')]({'app':_0x6388('0x22')});for(var _0x33b359=0x0;_0x33b359<_0x300393['length'];_0x33b359++){_0x300393[_0x33b359]['priority']=_0x33b359+0x1;_0x300393[_0x33b359]=_[_0x6388('0x23')](_0x300393[_0x33b359],_0x4f7f7e);}return _0x300393;};var getChanSpyPromise=function(_0x4616f2,_0x27308b){return new BPromise(function(_0x518e2c,_0x446b2b){return _0x4616f2[_0x6388('0x24')][_0x6388('0x25')]()[_0x6388('0x26')](function(_0x3bb69e){if(_0x3bb69e){var _0x44f3b7=getChanSpyApplications(_0x27308b,_0x27308b['internal'],_0x3bb69e);if(_0x27308b['internal']!=_0x27308b[_0x6388('0x17')]){_0x44f3b7=_0x44f3b7[_0x6388('0x27')](getChanSpyApplications(_0x27308b,_0x27308b[_0x6388('0x17')],_0x3bb69e));}return _0x518e2c(_0x44f3b7);}return _0x518e2c([]);})['catch'](function(_0x2b5b24){_0x446b2b(_0x2b5b24);});});};module[_0x6388('0x28')]=function(_0x2d79d9,_0x48d939){var _0x45db9d=_0x2d79d9[_0x6388('0x29')];return _0x2d79d9[_0x6388('0x2a')](_0x6388('0x2b'),attributes,{'tableName':_0x6388('0x2c'),'charset':_0x6388('0x2d'),'collate':_0x6388('0x2e'),'hooks':{'beforeCreate':function(_0x9a707b,_0x5b97bf,_0x2c9b73){_0x9a707b[_0x6388('0x2f')]();_0x9a707b[_0x6388('0x30')](_0x2c9b73);},'beforeUpdate':function(_0x516b60,_0x214850,_0x547b69){if(_0x516b60[_0x6388('0x31')](_0x6388('0x15'))){_0x516b60[_0x6388('0x2f')]();return _0x516b60[_0x6388('0x30')](_0x547b69);}_0x547b69();},'afterCreate':function(_0x57a21a,_0x546af8,_0x20acfa){var _0x3fb850=getUserApplications(_0x57a21a,_0x57a21a[_0x6388('0x32')]);if(_0x57a21a[_0x6388('0x32')]!=_0x57a21a[_0x6388('0x17')]){_0x3fb850=_0x3fb850[_0x6388('0x27')](getUserApplications(_0x57a21a,_0x57a21a[_0x6388('0x17')]));}return _0x45db9d[_0x6388('0x33')]['bulkCreate'](_0x3fb850)[_0x6388('0x26')](function(){if(_0x57a21a[_0x6388('0x10')]){return getChanSpyPromise(_0x45db9d,_0x57a21a);}})[_0x6388('0x26')](function(_0x67c634){if(_0x67c634&&_0x67c634['length']){return _0x45db9d[_0x6388('0x33')][_0x6388('0x34')](_0x67c634);}})[_0x6388('0x26')](function(){_0x20acfa();})['catch'](function(_0x2bc0d2){_0x20acfa(_0x2bc0d2);});},'afterUpdate':function(_0x5dbec0,_0x157a4f,_0x4692fe){return BPromise[_0x6388('0x35')]()[_0x6388('0x26')](function(){if(_0x5dbec0[_0x6388('0x31')](_0x6388('0x10'))||_0x5dbec0[_0x6388('0x31')](_0x6388('0x7'))){return _0x45db9d[_0x6388('0x33')][_0x6388('0x36')]({'where':{'UserId':_0x5dbec0['id'],'type':_0x6388('0x9'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x5dbec0[_0x6388('0x10')]){return getChanSpyPromise(_0x45db9d,_0x5dbec0)[_0x6388('0x26')](function(_0x1179ee){if(_0x1179ee&&_0x1179ee['length']){return _0x45db9d[_0x6388('0x33')]['bulkCreate'](_0x1179ee);}});}});}})[_0x6388('0x26')](function(){if(_0x5dbec0[_0x6388('0x31')]('extensionMonitor')||_0x5dbec0[_0x6388('0x31')](_0x6388('0x7'))){return _0x45db9d[_0x6388('0x33')][_0x6388('0x36')]({'where':{'UserId':_0x5dbec0['id'],'type':_0x6388('0x9'),'ChanSpyId':null}})[_0x6388('0x26')](function(){var _0x4e0d6b=getUserApplications(_0x5dbec0,_0x5dbec0[_0x6388('0x32')]);if(_0x5dbec0['internal']!=_0x5dbec0[_0x6388('0x17')]){_0x4e0d6b=_0x4e0d6b['concat'](getUserApplications(_0x5dbec0,_0x5dbec0[_0x6388('0x17')]));}return _0x45db9d['VoiceExtension'][_0x6388('0x34')](_0x4e0d6b);});}})[_0x6388('0x26')](function(){_0x4692fe();})[_0x6388('0x37')](function(_0x9c9f1a){_0x4692fe(_0x9c9f1a);});},'afterDestroy':function(_0x57e8b7,_0x504213){return _0x45db9d[_0x6388('0x33')][_0x6388('0x36')]({'where':{'UserId':_0x57e8b7['id'],'type':_0x6388('0x9')}});}},'instanceMethods':{'authenticate':function(_0x252d3d,_0x4b9dfd){if(!_0x4b9dfd){return this[_0x6388('0x15')]===this['encryptPassword'](_0x252d3d);}var _0x5b9d3c=this;this[_0x6388('0x38')](_0x252d3d,function(_0x2323f9,_0x59ba5d){if(_0x2323f9){_0x4b9dfd(_0x2323f9);}if(_0x5b9d3c[_0x6388('0x15')]===_0x59ba5d){_0x4b9dfd(null,!![]);}else{_0x4b9dfd(null,![]);}});},'makeSalt':function(_0xc66914,_0x2e62c3){var _0x1f6dce=0x10;if(typeof arguments[0x0]===_0x6388('0x39')){_0x2e62c3=arguments[0x0];_0xc66914=_0x1f6dce;}else if(typeof arguments[0x1]===_0x6388('0x39')){_0x2e62c3=arguments[0x1];}else{throw new Error(_0x6388('0x3a'));}if(!_0xc66914){_0xc66914=_0x1f6dce;}return crypto[_0x6388('0x3b')](_0xc66914,function(_0x341ae9,_0x4eb780){if(_0x341ae9){_0x2e62c3(_0x341ae9);}return _0x2e62c3(null,_0x4eb780['toString'](_0x6388('0x3c')));});},'encryptPassword':function(_0x57e7a8,_0x38ce4f){if(!_0x57e7a8||!this[_0x6388('0x3d')]){return _0x38ce4f?_0x38ce4f(null):null;}var _0x2d4ee5=0x2710;var _0x44c536=0x40;var _0x2a4250=new Buffer(this[_0x6388('0x3d')],'base64');if(!_0x38ce4f){return crypto[_0x6388('0x3e')](_0x57e7a8,_0x2a4250,_0x2d4ee5,_0x44c536,_0x6388('0x3f'))[_0x6388('0x40')](_0x6388('0x3c'));}return crypto[_0x6388('0x41')](_0x57e7a8,_0x2a4250,_0x2d4ee5,_0x44c536,_0x6388('0x3f'),function(_0x15a482,_0x122df9){if(_0x15a482){_0x38ce4f(_0x15a482);}return _0x38ce4f(null,_0x122df9[_0x6388('0x40')]('base64'));});},'updatePassword':function(_0x197c70){if(!this[_0x6388('0x15')]){return _0x197c70(null);}if(!validatePresenceOf(this[_0x6388('0x15')])&&authTypes[_0x6388('0x42')](this['provider'])===-0x1){_0x197c70(new Error('Invalid\x20password'));}var _0xa8d2d=this;this[_0x6388('0x43')](function(_0x43c66d,_0x2d3f6f){if(_0x43c66d){return _0x197c70(_0x43c66d);}_0xa8d2d['salt']=_0x2d3f6f;_0xa8d2d[_0x6388('0x38')](_0xa8d2d['password'],function(_0x124583,_0x2d455a){if(_0x124583){_0x197c70(_0x124583);}_0xa8d2d[_0x6388('0x15')]=_0x2d455a;_0x197c70(null);});});},'updateMd5Password':function(){this[_0x6388('0x44')]=md5(this[_0x6388('0x17')]+':asterisk:'+this['password']);return this[_0x6388('0x44')];}}});};