Built motion from commit (unavailable).|2.4.21
[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 _0xb4ab=[':asterisk:','bluebird','util','md5','./user.attributes','google','length','context','from-sip','prefix','push','merge','Set','format','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','ChanSpy','name','join','StopMixMonitor','wav','WAV','gsm','system','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','internal','concat','models','define','utf8','updateMd5Password','updatePassword','changed','password','bulkCreate','then','catch','resolve','VoiceExtension','destroy','chanspy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','sha1','base64','pbkdf2','provider','makeSalt','md5secret'];(function(_0x1bba22,_0x58cc7c){var _0x709c2e=function(_0x38aa14){while(--_0x38aa14){_0x1bba22['push'](_0x1bba22['shift']());}};_0x709c2e(++_0x58cc7c);}(_0xb4ab,0xbb));var _0xbb4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb4ab[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require(_0xbb4a('0x0'));var crypto=require('crypto');var util=require(_0xbb4a('0x1'));var md5=require(_0xbb4a('0x2'));var _=require('lodash');var attributes=require(_0xbb4a('0x3'));var authTypes=[_0xbb4a('0x4')];var validatePresenceOf=function(_0x3b50a2){return _0x3b50a2&&_0x3b50a2[_0xbb4a('0x5')];};var getChanSpyApplications=function(_0x5536a2,_0x452039,_0x5b680d){var _0xf167ba={'context':_0x5536a2[_0xbb4a('0x6')]||_0xbb4a('0x7'),'type':'system','isApp':![],'UserId':_0x5536a2['id']};var _0x393c72=[];for(var _0x522df3=0x0,_0x4102bd=0x1;_0x522df3<_0x5b680d['length'];_0x522df3++,_0x4102bd=0x1){var _0x2dde7a={'exten':util['format']('%s%s',_0x5b680d[_0x522df3][_0xbb4a('0x8')],_0x452039),'ChanSpyId':_0x5b680d[_0x522df3]['id']};_0x393c72[_0xbb4a('0x9')](_[_0xbb4a('0xa')]({'app':_0xbb4a('0xb'),'appdata':util[_0xbb4a('0xc')]('CDR(type)=%s','chanspy'),'priority':_0x4102bd++},_0xf167ba,_0x2dde7a));if(_0x5b680d[_0x522df3][_0xbb4a('0xd')]){_0x393c72['push'](_['merge']({'app':_0xbb4a('0xe'),'appdata':util['format'](_0xbb4a('0xf'),_0x5b680d[_0x522df3][_0xbb4a('0x10')]),'priority':_0x4102bd++},_0xf167ba,_0x2dde7a));}if(_0x5b680d[_0x522df3]['auth']){_0x393c72[_0xbb4a('0x9')](_[_0xbb4a('0xa')]({'app':_0xbb4a('0x11'),'appdata':_0x5b680d[_0x522df3]['password'],'priority':_0x4102bd++},_0xf167ba,_0x2dde7a));}_0x393c72['push'](_[_0xbb4a('0xa')]({'app':_0xbb4a('0x12'),'appdata':util[_0xbb4a('0xc')]('SIP/%s,%s',_0x5536a2[_0xbb4a('0x13')],_0x5b680d[_0x522df3]['options']?_0x5b680d[_0x522df3]['options'][_0xbb4a('0x14')](''):''),'priority':_0x4102bd++},_0xf167ba,_0x2dde7a));if(_0x5b680d[_0x522df3][_0xbb4a('0xd')]){_0x393c72[_0xbb4a('0x9')](_[_0xbb4a('0xa')]({'app':_0xbb4a('0x15'),'priority':_0x4102bd++},_0xf167ba,_0x2dde7a));}}return _0x393c72;};var getUserApplications=function(_0x251b9c,_0x5681b1){var _0x5a90c5=[_0xbb4a('0x16'),_0xbb4a('0x17'),_0xbb4a('0x18')];var _0x5243da={'context':_0x251b9c[_0xbb4a('0x6')]||'from-sip','exten':_0x5681b1,'type':_0xbb4a('0x19'),'isApp':![],'UserId':_0x251b9c['id']};var _0x288e1a=[{'app':_0xbb4a('0xb'),'appdata':'CDR(type)=internal'}];if(_0x251b9c[_0xbb4a('0x1a')]&&_['includes'](_0x5a90c5,_0x251b9c['extensionMonitor'])){_0x288e1a[_0xbb4a('0x9')]({'app':_0xbb4a('0xb'),'appdata':_0xbb4a('0x1b')});_0x288e1a['push']({'app':_0xbb4a('0xb'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x251b9c['extensionMonitor'])});_0x288e1a[_0xbb4a('0x9')]({'app':_0xbb4a('0x1c'),'appdata':util['format'](_0xbb4a('0x1d'),_0x251b9c['name'])});}else{_0x288e1a[_0xbb4a('0x9')]({'app':_0xbb4a('0x1c'),'appdata':util[_0xbb4a('0xc')](_0xbb4a('0x1e'),_0x251b9c[_0xbb4a('0x13')])});}_0x288e1a[_0xbb4a('0x9')]({'app':_0xbb4a('0x1f')});for(var _0x419a11=0x0;_0x419a11<_0x288e1a[_0xbb4a('0x5')];_0x419a11++){_0x288e1a[_0x419a11][_0xbb4a('0x20')]=_0x419a11+0x1;_0x288e1a[_0x419a11]=_['defaults'](_0x288e1a[_0x419a11],_0x5243da);}return _0x288e1a;};var getChanSpyPromise=function(_0x400c4c,_0x30f745){return new BPromise(function(_0x5941e7,_0x2c53b7){return _0x400c4c['VoiceChanSpy']['findAll']()['then'](function(_0x1d5023){if(_0x1d5023){var _0x30bf36=getChanSpyApplications(_0x30f745,_0x30f745[_0xbb4a('0x21')],_0x1d5023);if(_0x30f745[_0xbb4a('0x21')]!=_0x30f745[_0xbb4a('0x13')]){_0x30bf36=_0x30bf36[_0xbb4a('0x22')](getChanSpyApplications(_0x30f745,_0x30f745[_0xbb4a('0x13')],_0x1d5023));}return _0x5941e7(_0x30bf36);}return _0x5941e7([]);})['catch'](function(_0x56b920){_0x2c53b7(_0x56b920);});});};module['exports']=function(_0x238e7d,_0x4eddf2){var _0x940a08=_0x238e7d[_0xbb4a('0x23')];return _0x238e7d[_0xbb4a('0x24')]('User',attributes,{'tableName':'users','charset':_0xbb4a('0x25'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x99b08e,_0x45ba9b,_0x1820cf){_0x99b08e[_0xbb4a('0x26')]();_0x99b08e[_0xbb4a('0x27')](_0x1820cf);},'beforeUpdate':function(_0x268848,_0x432e1,_0x2660c1){if(_0x268848[_0xbb4a('0x28')](_0xbb4a('0x29'))){_0x268848[_0xbb4a('0x26')]();return _0x268848['updatePassword'](_0x2660c1);}_0x2660c1();},'afterCreate':function(_0x91e3fb,_0x2525b0,_0x519223){var _0x53e322=getUserApplications(_0x91e3fb,_0x91e3fb[_0xbb4a('0x21')]);if(_0x91e3fb['internal']!=_0x91e3fb['name']){_0x53e322=_0x53e322[_0xbb4a('0x22')](getUserApplications(_0x91e3fb,_0x91e3fb[_0xbb4a('0x13')]));}return _0x940a08['VoiceExtension'][_0xbb4a('0x2a')](_0x53e322)[_0xbb4a('0x2b')](function(){if(_0x91e3fb['chanspy']){return getChanSpyPromise(_0x940a08,_0x91e3fb);}})[_0xbb4a('0x2b')](function(_0x120d79){if(_0x120d79&&_0x120d79[_0xbb4a('0x5')]){return _0x940a08['VoiceExtension'][_0xbb4a('0x2a')](_0x120d79);}})[_0xbb4a('0x2b')](function(){_0x519223();})[_0xbb4a('0x2c')](function(_0x4d4dbc){_0x519223(_0x4d4dbc);});},'afterUpdate':function(_0x9b481c,_0x6d284e,_0x420cd8){return BPromise[_0xbb4a('0x2d')]()[_0xbb4a('0x2b')](function(){if(_0x9b481c[_0xbb4a('0x28')]('chanspy')||_0x9b481c[_0xbb4a('0x28')](_0xbb4a('0x6'))){return _0x940a08[_0xbb4a('0x2e')][_0xbb4a('0x2f')]({'where':{'UserId':_0x9b481c['id'],'type':_0xbb4a('0x19'),'ChanSpyId':{'$ne':null}}})[_0xbb4a('0x2b')](function(){if(_0x9b481c[_0xbb4a('0x30')]){return getChanSpyPromise(_0x940a08,_0x9b481c)[_0xbb4a('0x2b')](function(_0x5f30d5){if(_0x5f30d5&&_0x5f30d5[_0xbb4a('0x5')]){return _0x940a08[_0xbb4a('0x2e')][_0xbb4a('0x2a')](_0x5f30d5);}});}});}})[_0xbb4a('0x2b')](function(){if(_0x9b481c['changed']('extensionMonitor')||_0x9b481c[_0xbb4a('0x28')](_0xbb4a('0x6'))){return _0x940a08[_0xbb4a('0x2e')][_0xbb4a('0x2f')]({'where':{'UserId':_0x9b481c['id'],'type':_0xbb4a('0x19'),'ChanSpyId':null}})[_0xbb4a('0x2b')](function(){var _0x39791a=getUserApplications(_0x9b481c,_0x9b481c[_0xbb4a('0x21')]);if(_0x9b481c['internal']!=_0x9b481c[_0xbb4a('0x13')]){_0x39791a=_0x39791a[_0xbb4a('0x22')](getUserApplications(_0x9b481c,_0x9b481c[_0xbb4a('0x13')]));}return _0x940a08[_0xbb4a('0x2e')]['bulkCreate'](_0x39791a);});}})[_0xbb4a('0x2b')](function(){_0x420cd8();})[_0xbb4a('0x2c')](function(_0x3df6de){_0x420cd8(_0x3df6de);});},'afterDestroy':function(_0x340650,_0x3b324e){return _0x940a08[_0xbb4a('0x2e')][_0xbb4a('0x2f')]({'where':{'UserId':_0x340650['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x431d31,_0x546695){if(!_0x546695){return this['password']===this['encryptPassword'](_0x431d31);}var _0x3fb56b=this;this[_0xbb4a('0x31')](_0x431d31,function(_0x26a66a,_0x3aab5b){if(_0x26a66a){_0x546695(_0x26a66a);}if(_0x3fb56b[_0xbb4a('0x29')]===_0x3aab5b){_0x546695(null,!![]);}else{_0x546695(null,![]);}});},'makeSalt':function(_0x1c114f,_0x145195){var _0x2ad1ea=0x10;if(typeof arguments[0x0]===_0xbb4a('0x32')){_0x145195=arguments[0x0];_0x1c114f=_0x2ad1ea;}else if(typeof arguments[0x1]===_0xbb4a('0x32')){_0x145195=arguments[0x1];}else{throw new Error(_0xbb4a('0x33'));}if(!_0x1c114f){_0x1c114f=_0x2ad1ea;}return crypto[_0xbb4a('0x34')](_0x1c114f,function(_0x2a9378,_0x37caa6){if(_0x2a9378){_0x145195(_0x2a9378);}return _0x145195(null,_0x37caa6[_0xbb4a('0x35')]('base64'));});},'encryptPassword':function(_0x342750,_0x530c7d){if(!_0x342750||!this[_0xbb4a('0x36')]){return _0x530c7d?_0x530c7d(null):null;}var _0x7c561c=0x2710;var _0xfe779d=0x40;var _0x18fd4e=new Buffer(this[_0xbb4a('0x36')],'base64');if(!_0x530c7d){return crypto['pbkdf2Sync'](_0x342750,_0x18fd4e,_0x7c561c,_0xfe779d,_0xbb4a('0x37'))[_0xbb4a('0x35')](_0xbb4a('0x38'));}return crypto[_0xbb4a('0x39')](_0x342750,_0x18fd4e,_0x7c561c,_0xfe779d,'sha1',function(_0x319744,_0x76b5c1){if(_0x319744){_0x530c7d(_0x319744);}return _0x530c7d(null,_0x76b5c1[_0xbb4a('0x35')](_0xbb4a('0x38')));});},'updatePassword':function(_0x1760c9){if(!this[_0xbb4a('0x29')]){return _0x1760c9(null);}if(!validatePresenceOf(this[_0xbb4a('0x29')])&&authTypes['indexOf'](this[_0xbb4a('0x3a')])===-0x1){_0x1760c9(new Error('Invalid\x20password'));}var _0x412635=this;this[_0xbb4a('0x3b')](function(_0x5217e4,_0xf9e455){if(_0x5217e4){return _0x1760c9(_0x5217e4);}_0x412635[_0xbb4a('0x36')]=_0xf9e455;_0x412635[_0xbb4a('0x31')](_0x412635['password'],function(_0x2a2224,_0x34a070){if(_0x2a2224){_0x1760c9(_0x2a2224);}_0x412635['password']=_0x34a070;_0x1760c9(null);});});},'updateMd5Password':function(){this[_0xbb4a('0x3c')]=md5(this[_0xbb4a('0x13')]+_0xbb4a('0x3d')+this['password']);return this[_0xbb4a('0x3c')];}}});};