Built motion from commit (unavailable).|2.5.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 _0x341f=['merge','Set','format','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','record','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','Hangup','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','models','define','users','changed','updateMd5Password','VoiceExtension','bulkCreate','destroy','system','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2','sha1','toString','indexOf','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','google','context','from-sip','length','%s%s','push'];(function(_0x3c1a53,_0x583c4a){var _0x2bbfd5=function(_0x32e2d3){while(--_0x32e2d3){_0x3c1a53['push'](_0x3c1a53['shift']());}};_0x2bbfd5(++_0x583c4a);}(_0x341f,0x121));var _0xf341=function(_0x569eef,_0x4d0832){_0x569eef=_0x569eef-0x0;var _0xf5bb49=_0x341f[_0x569eef];return _0xf5bb49;};'use strict';var BPromise=require(_0xf341('0x0'));var crypto=require(_0xf341('0x1'));var util=require(_0xf341('0x2'));var md5=require(_0xf341('0x3'));var _=require(_0xf341('0x4'));var attributes=require('./user.attributes');var authTypes=[_0xf341('0x5')];var validatePresenceOf=function(_0x30a3c3){return _0x30a3c3&&_0x30a3c3['length'];};var getChanSpyApplications=function(_0x46bddf,_0x276c24,_0x172611){var _0x51a66b={'context':_0x46bddf[_0xf341('0x6')]||_0xf341('0x7'),'type':'system','isApp':![],'UserId':_0x46bddf['id']};var _0x197aad=[];for(var _0x4e5fe0=0x0,_0x2a8194=0x1;_0x4e5fe0<_0x172611[_0xf341('0x8')];_0x4e5fe0++,_0x2a8194=0x1){var _0x5588ea={'exten':util['format'](_0xf341('0x9'),_0x172611[_0x4e5fe0]['prefix'],_0x276c24),'ChanSpyId':_0x172611[_0x4e5fe0]['id']};_0x197aad[_0xf341('0xa')](_[_0xf341('0xb')]({'app':_0xf341('0xc'),'appdata':util[_0xf341('0xd')](_0xf341('0xe'),_0xf341('0xf')),'priority':_0x2a8194++},_0x51a66b,_0x5588ea));if(_0x172611[_0x4e5fe0]['record']){_0x197aad['push'](_[_0xf341('0xb')]({'app':'MixMonitor','appdata':util[_0xf341('0xd')](_0xf341('0x10'),_0x172611[_0x4e5fe0][_0xf341('0x11')]),'priority':_0x2a8194++},_0x51a66b,_0x5588ea));}if(_0x172611[_0x4e5fe0][_0xf341('0x12')]){_0x197aad[_0xf341('0xa')](_['merge']({'app':'Authenticate','appdata':_0x172611[_0x4e5fe0][_0xf341('0x13')],'priority':_0x2a8194++},_0x51a66b,_0x5588ea));}_0x197aad['push'](_['merge']({'app':_0xf341('0x14'),'appdata':util[_0xf341('0xd')](_0xf341('0x15'),_0x46bddf[_0xf341('0x16')],_0x172611[_0x4e5fe0]['options']?_0x172611[_0x4e5fe0]['options']['join'](''):''),'priority':_0x2a8194++},_0x51a66b,_0x5588ea));if(_0x172611[_0x4e5fe0][_0xf341('0x17')]){_0x197aad[_0xf341('0xa')](_['merge']({'app':'StopMixMonitor','priority':_0x2a8194++},_0x51a66b,_0x5588ea));}}return _0x197aad;};var getUserApplications=function(_0x4fb967,_0x440574){var _0x48ba7a=['wav',_0xf341('0x18'),'gsm'];var _0x2c73e2={'context':_0x4fb967[_0xf341('0x6')]||_0xf341('0x7'),'exten':_0x440574,'type':'system','isApp':![],'UserId':_0x4fb967['id']};var _0x5dd544=[{'app':'Set','appdata':_0xf341('0x19')}];if(_0x4fb967[_0xf341('0x1a')]&&_[_0xf341('0x1b')](_0x48ba7a,_0x4fb967[_0xf341('0x1a')])){_0x5dd544[_0xf341('0xa')]({'app':'Set','appdata':_0xf341('0x1c')});_0x5dd544[_0xf341('0xa')]({'app':_0xf341('0xc'),'appdata':util[_0xf341('0xd')](_0xf341('0x1d'),_0x4fb967['extensionMonitor'])});_0x5dd544[_0xf341('0xa')]({'app':_0xf341('0x1e'),'appdata':util[_0xf341('0xd')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x4fb967[_0xf341('0x16')])});}else{_0x5dd544[_0xf341('0xa')]({'app':'Dial','appdata':util[_0xf341('0xd')]('SIP/%s,,tTxX',_0x4fb967[_0xf341('0x16')])});}_0x5dd544[_0xf341('0xa')]({'app':_0xf341('0x1f')});for(var _0x171e5c=0x0;_0x171e5c<_0x5dd544[_0xf341('0x8')];_0x171e5c++){_0x5dd544[_0x171e5c]['priority']=_0x171e5c+0x1;_0x5dd544[_0x171e5c]=_[_0xf341('0x20')](_0x5dd544[_0x171e5c],_0x2c73e2);}return _0x5dd544;};var getChanSpyPromise=function(_0xf75bb,_0x46fe96){return new BPromise(function(_0x28c0ea,_0xf76274){return _0xf75bb[_0xf341('0x21')][_0xf341('0x22')]()[_0xf341('0x23')](function(_0x2f1330){if(_0x2f1330){var _0x12495b=getChanSpyApplications(_0x46fe96,_0x46fe96[_0xf341('0x24')],_0x2f1330);if(_0x46fe96[_0xf341('0x24')]!=_0x46fe96['name']){_0x12495b=_0x12495b[_0xf341('0x25')](getChanSpyApplications(_0x46fe96,_0x46fe96['name'],_0x2f1330));}return _0x28c0ea(_0x12495b);}return _0x28c0ea([]);})[_0xf341('0x26')](function(_0x3f379c){_0xf76274(_0x3f379c);});});};module['exports']=function(_0x524260,_0x122a2e){var _0x363b3a=_0x524260[_0xf341('0x27')];return _0x524260[_0xf341('0x28')]('User',attributes,{'tableName':_0xf341('0x29'),'charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x39770d,_0xb4a6a9,_0x5b3e7e){_0x39770d['updateMd5Password']();_0x39770d['updatePassword'](_0x5b3e7e);},'beforeUpdate':function(_0x222191,_0x129637,_0x11f430){if(_0x222191[_0xf341('0x2a')]('password')){_0x222191[_0xf341('0x2b')]();return _0x222191['updatePassword'](_0x11f430);}_0x11f430();},'afterCreate':function(_0x3ad6ad,_0x2d3161,_0x134ecb){var _0x4f07aa=getUserApplications(_0x3ad6ad,_0x3ad6ad[_0xf341('0x24')]);if(_0x3ad6ad[_0xf341('0x24')]!=_0x3ad6ad[_0xf341('0x16')]){_0x4f07aa=_0x4f07aa[_0xf341('0x25')](getUserApplications(_0x3ad6ad,_0x3ad6ad[_0xf341('0x16')]));}return _0x363b3a[_0xf341('0x2c')]['bulkCreate'](_0x4f07aa)['then'](function(){if(_0x3ad6ad[_0xf341('0xf')]){return getChanSpyPromise(_0x363b3a,_0x3ad6ad);}})[_0xf341('0x23')](function(_0x148d3a){if(_0x148d3a&&_0x148d3a[_0xf341('0x8')]){return _0x363b3a['VoiceExtension'][_0xf341('0x2d')](_0x148d3a);}})['then'](function(){_0x134ecb();})['catch'](function(_0x1a86fc){_0x134ecb(_0x1a86fc);});},'afterUpdate':function(_0x1f4da5,_0x383430,_0x234ac1){return BPromise['resolve']()['then'](function(){if(_0x1f4da5[_0xf341('0x2a')](_0xf341('0xf'))||_0x1f4da5['changed'](_0xf341('0x6'))){return _0x363b3a['VoiceExtension'][_0xf341('0x2e')]({'where':{'UserId':_0x1f4da5['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xf341('0x23')](function(){if(_0x1f4da5[_0xf341('0xf')]){return getChanSpyPromise(_0x363b3a,_0x1f4da5)[_0xf341('0x23')](function(_0x30d0f3){if(_0x30d0f3&&_0x30d0f3[_0xf341('0x8')]){return _0x363b3a[_0xf341('0x2c')][_0xf341('0x2d')](_0x30d0f3);}});}});}})[_0xf341('0x23')](function(){if(_0x1f4da5[_0xf341('0x2a')](_0xf341('0x1a'))||_0x1f4da5['changed'](_0xf341('0x6'))){return _0x363b3a[_0xf341('0x2c')]['destroy']({'where':{'UserId':_0x1f4da5['id'],'type':_0xf341('0x2f'),'ChanSpyId':null}})[_0xf341('0x23')](function(){var _0x17cd52=getUserApplications(_0x1f4da5,_0x1f4da5[_0xf341('0x24')]);if(_0x1f4da5['internal']!=_0x1f4da5[_0xf341('0x16')]){_0x17cd52=_0x17cd52[_0xf341('0x25')](getUserApplications(_0x1f4da5,_0x1f4da5[_0xf341('0x16')]));}return _0x363b3a[_0xf341('0x2c')][_0xf341('0x2d')](_0x17cd52);});}})[_0xf341('0x23')](function(){_0x234ac1();})[_0xf341('0x26')](function(_0x1da256){_0x234ac1(_0x1da256);});},'afterDestroy':function(_0x49c29a,_0x49e235){return _0x363b3a[_0xf341('0x2c')][_0xf341('0x2e')]({'where':{'UserId':_0x49c29a['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4308d2,_0xed0e8b){if(!_0xed0e8b){return this[_0xf341('0x13')]===this[_0xf341('0x30')](_0x4308d2);}var _0x127c0e=this;this[_0xf341('0x30')](_0x4308d2,function(_0x284c08,_0x4a4f0f){if(_0x284c08){_0xed0e8b(_0x284c08);}if(_0x127c0e[_0xf341('0x13')]===_0x4a4f0f){_0xed0e8b(null,!![]);}else{_0xed0e8b(null,![]);}});},'makeSalt':function(_0xe66b44,_0x2574c1){var _0x11fe09=0x10;if(typeof arguments[0x0]==='function'){_0x2574c1=arguments[0x0];_0xe66b44=_0x11fe09;}else if(typeof arguments[0x1]===_0xf341('0x31')){_0x2574c1=arguments[0x1];}else{throw new Error(_0xf341('0x32'));}if(!_0xe66b44){_0xe66b44=_0x11fe09;}return crypto[_0xf341('0x33')](_0xe66b44,function(_0x2391c2,_0xa997c6){if(_0x2391c2){_0x2574c1(_0x2391c2);}return _0x2574c1(null,_0xa997c6['toString'](_0xf341('0x34')));});},'encryptPassword':function(_0x1fcf14,_0x136fa6){if(!_0x1fcf14||!this[_0xf341('0x35')]){return _0x136fa6?_0x136fa6(null):null;}var _0x516de8=0x2710;var _0x2a925c=0x40;var _0x34a067=new Buffer(this[_0xf341('0x35')],_0xf341('0x34'));if(!_0x136fa6){return crypto['pbkdf2Sync'](_0x1fcf14,_0x34a067,_0x516de8,_0x2a925c,'sha1')['toString'](_0xf341('0x34'));}return crypto[_0xf341('0x36')](_0x1fcf14,_0x34a067,_0x516de8,_0x2a925c,_0xf341('0x37'),function(_0x407be0,_0x455b6e){if(_0x407be0){_0x136fa6(_0x407be0);}return _0x136fa6(null,_0x455b6e[_0xf341('0x38')](_0xf341('0x34')));});},'updatePassword':function(_0x466334){if(!this[_0xf341('0x13')]){return _0x466334(null);}if(!validatePresenceOf(this[_0xf341('0x13')])&&authTypes[_0xf341('0x39')](this['provider'])===-0x1){_0x466334(new Error('Invalid\x20password'));}var _0x485c99=this;this['makeSalt'](function(_0x5e5399,_0x3f9ca4){if(_0x5e5399){return _0x466334(_0x5e5399);}_0x485c99[_0xf341('0x35')]=_0x3f9ca4;_0x485c99[_0xf341('0x30')](_0x485c99[_0xf341('0x13')],function(_0x41de29,_0x31ba7f){if(_0x41de29){_0x466334(_0x41de29);}_0x485c99[_0xf341('0x13')]=_0x31ba7f;_0x466334(null);});});},'updateMd5Password':function(){this[_0xf341('0x3a')]=md5(this[_0xf341('0x16')]+_0xf341('0x3b')+this[_0xf341('0x13')]);return this[_0xf341('0x3a')];}}});};