2df5cbd76eb76134525cba173f3fb8018ec3d12b
[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 _0xac3c=['Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','User','users','utf8','utf8_bin','userProfileId','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','resolve','changed','password','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','context','from-sip','system','length','format','%s%s','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xac3c,0xcf));var _0xcac3=function(_0x30db10,_0x5b5f2e){_0x30db10=_0x30db10-0x0;var _0x5d562c=_0xac3c[_0x30db10];return _0x5d562c;};'use strict';var BPromise=require(_0xcac3('0x0'));var crypto=require(_0xcac3('0x1'));var util=require(_0xcac3('0x2'));var md5=require('md5');var _=require(_0xcac3('0x3'));var attributes=require(_0xcac3('0x4'));var authTypes=['google'];var validatePresenceOf=function(_0x1b15d7){return _0x1b15d7&&_0x1b15d7['length'];};var getChanSpyApplications=function(_0x476317,_0x554567,_0x128954){var _0x511a18={'context':_0x476317[_0xcac3('0x5')]||_0xcac3('0x6'),'type':_0xcac3('0x7'),'isApp':![],'UserId':_0x476317['id']};var _0x510802=[];for(var _0x43fdc5=0x0,_0x3ef6c7=0x1;_0x43fdc5<_0x128954[_0xcac3('0x8')];_0x43fdc5++,_0x3ef6c7=0x1){var _0x21cb80={'exten':util[_0xcac3('0x9')](_0xcac3('0xa'),_0x128954[_0x43fdc5]['prefix'],_0x554567),'ChanSpyId':_0x128954[_0x43fdc5]['id']};_0x510802[_0xcac3('0xb')](_[_0xcac3('0xc')]({'app':_0xcac3('0xd'),'appdata':util[_0xcac3('0x9')](_0xcac3('0xe'),_0xcac3('0xf')),'priority':_0x3ef6c7++},_0x511a18,_0x21cb80));if(_0x128954[_0x43fdc5][_0xcac3('0x10')]){_0x510802[_0xcac3('0xb')](_[_0xcac3('0xc')]({'app':_0xcac3('0x11'),'appdata':util['format'](_0xcac3('0x12'),_0x128954[_0x43fdc5][_0xcac3('0x13')]),'priority':_0x3ef6c7++},_0x511a18,_0x21cb80));}if(_0x128954[_0x43fdc5][_0xcac3('0x14')]){_0x510802[_0xcac3('0xb')](_['merge']({'app':_0xcac3('0x15'),'appdata':_0x128954[_0x43fdc5]['password'],'priority':_0x3ef6c7++},_0x511a18,_0x21cb80));}_0x510802['push'](_[_0xcac3('0xc')]({'app':_0xcac3('0x16'),'appdata':util[_0xcac3('0x9')](_0xcac3('0x17'),_0x476317['name'],_0x128954[_0x43fdc5][_0xcac3('0x18')]?_0x128954[_0x43fdc5][_0xcac3('0x18')]['join'](''):''),'priority':_0x3ef6c7++},_0x511a18,_0x21cb80));if(_0x128954[_0x43fdc5][_0xcac3('0x10')]){_0x510802['push'](_['merge']({'app':_0xcac3('0x19'),'priority':_0x3ef6c7++},_0x511a18,_0x21cb80));}}return _0x510802;};var getUserApplications=function(_0x1806d6,_0x205c0a){var _0x18c855=[_0xcac3('0x1a'),_0xcac3('0x1b'),_0xcac3('0x1c')];var _0x57dae8={'context':_0x1806d6[_0xcac3('0x5')]||_0xcac3('0x6'),'exten':_0x205c0a,'type':_0xcac3('0x7'),'isApp':![],'UserId':_0x1806d6['id']};var _0x358540=[{'app':_0xcac3('0xd'),'appdata':_0xcac3('0x1d')}];if(_0x1806d6[_0xcac3('0x1e')]&&_[_0xcac3('0x1f')](_0x18c855,_0x1806d6[_0xcac3('0x1e')])){_0x358540[_0xcac3('0xb')]({'app':'Set','appdata':_0xcac3('0x20')});_0x358540[_0xcac3('0xb')]({'app':_0xcac3('0xd'),'appdata':util[_0xcac3('0x9')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x1806d6[_0xcac3('0x1e')])});_0x358540[_0xcac3('0xb')]({'app':_0xcac3('0x21'),'appdata':util['format'](_0xcac3('0x22'),_0x1806d6[_0xcac3('0x23')])});}else{_0x358540[_0xcac3('0xb')]({'app':_0xcac3('0x21'),'appdata':util['format'](_0xcac3('0x24'),_0x1806d6[_0xcac3('0x23')])});}_0x358540[_0xcac3('0xb')]({'app':_0xcac3('0x25')});for(var _0x4f1d1a=0x0;_0x4f1d1a<_0x358540[_0xcac3('0x8')];_0x4f1d1a++){_0x358540[_0x4f1d1a][_0xcac3('0x26')]=_0x4f1d1a+0x1;_0x358540[_0x4f1d1a]=_[_0xcac3('0x27')](_0x358540[_0x4f1d1a],_0x57dae8);}return _0x358540;};var getChanSpyPromise=function(_0xb9f435,_0x49b4db){return new BPromise(function(_0x3c1110,_0x3921b5){return _0xb9f435[_0xcac3('0x28')][_0xcac3('0x29')]()[_0xcac3('0x2a')](function(_0x52e2e7){if(_0x52e2e7){var _0x2101f2=getChanSpyApplications(_0x49b4db,_0x49b4db[_0xcac3('0x2b')],_0x52e2e7);if(_0x49b4db[_0xcac3('0x2b')]!=_0x49b4db[_0xcac3('0x23')]){_0x2101f2=_0x2101f2[_0xcac3('0x2c')](getChanSpyApplications(_0x49b4db,_0x49b4db['name'],_0x52e2e7));}return _0x3c1110(_0x2101f2);}return _0x3c1110([]);})[_0xcac3('0x2d')](function(_0xaebbf5){_0x3921b5(_0xaebbf5);});});};module[_0xcac3('0x2e')]=function(_0x4417e4){var _0x5976ed=_0x4417e4[_0xcac3('0x2f')];return _0x4417e4['define'](_0xcac3('0x30'),attributes,{'tableName':_0xcac3('0x31'),'charset':_0xcac3('0x32'),'collate':_0xcac3('0x33'),'hooks':{'beforeCreate':function(_0x69d726,_0x99547f,_0x2908f6){var _0x31e9d7=typeof _0x69d726[_0xcac3('0x34')]==='undefined'?BPromise['resolve'](null):_0x5976ed[_0xcac3('0x35')][_0xcac3('0x36')]({'where':{'id':_0x69d726[_0xcac3('0x34')]}});_0x31e9d7[_0xcac3('0x2a')](function(_0x44c3a5){if(_0x44c3a5){_0x69d726[_0xcac3('0x37')]=_0x44c3a5['privacyEnabled'];}})[_0xcac3('0x2a')](function(){_0x69d726[_0xcac3('0x38')]();_0x69d726[_0xcac3('0x39')](_0x2908f6);})['catch'](function(_0x1b4bb4){_0x2908f6(_0x1b4bb4);});},'beforeUpdate':function(_0x43d08a,_0x1f5cc0,_0x2713cd){Promise[_0xcac3('0x3a')]()[_0xcac3('0x2a')](function(){if(_0x43d08a[_0xcac3('0x3b')](_0xcac3('0x34'))===![])return;return _0x5976ed[_0xcac3('0x35')][_0xcac3('0x36')]({'where':{'id':_0x43d08a[_0xcac3('0x34')]}})[_0xcac3('0x2a')](function(_0x1c829b){if(_0x1c829b)_0x43d08a[_0xcac3('0x37')]=_0x1c829b[_0xcac3('0x37')];return;});})[_0xcac3('0x2a')](function(){if(_0x43d08a[_0xcac3('0x3b')](_0xcac3('0x3c'))){_0x43d08a[_0xcac3('0x38')]();return _0x43d08a['updatePassword'](_0x2713cd);}_0x2713cd();})[_0xcac3('0x2d')](function(_0x4bdd76){_0x2713cd(_0x4bdd76);});},'afterCreate':function(_0x19d9e9,_0x390dff,_0x1eb6e3){var _0xdec6e2=getUserApplications(_0x19d9e9,_0x19d9e9[_0xcac3('0x2b')]);if(_0x19d9e9[_0xcac3('0x2b')]!=_0x19d9e9[_0xcac3('0x23')]){_0xdec6e2=_0xdec6e2[_0xcac3('0x2c')](getUserApplications(_0x19d9e9,_0x19d9e9[_0xcac3('0x23')]));}return Promise[_0xcac3('0x3a')]()['then'](function(){if(!_0x19d9e9['userSetting']){return _0x19d9e9[_0xcac3('0x3d')]({'clientSideLoggingLevel':_0xcac3('0x3e'),'clientSideLoggingEnabled':![]});}})[_0xcac3('0x2a')](function(){return _0x5976ed[_0xcac3('0x3f')][_0xcac3('0x40')](_0xdec6e2);})[_0xcac3('0x2a')](function(){if(_0x19d9e9[_0xcac3('0xf')]){return getChanSpyPromise(_0x5976ed,_0x19d9e9);}})[_0xcac3('0x2a')](function(_0x3bf389){if(_0x3bf389&&_0x3bf389['length']){return _0x5976ed[_0xcac3('0x3f')][_0xcac3('0x40')](_0x3bf389);}})[_0xcac3('0x2a')](function(){_0x1eb6e3();})[_0xcac3('0x2d')](function(_0x12bc54){_0x1eb6e3(_0x12bc54);});},'afterUpdate':function(_0x30ca8c,_0xa74a36,_0x2bf6f5){return BPromise['resolve']()[_0xcac3('0x2a')](function(){if(_0x30ca8c['changed'](_0xcac3('0xf'))||_0x30ca8c[_0xcac3('0x3b')]('context')){return _0x5976ed['VoiceExtension'][_0xcac3('0x41')]({'where':{'UserId':_0x30ca8c['id'],'type':_0xcac3('0x7'),'ChanSpyId':{'$ne':null}}})[_0xcac3('0x2a')](function(){if(_0x30ca8c[_0xcac3('0xf')]){return getChanSpyPromise(_0x5976ed,_0x30ca8c)[_0xcac3('0x2a')](function(_0x125016){if(_0x125016&&_0x125016['length']){return _0x5976ed['VoiceExtension']['bulkCreate'](_0x125016);}});}});}})['then'](function(){if(_0x30ca8c['changed'](_0xcac3('0x1e'))||_0x30ca8c[_0xcac3('0x3b')]('context')){return _0x5976ed[_0xcac3('0x3f')][_0xcac3('0x41')]({'where':{'UserId':_0x30ca8c['id'],'type':_0xcac3('0x7'),'ChanSpyId':null}})[_0xcac3('0x2a')](function(){var _0x236280=getUserApplications(_0x30ca8c,_0x30ca8c[_0xcac3('0x2b')]);if(_0x30ca8c[_0xcac3('0x2b')]!=_0x30ca8c[_0xcac3('0x23')]){_0x236280=_0x236280[_0xcac3('0x2c')](getUserApplications(_0x30ca8c,_0x30ca8c[_0xcac3('0x23')]));}return _0x5976ed[_0xcac3('0x3f')][_0xcac3('0x40')](_0x236280);});}})[_0xcac3('0x2a')](function(){_0x2bf6f5();})[_0xcac3('0x2d')](function(_0x5e2cdb){_0x2bf6f5(_0x5e2cdb);});},'afterDestroy':function(_0xc7250b){return _0x5976ed[_0xcac3('0x3f')][_0xcac3('0x41')]({'where':{'UserId':_0xc7250b['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x45d22e,_0x8871f6){if(!_0x8871f6){return this[_0xcac3('0x3c')]===this['encryptPassword'](_0x45d22e);}var _0x576517=this;this[_0xcac3('0x42')](_0x45d22e,function(_0x487cc4,_0x2705f9){if(_0x487cc4){_0x8871f6(_0x487cc4);}if(_0x576517[_0xcac3('0x3c')]===_0x2705f9){_0x8871f6(null,!![]);}else{_0x8871f6(null,![]);}});},'makeSalt':function(_0xc60239,_0xa43ed8){var _0x57f58f=0x10;if(typeof arguments[0x0]==='function'){_0xa43ed8=arguments[0x0];_0xc60239=_0x57f58f;}else if(typeof arguments[0x1]===_0xcac3('0x43')){_0xa43ed8=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0xc60239){_0xc60239=_0x57f58f;}return crypto['randomBytes'](_0xc60239,function(_0x31bcb2,_0x39adf5){if(_0x31bcb2){_0xa43ed8(_0x31bcb2);}return _0xa43ed8(null,_0x39adf5[_0xcac3('0x44')](_0xcac3('0x45')));});},'encryptPassword':function(_0x81507d,_0x4c91a3){if(!_0x81507d||!this[_0xcac3('0x46')]){return _0x4c91a3?_0x4c91a3(null):null;}var _0x31e60e=0x2710;var _0x15704b=0x40;var _0x6824ea=new Buffer(this[_0xcac3('0x46')],_0xcac3('0x45'));if(!_0x4c91a3){return crypto[_0xcac3('0x47')](_0x81507d,_0x6824ea,_0x31e60e,_0x15704b,_0xcac3('0x48'))[_0xcac3('0x44')](_0xcac3('0x45'));}return crypto[_0xcac3('0x49')](_0x81507d,_0x6824ea,_0x31e60e,_0x15704b,'sha1',function(_0x205ce4,_0x3ba9ad){if(_0x205ce4){_0x4c91a3(_0x205ce4);}return _0x4c91a3(null,_0x3ba9ad[_0xcac3('0x44')]('base64'));});},'updatePassword':function(_0x69b84e){if(!this[_0xcac3('0x3c')]){return _0x69b84e(null);}if(!validatePresenceOf(this[_0xcac3('0x3c')])&&authTypes[_0xcac3('0x4a')](this[_0xcac3('0x4b')])===-0x1){_0x69b84e(new Error(_0xcac3('0x4c')));}var _0x18ba25=this;this[_0xcac3('0x4d')](function(_0x239e77,_0x250eb2){if(_0x239e77){return _0x69b84e(_0x239e77);}_0x18ba25[_0xcac3('0x46')]=_0x250eb2;_0x18ba25['encryptPassword'](_0x18ba25['password'],function(_0x2182c0,_0x2a8644){if(_0x2182c0){_0x69b84e(_0x2182c0);}_0x18ba25[_0xcac3('0x3c')]=_0x2a8644;_0x69b84e(null);});});},'updateMd5Password':function(){this[_0xcac3('0x4e')]=md5(this[_0xcac3('0x23')]+_0xcac3('0x4f')+this['password']);return this[_0xcac3('0x4e')];}}});};