Built motion from commit (unavailable).|2.5.18
[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 _0xbcce=['wav','gsm','CDR(type)=internal','extensionMonitor','includes','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','findAll','concat','catch','exports','models','define','User','updateMd5Password','updatePassword','changed','internal','VoiceExtension','then','resolve','destroy','bulkCreate','encryptPassword','function','Missing\x20Callback','randomBytes','base64','salt','pbkdf2Sync','toString','sha1','indexOf','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','google','context','from-sip','system','length','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbcce,0xee));var _0xebcc=function(_0x373654,_0x2978cc){_0x373654=_0x373654-0x0;var _0x1212ca=_0xbcce[_0x373654];return _0x1212ca;};'use strict';var BPromise=require(_0xebcc('0x0'));var crypto=require(_0xebcc('0x1'));var util=require(_0xebcc('0x2'));var md5=require('md5');var _=require('lodash');var attributes=require('./user.attributes');var authTypes=[_0xebcc('0x3')];var validatePresenceOf=function(_0x4a48e6){return _0x4a48e6&&_0x4a48e6['length'];};var getChanSpyApplications=function(_0x2c0ba3,_0x123595,_0x5b6ae3){var _0x44a0d2={'context':_0x2c0ba3[_0xebcc('0x4')]||_0xebcc('0x5'),'type':_0xebcc('0x6'),'isApp':![],'UserId':_0x2c0ba3['id']};var _0x7d6ece=[];for(var _0x33af1f=0x0,_0x55c3dd=0x1;_0x33af1f<_0x5b6ae3[_0xebcc('0x7')];_0x33af1f++,_0x55c3dd=0x1){var _0xea63e8={'exten':util['format']('%s%s',_0x5b6ae3[_0x33af1f][_0xebcc('0x8')],_0x123595),'ChanSpyId':_0x5b6ae3[_0x33af1f]['id']};_0x7d6ece[_0xebcc('0x9')](_[_0xebcc('0xa')]({'app':_0xebcc('0xb'),'appdata':util[_0xebcc('0xc')](_0xebcc('0xd'),_0xebcc('0xe')),'priority':_0x55c3dd++},_0x44a0d2,_0xea63e8));if(_0x5b6ae3[_0x33af1f][_0xebcc('0xf')]){_0x7d6ece[_0xebcc('0x9')](_['merge']({'app':_0xebcc('0x10'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x5b6ae3[_0x33af1f][_0xebcc('0x11')]),'priority':_0x55c3dd++},_0x44a0d2,_0xea63e8));}if(_0x5b6ae3[_0x33af1f][_0xebcc('0x12')]){_0x7d6ece[_0xebcc('0x9')](_[_0xebcc('0xa')]({'app':_0xebcc('0x13'),'appdata':_0x5b6ae3[_0x33af1f][_0xebcc('0x14')],'priority':_0x55c3dd++},_0x44a0d2,_0xea63e8));}_0x7d6ece[_0xebcc('0x9')](_[_0xebcc('0xa')]({'app':'ChanSpy','appdata':util[_0xebcc('0xc')](_0xebcc('0x15'),_0x2c0ba3[_0xebcc('0x16')],_0x5b6ae3[_0x33af1f][_0xebcc('0x17')]?_0x5b6ae3[_0x33af1f][_0xebcc('0x17')][_0xebcc('0x18')](''):''),'priority':_0x55c3dd++},_0x44a0d2,_0xea63e8));if(_0x5b6ae3[_0x33af1f][_0xebcc('0xf')]){_0x7d6ece[_0xebcc('0x9')](_[_0xebcc('0xa')]({'app':_0xebcc('0x19'),'priority':_0x55c3dd++},_0x44a0d2,_0xea63e8));}}return _0x7d6ece;};var getUserApplications=function(_0x128886,_0x1c9253){var _0x32d4dd=[_0xebcc('0x1a'),'WAV',_0xebcc('0x1b')];var _0x519ed0={'context':_0x128886['context']||_0xebcc('0x5'),'exten':_0x1c9253,'type':_0xebcc('0x6'),'isApp':![],'UserId':_0x128886['id']};var _0x2bb696=[{'app':_0xebcc('0xb'),'appdata':_0xebcc('0x1c')}];if(_0x128886[_0xebcc('0x1d')]&&_[_0xebcc('0x1e')](_0x32d4dd,_0x128886['extensionMonitor'])){_0x2bb696[_0xebcc('0x9')]({'app':_0xebcc('0xb'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x2bb696['push']({'app':_0xebcc('0xb'),'appdata':util[_0xebcc('0xc')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x128886[_0xebcc('0x1d')])});_0x2bb696['push']({'app':_0xebcc('0x1f'),'appdata':util['format']('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x128886[_0xebcc('0x16')])});}else{_0x2bb696[_0xebcc('0x9')]({'app':_0xebcc('0x1f'),'appdata':util['format'](_0xebcc('0x20'),_0x128886[_0xebcc('0x16')])});}_0x2bb696['push']({'app':_0xebcc('0x21')});for(var _0x1da7bd=0x0;_0x1da7bd<_0x2bb696['length'];_0x1da7bd++){_0x2bb696[_0x1da7bd][_0xebcc('0x22')]=_0x1da7bd+0x1;_0x2bb696[_0x1da7bd]=_[_0xebcc('0x23')](_0x2bb696[_0x1da7bd],_0x519ed0);}return _0x2bb696;};var getChanSpyPromise=function(_0x2c5470,_0x22054e){return new BPromise(function(_0x289bff,_0x26ba22){return _0x2c5470['VoiceChanSpy'][_0xebcc('0x24')]()['then'](function(_0x58352a){if(_0x58352a){var _0x3710de=getChanSpyApplications(_0x22054e,_0x22054e['internal'],_0x58352a);if(_0x22054e['internal']!=_0x22054e[_0xebcc('0x16')]){_0x3710de=_0x3710de[_0xebcc('0x25')](getChanSpyApplications(_0x22054e,_0x22054e[_0xebcc('0x16')],_0x58352a));}return _0x289bff(_0x3710de);}return _0x289bff([]);})[_0xebcc('0x26')](function(_0x311dd8){_0x26ba22(_0x311dd8);});});};module[_0xebcc('0x27')]=function(_0x57172c,_0x5112b9){var _0x345f80=_0x57172c[_0xebcc('0x28')];return _0x57172c[_0xebcc('0x29')](_0xebcc('0x2a'),attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x40b890,_0x1bb7c5,_0x296bd3){_0x40b890[_0xebcc('0x2b')]();_0x40b890[_0xebcc('0x2c')](_0x296bd3);},'beforeUpdate':function(_0x407a0a,_0x536985,_0x4dc9ad){if(_0x407a0a[_0xebcc('0x2d')](_0xebcc('0x14'))){_0x407a0a['updateMd5Password']();return _0x407a0a[_0xebcc('0x2c')](_0x4dc9ad);}_0x4dc9ad();},'afterCreate':function(_0x7a97f9,_0x2bb4f1,_0x2b715f){var _0x28e95a=getUserApplications(_0x7a97f9,_0x7a97f9[_0xebcc('0x2e')]);if(_0x7a97f9[_0xebcc('0x2e')]!=_0x7a97f9['name']){_0x28e95a=_0x28e95a[_0xebcc('0x25')](getUserApplications(_0x7a97f9,_0x7a97f9[_0xebcc('0x16')]));}return _0x345f80[_0xebcc('0x2f')]['bulkCreate'](_0x28e95a)['then'](function(){if(_0x7a97f9[_0xebcc('0xe')]){return getChanSpyPromise(_0x345f80,_0x7a97f9);}})[_0xebcc('0x30')](function(_0x3af2b8){if(_0x3af2b8&&_0x3af2b8[_0xebcc('0x7')]){return _0x345f80[_0xebcc('0x2f')]['bulkCreate'](_0x3af2b8);}})[_0xebcc('0x30')](function(){_0x2b715f();})[_0xebcc('0x26')](function(_0x3facef){_0x2b715f(_0x3facef);});},'afterUpdate':function(_0x52766f,_0x190f93,_0x2946e9){return BPromise[_0xebcc('0x31')]()[_0xebcc('0x30')](function(){if(_0x52766f[_0xebcc('0x2d')](_0xebcc('0xe'))||_0x52766f[_0xebcc('0x2d')](_0xebcc('0x4'))){return _0x345f80[_0xebcc('0x2f')][_0xebcc('0x32')]({'where':{'UserId':_0x52766f['id'],'type':_0xebcc('0x6'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x52766f[_0xebcc('0xe')]){return getChanSpyPromise(_0x345f80,_0x52766f)['then'](function(_0x2d55d4){if(_0x2d55d4&&_0x2d55d4['length']){return _0x345f80[_0xebcc('0x2f')][_0xebcc('0x33')](_0x2d55d4);}});}});}})[_0xebcc('0x30')](function(){if(_0x52766f[_0xebcc('0x2d')](_0xebcc('0x1d'))||_0x52766f['changed']('context')){return _0x345f80[_0xebcc('0x2f')][_0xebcc('0x32')]({'where':{'UserId':_0x52766f['id'],'type':_0xebcc('0x6'),'ChanSpyId':null}})[_0xebcc('0x30')](function(){var _0x5a2b9b=getUserApplications(_0x52766f,_0x52766f['internal']);if(_0x52766f['internal']!=_0x52766f[_0xebcc('0x16')]){_0x5a2b9b=_0x5a2b9b['concat'](getUserApplications(_0x52766f,_0x52766f[_0xebcc('0x16')]));}return _0x345f80['VoiceExtension'][_0xebcc('0x33')](_0x5a2b9b);});}})['then'](function(){_0x2946e9();})[_0xebcc('0x26')](function(_0xbd51e6){_0x2946e9(_0xbd51e6);});},'afterDestroy':function(_0x39851c,_0x44168e){return _0x345f80[_0xebcc('0x2f')][_0xebcc('0x32')]({'where':{'UserId':_0x39851c['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1789c0,_0x1a0a3a){if(!_0x1a0a3a){return this[_0xebcc('0x14')]===this['encryptPassword'](_0x1789c0);}var _0x59a230=this;this[_0xebcc('0x34')](_0x1789c0,function(_0x5841c2,_0x3f34c4){if(_0x5841c2){_0x1a0a3a(_0x5841c2);}if(_0x59a230[_0xebcc('0x14')]===_0x3f34c4){_0x1a0a3a(null,!![]);}else{_0x1a0a3a(null,![]);}});},'makeSalt':function(_0xec4202,_0x17eea8){var _0x22434d=0x10;if(typeof arguments[0x0]==='function'){_0x17eea8=arguments[0x0];_0xec4202=_0x22434d;}else if(typeof arguments[0x1]===_0xebcc('0x35')){_0x17eea8=arguments[0x1];}else{throw new Error(_0xebcc('0x36'));}if(!_0xec4202){_0xec4202=_0x22434d;}return crypto[_0xebcc('0x37')](_0xec4202,function(_0x5a4fa8,_0x9f91ba){if(_0x5a4fa8){_0x17eea8(_0x5a4fa8);}return _0x17eea8(null,_0x9f91ba['toString'](_0xebcc('0x38')));});},'encryptPassword':function(_0x2340a7,_0x30796b){if(!_0x2340a7||!this[_0xebcc('0x39')]){return _0x30796b?_0x30796b(null):null;}var _0x14405e=0x2710;var _0x9a85da=0x40;var _0x11a5bf=new Buffer(this['salt'],_0xebcc('0x38'));if(!_0x30796b){return crypto[_0xebcc('0x3a')](_0x2340a7,_0x11a5bf,_0x14405e,_0x9a85da,'sha1')[_0xebcc('0x3b')](_0xebcc('0x38'));}return crypto['pbkdf2'](_0x2340a7,_0x11a5bf,_0x14405e,_0x9a85da,_0xebcc('0x3c'),function(_0x58971a,_0x180a6d){if(_0x58971a){_0x30796b(_0x58971a);}return _0x30796b(null,_0x180a6d[_0xebcc('0x3b')](_0xebcc('0x38')));});},'updatePassword':function(_0x11f273){if(!this[_0xebcc('0x14')]){return _0x11f273(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xebcc('0x3d')](this['provider'])===-0x1){_0x11f273(new Error(_0xebcc('0x3e')));}var _0x3898e6=this;this[_0xebcc('0x3f')](function(_0xccac8a,_0x39f658){if(_0xccac8a){return _0x11f273(_0xccac8a);}_0x3898e6[_0xebcc('0x39')]=_0x39f658;_0x3898e6[_0xebcc('0x34')](_0x3898e6[_0xebcc('0x14')],function(_0x130f1a,_0x463cd1){if(_0x130f1a){_0x11f273(_0x130f1a);}_0x3898e6[_0xebcc('0x14')]=_0x463cd1;_0x11f273(null);});});},'updateMd5Password':function(){this[_0xebcc('0x40')]=md5(this['name']+_0xebcc('0x41')+this[_0xebcc('0x14')]);return this[_0xebcc('0x40')];}}});};