188e8a8db3fdb3405d559437cb08dd71b6d10bab
[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 _0x552b=['defaults','VoiceChanSpy','findAll','then','internal','concat','exports','models','define','User','users','utf8_bin','updateMd5Password','changed','updatePassword','bulkCreate','catch','resolve','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt',':asterisk:','md5secret','util','lodash','google','length','context','from-sip','format','%s%s','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','gsm','system','Set','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority'];(function(_0x3c8790,_0x1cea9c){var _0xd00a35=function(_0x1b0ec5){while(--_0x1b0ec5){_0x3c8790['push'](_0x3c8790['shift']());}};_0xd00a35(++_0x1cea9c);}(_0x552b,0x14b));var _0xb552=function(_0x1431c3,_0x4a0757){_0x1431c3=_0x1431c3-0x0;var _0x4090ab=_0x552b[_0x1431c3];return _0x4090ab;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xb552('0x0'));var md5=require('md5');var _=require(_0xb552('0x1'));var attributes=require('./user.attributes');var authTypes=[_0xb552('0x2')];var validatePresenceOf=function(_0x1c1abf){return _0x1c1abf&&_0x1c1abf[_0xb552('0x3')];};var getChanSpyApplications=function(_0x3ac76e,_0x93a956,_0x523263){var _0x56a71d={'context':_0x3ac76e[_0xb552('0x4')]||_0xb552('0x5'),'type':'system','isApp':![],'UserId':_0x3ac76e['id']};var _0x917c8=[];for(var _0x3f14fb=0x0,_0xfecff4=0x1;_0x3f14fb<_0x523263[_0xb552('0x3')];_0x3f14fb++,_0xfecff4=0x1){var _0x413f28={'exten':util[_0xb552('0x6')](_0xb552('0x7'),_0x523263[_0x3f14fb][_0xb552('0x8')],_0x93a956),'ChanSpyId':_0x523263[_0x3f14fb]['id']};_0x917c8[_0xb552('0x9')](_[_0xb552('0xa')]({'app':'Set','appdata':util[_0xb552('0x6')](_0xb552('0xb'),_0xb552('0xc')),'priority':_0xfecff4++},_0x56a71d,_0x413f28));if(_0x523263[_0x3f14fb][_0xb552('0xd')]){_0x917c8[_0xb552('0x9')](_[_0xb552('0xa')]({'app':_0xb552('0xe'),'appdata':util[_0xb552('0x6')]('${UNIQUEID}.%s,ab',_0x523263[_0x3f14fb][_0xb552('0xf')]),'priority':_0xfecff4++},_0x56a71d,_0x413f28));}if(_0x523263[_0x3f14fb][_0xb552('0x10')]){_0x917c8[_0xb552('0x9')](_[_0xb552('0xa')]({'app':'Authenticate','appdata':_0x523263[_0x3f14fb][_0xb552('0x11')],'priority':_0xfecff4++},_0x56a71d,_0x413f28));}_0x917c8[_0xb552('0x9')](_[_0xb552('0xa')]({'app':_0xb552('0x12'),'appdata':util[_0xb552('0x6')](_0xb552('0x13'),_0x3ac76e[_0xb552('0x14')],_0x523263[_0x3f14fb][_0xb552('0x15')]?_0x523263[_0x3f14fb]['options'][_0xb552('0x16')](''):''),'priority':_0xfecff4++},_0x56a71d,_0x413f28));if(_0x523263[_0x3f14fb][_0xb552('0xd')]){_0x917c8[_0xb552('0x9')](_[_0xb552('0xa')]({'app':_0xb552('0x17'),'priority':_0xfecff4++},_0x56a71d,_0x413f28));}}return _0x917c8;};var getUserApplications=function(_0x2b493f,_0x27ca43){var _0x26645c=[_0xb552('0x18'),_0xb552('0x19'),_0xb552('0x1a')];var _0xc981a0={'context':_0x2b493f[_0xb552('0x4')]||_0xb552('0x5'),'exten':_0x27ca43,'type':_0xb552('0x1b'),'isApp':![],'UserId':_0x2b493f['id']};var _0x130e47=[{'app':_0xb552('0x1c'),'appdata':_0xb552('0x1d')}];if(_0x2b493f['extensionMonitor']&&_[_0xb552('0x1e')](_0x26645c,_0x2b493f[_0xb552('0x1f')])){_0x130e47[_0xb552('0x9')]({'app':'Set','appdata':_0xb552('0x20')});_0x130e47['push']({'app':_0xb552('0x1c'),'appdata':util[_0xb552('0x6')](_0xb552('0x21'),_0x2b493f['extensionMonitor'])});_0x130e47[_0xb552('0x9')]({'app':_0xb552('0x22'),'appdata':util[_0xb552('0x6')](_0xb552('0x23'),_0x2b493f[_0xb552('0x14')])});}else{_0x130e47[_0xb552('0x9')]({'app':_0xb552('0x22'),'appdata':util[_0xb552('0x6')](_0xb552('0x24'),_0x2b493f[_0xb552('0x14')])});}_0x130e47[_0xb552('0x9')]({'app':_0xb552('0x25')});for(var _0x25aac9=0x0;_0x25aac9<_0x130e47['length'];_0x25aac9++){_0x130e47[_0x25aac9][_0xb552('0x26')]=_0x25aac9+0x1;_0x130e47[_0x25aac9]=_[_0xb552('0x27')](_0x130e47[_0x25aac9],_0xc981a0);}return _0x130e47;};var getChanSpyPromise=function(_0x478e8e,_0x3d6b0d){return new BPromise(function(_0x6fcd03,_0x21058c){return _0x478e8e[_0xb552('0x28')][_0xb552('0x29')]()[_0xb552('0x2a')](function(_0x18c060){if(_0x18c060){var _0x5e82ef=getChanSpyApplications(_0x3d6b0d,_0x3d6b0d[_0xb552('0x2b')],_0x18c060);if(_0x3d6b0d[_0xb552('0x2b')]!=_0x3d6b0d[_0xb552('0x14')]){_0x5e82ef=_0x5e82ef[_0xb552('0x2c')](getChanSpyApplications(_0x3d6b0d,_0x3d6b0d[_0xb552('0x14')],_0x18c060));}return _0x6fcd03(_0x5e82ef);}return _0x6fcd03([]);})['catch'](function(_0x2fedb){_0x21058c(_0x2fedb);});});};module[_0xb552('0x2d')]=function(_0x35bd02,_0x15d342){var _0x4723c6=_0x35bd02[_0xb552('0x2e')];return _0x35bd02[_0xb552('0x2f')](_0xb552('0x30'),attributes,{'tableName':_0xb552('0x31'),'charset':'utf8','collate':_0xb552('0x32'),'hooks':{'beforeCreate':function(_0x3c6582,_0x263ddd,_0xe4637b){_0x3c6582[_0xb552('0x33')]();_0x3c6582['updatePassword'](_0xe4637b);},'beforeUpdate':function(_0x22829a,_0x53d8ae,_0x266b55){if(_0x22829a[_0xb552('0x34')]('password')){_0x22829a[_0xb552('0x33')]();return _0x22829a[_0xb552('0x35')](_0x266b55);}_0x266b55();},'afterCreate':function(_0x3de316,_0x1a837f,_0xd0913d){var _0x13d2b1=getUserApplications(_0x3de316,_0x3de316[_0xb552('0x2b')]);if(_0x3de316[_0xb552('0x2b')]!=_0x3de316[_0xb552('0x14')]){_0x13d2b1=_0x13d2b1[_0xb552('0x2c')](getUserApplications(_0x3de316,_0x3de316[_0xb552('0x14')]));}return _0x4723c6['VoiceExtension'][_0xb552('0x36')](_0x13d2b1)['then'](function(){if(_0x3de316[_0xb552('0xc')]){return getChanSpyPromise(_0x4723c6,_0x3de316);}})[_0xb552('0x2a')](function(_0x466629){if(_0x466629&&_0x466629[_0xb552('0x3')]){return _0x4723c6['VoiceExtension'][_0xb552('0x36')](_0x466629);}})[_0xb552('0x2a')](function(){_0xd0913d();})[_0xb552('0x37')](function(_0x5abe70){_0xd0913d(_0x5abe70);});},'afterUpdate':function(_0x5c58a2,_0x339512,_0x5700f7){return BPromise[_0xb552('0x38')]()[_0xb552('0x2a')](function(){if(_0x5c58a2[_0xb552('0x34')](_0xb552('0xc'))||_0x5c58a2[_0xb552('0x34')]('context')){return _0x4723c6[_0xb552('0x39')][_0xb552('0x3a')]({'where':{'UserId':_0x5c58a2['id'],'type':_0xb552('0x1b'),'ChanSpyId':{'$ne':null}}})[_0xb552('0x2a')](function(){if(_0x5c58a2[_0xb552('0xc')]){return getChanSpyPromise(_0x4723c6,_0x5c58a2)[_0xb552('0x2a')](function(_0x55daaf){if(_0x55daaf&&_0x55daaf[_0xb552('0x3')]){return _0x4723c6[_0xb552('0x39')][_0xb552('0x36')](_0x55daaf);}});}});}})[_0xb552('0x2a')](function(){if(_0x5c58a2[_0xb552('0x34')](_0xb552('0x1f'))||_0x5c58a2['changed'](_0xb552('0x4'))){return _0x4723c6[_0xb552('0x39')]['destroy']({'where':{'UserId':_0x5c58a2['id'],'type':_0xb552('0x1b'),'ChanSpyId':null}})[_0xb552('0x2a')](function(){var _0x466405=getUserApplications(_0x5c58a2,_0x5c58a2[_0xb552('0x2b')]);if(_0x5c58a2[_0xb552('0x2b')]!=_0x5c58a2[_0xb552('0x14')]){_0x466405=_0x466405['concat'](getUserApplications(_0x5c58a2,_0x5c58a2[_0xb552('0x14')]));}return _0x4723c6['VoiceExtension']['bulkCreate'](_0x466405);});}})[_0xb552('0x2a')](function(){_0x5700f7();})[_0xb552('0x37')](function(_0x1e9cae){_0x5700f7(_0x1e9cae);});},'afterDestroy':function(_0x2de54d,_0x13e337){return _0x4723c6[_0xb552('0x39')]['destroy']({'where':{'UserId':_0x2de54d['id'],'type':_0xb552('0x1b')}});}},'instanceMethods':{'authenticate':function(_0x378b62,_0x3ab55e){if(!_0x3ab55e){return this[_0xb552('0x11')]===this[_0xb552('0x3b')](_0x378b62);}var _0x2e210f=this;this[_0xb552('0x3b')](_0x378b62,function(_0x2aa1a3,_0x816f1c){if(_0x2aa1a3){_0x3ab55e(_0x2aa1a3);}if(_0x2e210f[_0xb552('0x11')]===_0x816f1c){_0x3ab55e(null,!![]);}else{_0x3ab55e(null,![]);}});},'makeSalt':function(_0xf65728,_0xa42ec4){var _0x1b01a0=0x10;if(typeof arguments[0x0]===_0xb552('0x3c')){_0xa42ec4=arguments[0x0];_0xf65728=_0x1b01a0;}else if(typeof arguments[0x1]===_0xb552('0x3c')){_0xa42ec4=arguments[0x1];}else{throw new Error(_0xb552('0x3d'));}if(!_0xf65728){_0xf65728=_0x1b01a0;}return crypto[_0xb552('0x3e')](_0xf65728,function(_0x48facd,_0x348012){if(_0x48facd){_0xa42ec4(_0x48facd);}return _0xa42ec4(null,_0x348012[_0xb552('0x3f')](_0xb552('0x40')));});},'encryptPassword':function(_0x444d90,_0x451d4a){if(!_0x444d90||!this[_0xb552('0x41')]){return _0x451d4a?_0x451d4a(null):null;}var _0x1c6b1f=0x2710;var _0x58bece=0x40;var _0x2337ab=new Buffer(this[_0xb552('0x41')],'base64');if(!_0x451d4a){return crypto[_0xb552('0x42')](_0x444d90,_0x2337ab,_0x1c6b1f,_0x58bece,_0xb552('0x43'))['toString']('base64');}return crypto[_0xb552('0x44')](_0x444d90,_0x2337ab,_0x1c6b1f,_0x58bece,_0xb552('0x43'),function(_0x4314d6,_0x50a9c9){if(_0x4314d6){_0x451d4a(_0x4314d6);}return _0x451d4a(null,_0x50a9c9['toString']('base64'));});},'updatePassword':function(_0x548705){if(!this[_0xb552('0x11')]){return _0x548705(null);}if(!validatePresenceOf(this[_0xb552('0x11')])&&authTypes[_0xb552('0x45')](this['provider'])===-0x1){_0x548705(new Error(_0xb552('0x46')));}var _0x189502=this;this[_0xb552('0x47')](function(_0xc89748,_0x45daa2){if(_0xc89748){return _0x548705(_0xc89748);}_0x189502['salt']=_0x45daa2;_0x189502[_0xb552('0x3b')](_0x189502['password'],function(_0x5722dc,_0x532a26){if(_0x5722dc){_0x548705(_0x5722dc);}_0x189502['password']=_0x532a26;_0x548705(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xb552('0x14')]+_0xb552('0x48')+this['password']);return this[_0xb552('0x49')];}}});};