715a78469aab7a053ec2934e3918a065a584a16c
[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 _0xe1e4=['join','record','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','VoiceChanSpy','findAll','internal','concat','catch','exports','define','users','utf8','updatePassword','changed','updateMd5Password','VoiceExtension','then','bulkCreate','resolve','system','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','pbkdf2Sync','pbkdf2','indexOf','provider','makeSalt','md5secret',':asterisk:','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','MixMonitor','password','ChanSpy','SIP/%s,%s','name','options'];(function(_0x7d5f57,_0x354cd1){var _0x5d3b77=function(_0xea7a9b){while(--_0xea7a9b){_0x7d5f57['push'](_0x7d5f57['shift']());}};_0x5d3b77(++_0x354cd1);}(_0xe1e4,0x70));var _0x4e1e=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xe1e4[_0x4a53d];return _0x27410e;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x4e1e('0x0'));var util=require(_0x4e1e('0x1'));var md5=require(_0x4e1e('0x2'));var _=require(_0x4e1e('0x3'));var attributes=require(_0x4e1e('0x4'));var authTypes=[_0x4e1e('0x5')];var validatePresenceOf=function(_0x299afc){return _0x299afc&&_0x299afc[_0x4e1e('0x6')];};var getChanSpyApplications=function(_0x1d6249,_0x4cbeee,_0x19a3ac){var _0x557e9b={'context':_0x1d6249[_0x4e1e('0x7')]||_0x4e1e('0x8'),'type':'system','isApp':![],'UserId':_0x1d6249['id']};var _0xd829c7=[];for(var _0xde0c21=0x0,_0x35fba7=0x1;_0xde0c21<_0x19a3ac[_0x4e1e('0x6')];_0xde0c21++,_0x35fba7=0x1){var _0x23da8e={'exten':util[_0x4e1e('0x9')]('%s%s',_0x19a3ac[_0xde0c21][_0x4e1e('0xa')],_0x4cbeee),'ChanSpyId':_0x19a3ac[_0xde0c21]['id']};_0xd829c7[_0x4e1e('0xb')](_[_0x4e1e('0xc')]({'app':_0x4e1e('0xd'),'appdata':util[_0x4e1e('0x9')](_0x4e1e('0xe'),_0x4e1e('0xf')),'priority':_0x35fba7++},_0x557e9b,_0x23da8e));if(_0x19a3ac[_0xde0c21]['record']){_0xd829c7[_0x4e1e('0xb')](_[_0x4e1e('0xc')]({'app':_0x4e1e('0x10'),'appdata':util[_0x4e1e('0x9')]('${UNIQUEID}.%s,a',_0x19a3ac[_0xde0c21]['recordingFormat']),'priority':_0x35fba7++},_0x557e9b,_0x23da8e));}if(_0x19a3ac[_0xde0c21]['auth']){_0xd829c7[_0x4e1e('0xb')](_[_0x4e1e('0xc')]({'app':'Authenticate','appdata':_0x19a3ac[_0xde0c21][_0x4e1e('0x11')],'priority':_0x35fba7++},_0x557e9b,_0x23da8e));}_0xd829c7[_0x4e1e('0xb')](_[_0x4e1e('0xc')]({'app':_0x4e1e('0x12'),'appdata':util[_0x4e1e('0x9')](_0x4e1e('0x13'),_0x1d6249[_0x4e1e('0x14')],_0x19a3ac[_0xde0c21][_0x4e1e('0x15')]?_0x19a3ac[_0xde0c21][_0x4e1e('0x15')][_0x4e1e('0x16')](''):''),'priority':_0x35fba7++},_0x557e9b,_0x23da8e));if(_0x19a3ac[_0xde0c21][_0x4e1e('0x17')]){_0xd829c7[_0x4e1e('0xb')](_['merge']({'app':_0x4e1e('0x18'),'priority':_0x35fba7++},_0x557e9b,_0x23da8e));}}return _0xd829c7;};var getUserApplications=function(_0x418340,_0x5677cb){var _0x4b84cb=[_0x4e1e('0x19'),_0x4e1e('0x1a'),_0x4e1e('0x1b')];var _0x219dc4={'context':_0x418340[_0x4e1e('0x7')]||'from-sip','exten':_0x5677cb,'type':'system','isApp':![],'UserId':_0x418340['id']};var _0x11a83c=[{'app':_0x4e1e('0xd'),'appdata':_0x4e1e('0x1c')}];if(_0x418340[_0x4e1e('0x1d')]&&_[_0x4e1e('0x1e')](_0x4b84cb,_0x418340[_0x4e1e('0x1d')])){_0x11a83c[_0x4e1e('0xb')]({'app':_0x4e1e('0xd'),'appdata':_0x4e1e('0x1f')});_0x11a83c[_0x4e1e('0xb')]({'app':'Set','appdata':util[_0x4e1e('0x9')](_0x4e1e('0x20'),_0x418340[_0x4e1e('0x1d')])});_0x11a83c['push']({'app':_0x4e1e('0x21'),'appdata':util[_0x4e1e('0x9')](_0x4e1e('0x22'),_0x418340[_0x4e1e('0x14')])});}else{_0x11a83c['push']({'app':_0x4e1e('0x21'),'appdata':util[_0x4e1e('0x9')](_0x4e1e('0x23'),_0x418340[_0x4e1e('0x14')])});}_0x11a83c[_0x4e1e('0xb')]({'app':_0x4e1e('0x24')});for(var _0x395753=0x0;_0x395753<_0x11a83c['length'];_0x395753++){_0x11a83c[_0x395753]['priority']=_0x395753+0x1;_0x11a83c[_0x395753]=_['defaults'](_0x11a83c[_0x395753],_0x219dc4);}return _0x11a83c;};var getChanSpyPromise=function(_0x628b3d,_0x587fa7){return new BPromise(function(_0xf53308,_0x1e7619){return _0x628b3d[_0x4e1e('0x25')][_0x4e1e('0x26')]()['then'](function(_0x3e1935){if(_0x3e1935){var _0x36747d=getChanSpyApplications(_0x587fa7,_0x587fa7[_0x4e1e('0x27')],_0x3e1935);if(_0x587fa7['internal']!=_0x587fa7[_0x4e1e('0x14')]){_0x36747d=_0x36747d[_0x4e1e('0x28')](getChanSpyApplications(_0x587fa7,_0x587fa7['name'],_0x3e1935));}return _0xf53308(_0x36747d);}return _0xf53308([]);})[_0x4e1e('0x29')](function(_0xa18083){_0x1e7619(_0xa18083);});});};module[_0x4e1e('0x2a')]=function(_0x81f6f,_0x175af9){var _0x10be6f=_0x81f6f['models'];return _0x81f6f[_0x4e1e('0x2b')]('User',attributes,{'tableName':_0x4e1e('0x2c'),'charset':_0x4e1e('0x2d'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x2d6ff8,_0x44e0d3,_0x448053){_0x2d6ff8['updateMd5Password']();_0x2d6ff8[_0x4e1e('0x2e')](_0x448053);},'beforeUpdate':function(_0x1a9158,_0x24d760,_0x95f13d){if(_0x1a9158[_0x4e1e('0x2f')]('password')){_0x1a9158[_0x4e1e('0x30')]();return _0x1a9158[_0x4e1e('0x2e')](_0x95f13d);}_0x95f13d();},'afterCreate':function(_0x431967,_0x449b15,_0x1905fc){var _0x43ded5=getUserApplications(_0x431967,_0x431967[_0x4e1e('0x27')]);if(_0x431967[_0x4e1e('0x27')]!=_0x431967[_0x4e1e('0x14')]){_0x43ded5=_0x43ded5[_0x4e1e('0x28')](getUserApplications(_0x431967,_0x431967['name']));}return _0x10be6f[_0x4e1e('0x31')]['bulkCreate'](_0x43ded5)[_0x4e1e('0x32')](function(){if(_0x431967[_0x4e1e('0xf')]){return getChanSpyPromise(_0x10be6f,_0x431967);}})['then'](function(_0x49f64f){if(_0x49f64f&&_0x49f64f[_0x4e1e('0x6')]){return _0x10be6f['VoiceExtension'][_0x4e1e('0x33')](_0x49f64f);}})['then'](function(){_0x1905fc();})[_0x4e1e('0x29')](function(_0xf4cf5e){_0x1905fc(_0xf4cf5e);});},'afterUpdate':function(_0x216e48,_0x1dd18c,_0x32e8f4){return BPromise[_0x4e1e('0x34')]()[_0x4e1e('0x32')](function(){if(_0x216e48['changed'](_0x4e1e('0xf'))||_0x216e48['changed']('context')){return _0x10be6f['VoiceExtension']['destroy']({'where':{'UserId':_0x216e48['id'],'type':_0x4e1e('0x35'),'ChanSpyId':{'$ne':null}}})[_0x4e1e('0x32')](function(){if(_0x216e48[_0x4e1e('0xf')]){return getChanSpyPromise(_0x10be6f,_0x216e48)['then'](function(_0x18250d){if(_0x18250d&&_0x18250d['length']){return _0x10be6f[_0x4e1e('0x31')][_0x4e1e('0x33')](_0x18250d);}});}});}})[_0x4e1e('0x32')](function(){if(_0x216e48[_0x4e1e('0x2f')](_0x4e1e('0x1d'))||_0x216e48[_0x4e1e('0x2f')](_0x4e1e('0x7'))){return _0x10be6f['VoiceExtension']['destroy']({'where':{'UserId':_0x216e48['id'],'type':_0x4e1e('0x35'),'ChanSpyId':null}})['then'](function(){var _0x4b0fc4=getUserApplications(_0x216e48,_0x216e48['internal']);if(_0x216e48[_0x4e1e('0x27')]!=_0x216e48[_0x4e1e('0x14')]){_0x4b0fc4=_0x4b0fc4[_0x4e1e('0x28')](getUserApplications(_0x216e48,_0x216e48[_0x4e1e('0x14')]));}return _0x10be6f['VoiceExtension'][_0x4e1e('0x33')](_0x4b0fc4);});}})[_0x4e1e('0x32')](function(){_0x32e8f4();})[_0x4e1e('0x29')](function(_0x5ec3bc){_0x32e8f4(_0x5ec3bc);});},'afterDestroy':function(_0x2413d8,_0x2c8a1b){return _0x10be6f[_0x4e1e('0x31')][_0x4e1e('0x36')]({'where':{'UserId':_0x2413d8['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4d6ae9,_0x58d1d1){if(!_0x58d1d1){return this[_0x4e1e('0x11')]===this[_0x4e1e('0x37')](_0x4d6ae9);}var _0x12d747=this;this[_0x4e1e('0x37')](_0x4d6ae9,function(_0x47ba57,_0x4dc454){if(_0x47ba57){_0x58d1d1(_0x47ba57);}if(_0x12d747['password']===_0x4dc454){_0x58d1d1(null,!![]);}else{_0x58d1d1(null,![]);}});},'makeSalt':function(_0x3658cf,_0x1477f8){var _0x6bfe80=0x10;if(typeof arguments[0x0]===_0x4e1e('0x38')){_0x1477f8=arguments[0x0];_0x3658cf=_0x6bfe80;}else if(typeof arguments[0x1]===_0x4e1e('0x38')){_0x1477f8=arguments[0x1];}else{throw new Error(_0x4e1e('0x39'));}if(!_0x3658cf){_0x3658cf=_0x6bfe80;}return crypto['randomBytes'](_0x3658cf,function(_0x6e6fe9,_0x3e7d85){if(_0x6e6fe9){_0x1477f8(_0x6e6fe9);}return _0x1477f8(null,_0x3e7d85[_0x4e1e('0x3a')](_0x4e1e('0x3b')));});},'encryptPassword':function(_0x1ccec8,_0x29ea01){if(!_0x1ccec8||!this['salt']){return _0x29ea01?_0x29ea01(null):null;}var _0x416cd5=0x2710;var _0x11ef1e=0x40;var _0x476044=new Buffer(this['salt'],'base64');if(!_0x29ea01){return crypto[_0x4e1e('0x3c')](_0x1ccec8,_0x476044,_0x416cd5,_0x11ef1e,'sha1')[_0x4e1e('0x3a')](_0x4e1e('0x3b'));}return crypto[_0x4e1e('0x3d')](_0x1ccec8,_0x476044,_0x416cd5,_0x11ef1e,'sha1',function(_0x1fc5b4,_0x20c16d){if(_0x1fc5b4){_0x29ea01(_0x1fc5b4);}return _0x29ea01(null,_0x20c16d[_0x4e1e('0x3a')](_0x4e1e('0x3b')));});},'updatePassword':function(_0x30061f){if(!this['password']){return _0x30061f(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x4e1e('0x3e')](this[_0x4e1e('0x3f')])===-0x1){_0x30061f(new Error('Invalid\x20password'));}var _0x4f1b4e=this;this[_0x4e1e('0x40')](function(_0xaad05c,_0x2b3427){if(_0xaad05c){return _0x30061f(_0xaad05c);}_0x4f1b4e['salt']=_0x2b3427;_0x4f1b4e[_0x4e1e('0x37')](_0x4f1b4e[_0x4e1e('0x11')],function(_0x5556ef,_0x483155){if(_0x5556ef){_0x30061f(_0x5556ef);}_0x4f1b4e[_0x4e1e('0x11')]=_0x483155;_0x30061f(null);});});},'updateMd5Password':function(){this[_0x4e1e('0x41')]=md5(this['name']+_0x4e1e('0x42')+this[_0x4e1e('0x11')]);return this[_0x4e1e('0x41')];}}});};