Built motion from commit (unavailable).|2.5.10
[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 _0x410b=['encryptPassword','function','randomBytes','toString','base64','salt','pbkdf2Sync','pbkdf2','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','md5','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','Set','chanspy','record','${UNIQUEID}.%s,a','auth','Authenticate','name','options','merge','StopMixMonitor','wav','gsm','context','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','defaults','then','internal','catch','exports','models','define','User','users','utf8_bin','updateMd5Password','password','concat','bulkCreate','VoiceExtension','resolve','changed','destroy'];(function(_0x400ce3,_0x8bf524){var _0x4f7357=function(_0x17fe4d){while(--_0x17fe4d){_0x400ce3['push'](_0x400ce3['shift']());}};_0x4f7357(++_0x8bf524);}(_0x410b,0x1be));var _0xb410=function(_0xebb7a8,_0x5c65fd){_0xebb7a8=_0xebb7a8-0x0;var _0x3e14b7=_0x410b[_0xebb7a8];return _0x3e14b7;};'use strict';var BPromise=require(_0xb410('0x0'));var crypto=require(_0xb410('0x1'));var util=require('util');var md5=require(_0xb410('0x2'));var _=require('lodash');var attributes=require(_0xb410('0x3'));var authTypes=[_0xb410('0x4')];var validatePresenceOf=function(_0x4c84ee){return _0x4c84ee&&_0x4c84ee[_0xb410('0x5')];};var getChanSpyApplications=function(_0x2077ed,_0x32f8ac,_0xf90f41){var _0x4b978f={'context':_0x2077ed['context']||_0xb410('0x6'),'type':_0xb410('0x7'),'isApp':![],'UserId':_0x2077ed['id']};var _0x300170=[];for(var _0x362195=0x0,_0x38634e=0x1;_0x362195<_0xf90f41[_0xb410('0x5')];_0x362195++,_0x38634e=0x1){var _0x51bc7a={'exten':util[_0xb410('0x8')](_0xb410('0x9'),_0xf90f41[_0x362195][_0xb410('0xa')],_0x32f8ac),'ChanSpyId':_0xf90f41[_0x362195]['id']};_0x300170[_0xb410('0xb')](_['merge']({'app':_0xb410('0xc'),'appdata':util['format']('CDR(type)=%s',_0xb410('0xd')),'priority':_0x38634e++},_0x4b978f,_0x51bc7a));if(_0xf90f41[_0x362195][_0xb410('0xe')]){_0x300170[_0xb410('0xb')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0xb410('0xf'),_0xf90f41[_0x362195]['recordingFormat']),'priority':_0x38634e++},_0x4b978f,_0x51bc7a));}if(_0xf90f41[_0x362195][_0xb410('0x10')]){_0x300170[_0xb410('0xb')](_['merge']({'app':_0xb410('0x11'),'appdata':_0xf90f41[_0x362195]['password'],'priority':_0x38634e++},_0x4b978f,_0x51bc7a));}_0x300170[_0xb410('0xb')](_['merge']({'app':'ChanSpy','appdata':util[_0xb410('0x8')]('SIP/%s,%s',_0x2077ed[_0xb410('0x12')],_0xf90f41[_0x362195][_0xb410('0x13')]?_0xf90f41[_0x362195][_0xb410('0x13')]['join'](''):''),'priority':_0x38634e++},_0x4b978f,_0x51bc7a));if(_0xf90f41[_0x362195][_0xb410('0xe')]){_0x300170[_0xb410('0xb')](_[_0xb410('0x14')]({'app':_0xb410('0x15'),'priority':_0x38634e++},_0x4b978f,_0x51bc7a));}}return _0x300170;};var getUserApplications=function(_0x3d140c,_0x306d66){var _0x24f695=[_0xb410('0x16'),'WAV',_0xb410('0x17')];var _0x3502b4={'context':_0x3d140c[_0xb410('0x18')]||'from-sip','exten':_0x306d66,'type':_0xb410('0x7'),'isApp':![],'UserId':_0x3d140c['id']};var _0x231203=[{'app':'Set','appdata':_0xb410('0x19')}];if(_0x3d140c[_0xb410('0x1a')]&&_[_0xb410('0x1b')](_0x24f695,_0x3d140c[_0xb410('0x1a')])){_0x231203[_0xb410('0xb')]({'app':_0xb410('0xc'),'appdata':_0xb410('0x1c')});_0x231203[_0xb410('0xb')]({'app':_0xb410('0xc'),'appdata':util[_0xb410('0x8')](_0xb410('0x1d'),_0x3d140c[_0xb410('0x1a')])});_0x231203[_0xb410('0xb')]({'app':_0xb410('0x1e'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3d140c[_0xb410('0x12')])});}else{_0x231203['push']({'app':_0xb410('0x1e'),'appdata':util['format']('SIP/%s,,tTxX',_0x3d140c[_0xb410('0x12')])});}_0x231203[_0xb410('0xb')]({'app':_0xb410('0x1f')});for(var _0x852594=0x0;_0x852594<_0x231203[_0xb410('0x5')];_0x852594++){_0x231203[_0x852594]['priority']=_0x852594+0x1;_0x231203[_0x852594]=_[_0xb410('0x20')](_0x231203[_0x852594],_0x3502b4);}return _0x231203;};var getChanSpyPromise=function(_0x3ead16,_0x270216){return new BPromise(function(_0x33f6c0,_0x1a9e32){return _0x3ead16['VoiceChanSpy']['findAll']()[_0xb410('0x21')](function(_0x2095aa){if(_0x2095aa){var _0x12db74=getChanSpyApplications(_0x270216,_0x270216[_0xb410('0x22')],_0x2095aa);if(_0x270216[_0xb410('0x22')]!=_0x270216[_0xb410('0x12')]){_0x12db74=_0x12db74['concat'](getChanSpyApplications(_0x270216,_0x270216[_0xb410('0x12')],_0x2095aa));}return _0x33f6c0(_0x12db74);}return _0x33f6c0([]);})[_0xb410('0x23')](function(_0x37ac62){_0x1a9e32(_0x37ac62);});});};module[_0xb410('0x24')]=function(_0x3c04a7,_0x3d5abd){var _0x13b223=_0x3c04a7[_0xb410('0x25')];return _0x3c04a7[_0xb410('0x26')](_0xb410('0x27'),attributes,{'tableName':_0xb410('0x28'),'charset':'utf8','collate':_0xb410('0x29'),'hooks':{'beforeCreate':function(_0x54dd71,_0x4e2782,_0x2d5d92){_0x54dd71[_0xb410('0x2a')]();_0x54dd71['updatePassword'](_0x2d5d92);},'beforeUpdate':function(_0xa98439,_0x290aec,_0x7c7f33){if(_0xa98439['changed'](_0xb410('0x2b'))){_0xa98439[_0xb410('0x2a')]();return _0xa98439['updatePassword'](_0x7c7f33);}_0x7c7f33();},'afterCreate':function(_0x5bd829,_0x22dacd,_0x4b39ac){var _0x2009c4=getUserApplications(_0x5bd829,_0x5bd829[_0xb410('0x22')]);if(_0x5bd829['internal']!=_0x5bd829[_0xb410('0x12')]){_0x2009c4=_0x2009c4[_0xb410('0x2c')](getUserApplications(_0x5bd829,_0x5bd829[_0xb410('0x12')]));}return _0x13b223['VoiceExtension'][_0xb410('0x2d')](_0x2009c4)['then'](function(){if(_0x5bd829['chanspy']){return getChanSpyPromise(_0x13b223,_0x5bd829);}})['then'](function(_0x145549){if(_0x145549&&_0x145549[_0xb410('0x5')]){return _0x13b223[_0xb410('0x2e')]['bulkCreate'](_0x145549);}})[_0xb410('0x21')](function(){_0x4b39ac();})[_0xb410('0x23')](function(_0x3cee0f){_0x4b39ac(_0x3cee0f);});},'afterUpdate':function(_0x3c05ec,_0x1329ea,_0x3ec1bc){return BPromise[_0xb410('0x2f')]()[_0xb410('0x21')](function(){if(_0x3c05ec[_0xb410('0x30')](_0xb410('0xd'))||_0x3c05ec['changed'](_0xb410('0x18'))){return _0x13b223['VoiceExtension'][_0xb410('0x31')]({'where':{'UserId':_0x3c05ec['id'],'type':_0xb410('0x7'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x3c05ec[_0xb410('0xd')]){return getChanSpyPromise(_0x13b223,_0x3c05ec)[_0xb410('0x21')](function(_0x3c17a1){if(_0x3c17a1&&_0x3c17a1[_0xb410('0x5')]){return _0x13b223[_0xb410('0x2e')]['bulkCreate'](_0x3c17a1);}});}});}})['then'](function(){if(_0x3c05ec[_0xb410('0x30')]('extensionMonitor')||_0x3c05ec[_0xb410('0x30')](_0xb410('0x18'))){return _0x13b223[_0xb410('0x2e')][_0xb410('0x31')]({'where':{'UserId':_0x3c05ec['id'],'type':_0xb410('0x7'),'ChanSpyId':null}})['then'](function(){var _0xc296b2=getUserApplications(_0x3c05ec,_0x3c05ec[_0xb410('0x22')]);if(_0x3c05ec[_0xb410('0x22')]!=_0x3c05ec[_0xb410('0x12')]){_0xc296b2=_0xc296b2['concat'](getUserApplications(_0x3c05ec,_0x3c05ec['name']));}return _0x13b223[_0xb410('0x2e')][_0xb410('0x2d')](_0xc296b2);});}})['then'](function(){_0x3ec1bc();})[_0xb410('0x23')](function(_0x42c585){_0x3ec1bc(_0x42c585);});},'afterDestroy':function(_0x5eb6b2,_0x4475ea){return _0x13b223[_0xb410('0x2e')][_0xb410('0x31')]({'where':{'UserId':_0x5eb6b2['id'],'type':_0xb410('0x7')}});}},'instanceMethods':{'authenticate':function(_0x4c730b,_0x42111b){if(!_0x42111b){return this[_0xb410('0x2b')]===this['encryptPassword'](_0x4c730b);}var _0x153aac=this;this[_0xb410('0x32')](_0x4c730b,function(_0x36fc32,_0x37d937){if(_0x36fc32){_0x42111b(_0x36fc32);}if(_0x153aac[_0xb410('0x2b')]===_0x37d937){_0x42111b(null,!![]);}else{_0x42111b(null,![]);}});},'makeSalt':function(_0x52e310,_0x19c397){var _0x4869f0=0x10;if(typeof arguments[0x0]===_0xb410('0x33')){_0x19c397=arguments[0x0];_0x52e310=_0x4869f0;}else if(typeof arguments[0x1]===_0xb410('0x33')){_0x19c397=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x52e310){_0x52e310=_0x4869f0;}return crypto[_0xb410('0x34')](_0x52e310,function(_0x49e086,_0x4de8b7){if(_0x49e086){_0x19c397(_0x49e086);}return _0x19c397(null,_0x4de8b7[_0xb410('0x35')](_0xb410('0x36')));});},'encryptPassword':function(_0x4c5d0b,_0x5383b8){if(!_0x4c5d0b||!this[_0xb410('0x37')]){return _0x5383b8?_0x5383b8(null):null;}var _0x275c8d=0x2710;var _0x328589=0x40;var _0x416cbf=new Buffer(this[_0xb410('0x37')],'base64');if(!_0x5383b8){return crypto[_0xb410('0x38')](_0x4c5d0b,_0x416cbf,_0x275c8d,_0x328589,'sha1')[_0xb410('0x35')](_0xb410('0x36'));}return crypto[_0xb410('0x39')](_0x4c5d0b,_0x416cbf,_0x275c8d,_0x328589,'sha1',function(_0x4fcf24,_0x407428){if(_0x4fcf24){_0x5383b8(_0x4fcf24);}return _0x5383b8(null,_0x407428[_0xb410('0x35')](_0xb410('0x36')));});},'updatePassword':function(_0x41b5ae){if(!this[_0xb410('0x2b')]){return _0x41b5ae(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this['provider'])===-0x1){_0x41b5ae(new Error(_0xb410('0x3a')));}var _0x1d3472=this;this[_0xb410('0x3b')](function(_0x3da8bb,_0x4468fc){if(_0x3da8bb){return _0x41b5ae(_0x3da8bb);}_0x1d3472[_0xb410('0x37')]=_0x4468fc;_0x1d3472['encryptPassword'](_0x1d3472[_0xb410('0x2b')],function(_0x416bec,_0x1c31ef){if(_0x416bec){_0x41b5ae(_0x416bec);}_0x1d3472['password']=_0x1c31ef;_0x41b5ae(null);});});},'updateMd5Password':function(){this[_0xb410('0x3c')]=md5(this['name']+_0xb410('0x3d')+this[_0xb410('0x2b')]);return this['md5secret'];}}});};