Built motion from commit (unavailable).|2.3.4
[motion2.git] / server / components / auth / service.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 _0x8fcd=['randomBytes','toString','hex','regenerateApiKey','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','lodash','jsonwebtoken','basic-auth','crypto','ipaddr.js','secrets','session','role','internal','userpic','permissions','voicePause','chatPause','smsPause','showWebBar','phoneBarRemoteControlPort','userProfileId','isChatInteractionAuthorized','user','ChatInteraction','params','disposition','then','status','unmanaged','Unmanaged.','catch','use','headers','authorization','Basic','User','find','pass','json','Wrong\x20credentials.','startsWith','Bearer','Unknown\x20authorization\x20format','apikey','verify','query','getUuid','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','log','Unrecognized\x20API\x20access\x20key','User\x20not\x20found.','isAuthenticated','../../config/license/util','getLicense','Forbidden','canUpdate','sign','hasRole','Required\x20role\x20needs\x20to\x20be\x20set','indexOf','userRoles','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','motion.user','pick','/dashboards/general','retrieveApiKey','isNil','apiKeyIat','generateApiKey'];(function(_0x5a16f7,_0x15e545){var _0x5cb364=function(_0xfa7198){while(--_0xfa7198){_0x5a16f7['push'](_0x5a16f7['shift']());}};_0x5cb364(++_0x15e545);}(_0x8fcd,0xa1));var _0xd8fc=function(_0x1a7809,_0x392d2b){_0x1a7809=_0x1a7809-0x0;var _0x10c780=_0x8fcd[_0x1a7809];return _0x10c780;};'use strict';var db=require(_0xd8fc('0x0'))['db'];var config=require(_0xd8fc('0x1'));var hardwareConf=require(_0xd8fc('0x2'));var _=require(_0xd8fc('0x3'));var jwt=require(_0xd8fc('0x4'));var expressJwt=require('express-jwt');var compose=require('composable-middleware');var basicAuth=require(_0xd8fc('0x5'));var crypto=require(_0xd8fc('0x6'));var ipaddr=require(_0xd8fc('0x7'));var validateJwt=expressJwt({'secret':config[_0xd8fc('0x8')][_0xd8fc('0x9')]});var userAttributes=['id',_0xd8fc('0xa'),'fullname','name',_0xd8fc('0xb'),'email',_0xd8fc('0xc'),_0xd8fc('0xd'),_0xd8fc('0xe'),_0xd8fc('0xf'),'mailPause','faxPause',_0xd8fc('0x10'),'openchannelPause','pauseType',_0xd8fc('0x11'),_0xd8fc('0x12'),'phoneBarRemoteControl','interface',_0xd8fc('0x13')];exports[_0xd8fc('0x14')]=function(){return isAuthenticated(!![])['use'](function(_0x3c41e9,_0x955550,_0x2b9d7e){if(_0x3c41e9[_0xd8fc('0x15')]){_0x2b9d7e();}else{return db[_0xd8fc('0x16')]['findOne']({'where':{'id':_0x3c41e9[_0xd8fc('0x17')]['id']},'attributes':['id','closed',_0xd8fc('0x18')],'raw':!![]})[_0xd8fc('0x19')](function(_0x3216bf){if(_0x3216bf&&_0x3216bf['closed']){return _0x955550[_0xd8fc('0x1a')](_0x3216bf[_0xd8fc('0x18')]==='unmanaged'?0x195:0x193)['json']({'message':_0x3216bf[_0xd8fc('0x18')]===_0xd8fc('0x1b')?_0xd8fc('0x1c'):'Forbidden.'});}else{_0x2b9d7e();}})[_0xd8fc('0x1d')](function(_0x1c744d){_0x2b9d7e(_0x1c744d);});}});};function isAuthenticated(_0x461f85){return compose()[_0xd8fc('0x1e')](function(_0x39fea5,_0x373654,_0x13a13d){if(_0x39fea5[_0xd8fc('0x1f')][_0xd8fc('0x20')]){if(_['startsWith'](_0x39fea5[_0xd8fc('0x1f')][_0xd8fc('0x20')],_0xd8fc('0x21'))){var _0x3f9d57=basicAuth(_0x39fea5);db[_0xd8fc('0x22')][_0xd8fc('0x23')]({'where':{'name':_0x3f9d57['name']}})[_0xd8fc('0x19')](function(_0x3f0196){if(!_0x3f0196||!_0x3f0196['authenticate'](_0x3f9d57[_0xd8fc('0x24')])){return _0x373654['status'](0x191)[_0xd8fc('0x25')]({'message':_0xd8fc('0x26')});}_0x39fea5['user']={'id':_0x3f0196['id']};_0x13a13d();})['catch'](function(_0x47ccff){_0x13a13d(_0x47ccff);});}else if(_[_0xd8fc('0x27')](_0x39fea5[_0xd8fc('0x1f')][_0xd8fc('0x20')],_0xd8fc('0x28'))){validateJwt(_0x39fea5,_0x373654,_0x13a13d);}else{if(_0x461f85){_0x13a13d();}else{return _0x373654['status'](0x193)[_0xd8fc('0x25')]({'message':_0xd8fc('0x29')});}}}else if(_0x39fea5['query'][_0xd8fc('0x2a')]){try{var _0x5e50c4=jwt[_0xd8fc('0x2b')](_0x39fea5[_0xd8fc('0x2c')][_0xd8fc('0x2a')],config[_0xd8fc('0x8')]['session'],{'audience':hardwareConf[_0xd8fc('0x2d')](),'issuer':hardwareConf['getUuid']()});db[_0xd8fc('0x22')][_0xd8fc('0x23')]({'where':{'id':_0x5e50c4['sub']}})['then'](function(_0x56a980){if(!_0x56a980||!_[_0xd8fc('0x2e')](_0x56a980[_0xd8fc('0x2f')],_0x5e50c4[_0xd8fc('0x30')])){return _0x373654[_0xd8fc('0x1a')](0x193)[_0xd8fc('0x25')]({'message':_0xd8fc('0x31')});}_0x39fea5[_0xd8fc('0x15')]={'id':_0x56a980['id']};_0x13a13d();})[_0xd8fc('0x1d')](function(_0x446609){_0x13a13d(_0x446609);});}catch(_0x5e2e11){console[_0xd8fc('0x32')](_0x5e2e11);return _0x373654[_0xd8fc('0x1a')](0x193)['json']({'message':_0xd8fc('0x33')});}}else if(_0x461f85){_0x13a13d();}else{return _0x373654[_0xd8fc('0x1a')](0x193)[_0xd8fc('0x25')]({'message':'Unknown\x20authorization\x20format'});}})[_0xd8fc('0x1e')](function(_0x180417,_0x175907,_0x59e131){if(_0x180417['user']){db['User'][_0xd8fc('0x23')]({'where':{'id':_0x180417[_0xd8fc('0x15')]['id']},'attributes':userAttributes})[_0xd8fc('0x19')](function(_0x1a40c2){if(!_0x1a40c2){return _0x175907[_0xd8fc('0x1a')](0x194)[_0xd8fc('0x25')]({'message':_0xd8fc('0x34')});}_0x180417[_0xd8fc('0x15')]=_0x1a40c2;_0x59e131();})[_0xd8fc('0x1d')](function(_0x4165d7){_0x59e131(_0x4165d7);});}else if(_0x461f85){_0x59e131();}else{return _0x175907['status'](0x194)[_0xd8fc('0x25')]({'message':'User\x20object\x20not\x20found.'});}});}exports[_0xd8fc('0x35')]=isAuthenticated;function canUpdate(){return compose()['use'](function(_0x500d5a,_0x4647fc,_0x429281){return require(_0xd8fc('0x36'))[_0xd8fc('0x37')]()[_0xd8fc('0x19')](function(_0x3aa3c7){if(_0x3aa3c7['update']){_0x429281();}else{return _0x4647fc[_0xd8fc('0x1a')](0x193)[_0xd8fc('0x25')]({'message':_0xd8fc('0x38')});}})['catch'](function(_0x1fae3e){_0x429281(_0x1fae3e);});});}exports[_0xd8fc('0x39')]=canUpdate;function signToken(_0x563a41,_0x4d39f6){return jwt[_0xd8fc('0x3a')]({'id':_0x563a41,'role':_0x4d39f6},config['secrets'][_0xd8fc('0x9')],{'expiresIn':0x15180});}exports['signToken']=signToken;exports[_0xd8fc('0x3b')]=function(_0x2cd726){if(!_0x2cd726){throw new Error(_0xd8fc('0x3c'));}return compose()['use'](isAuthenticated())[_0xd8fc('0x1e')](function meetsRequirements(_0x48622e,_0xbb9ee5,_0x16f411){if(config['userRoles'][_0xd8fc('0x3d')](_0x48622e[_0xd8fc('0x15')][_0xd8fc('0xa')])>=config[_0xd8fc('0x3e')]['indexOf'](_0x2cd726)){return _0x16f411();}else{return _0xbb9ee5[_0xd8fc('0x1a')](0x193)[_0xd8fc('0x25')]({'message':_0xd8fc('0x38')});}});};exports['setTokenCookie']=function(_0x5a153a,_0x4d8a1f){if(!_0x5a153a[_0xd8fc('0x15')]){return _0x4d8a1f[_0xd8fc('0x1a')](0x194)[_0xd8fc('0x25')]({'message':_0xd8fc('0x3f')});}var _0x5a79eb=signToken(_0x5a153a[_0xd8fc('0x15')]['id'],_0x5a153a[_0xd8fc('0x15')][_0xd8fc('0xa')]);_0x4d8a1f[_0xd8fc('0x40')](_0xd8fc('0x41'),_0x5a79eb);_0x4d8a1f[_0xd8fc('0x40')](_0xd8fc('0x42'),JSON['stringify'](_[_0xd8fc('0x43')](_0x5a153a[_0xd8fc('0x15')],userAttributes)));_0x4d8a1f['redirect'](_0xd8fc('0x44'));};exports[_0xd8fc('0x45')]=function(_0x2bdf1c){if(_[_0xd8fc('0x46')](_0x2bdf1c[_0xd8fc('0x2f')])||_[_0xd8fc('0x46')](_0x2bdf1c[_0xd8fc('0x47')]))return null;else return createJwt(_0x2bdf1c);};exports[_0xd8fc('0x48')]=function(_0xbecf42){_0xbecf42[_0xd8fc('0x2f')]=crypto[_0xd8fc('0x49')](0x10)[_0xd8fc('0x4a')](_0xd8fc('0x4b'));_0xbecf42[_0xd8fc('0x47')]=Math['floor'](Date['now']()/0x3e8)['toString']();return createJwt(_0xbecf42);};exports[_0xd8fc('0x4c')]=function(_0x1951cf,_0x6b462){if(_0x1951cf[_0xd8fc('0x2c')]['apikey']){jwt[_0xd8fc('0x2b')](_0x1951cf[_0xd8fc('0x2c')][_0xd8fc('0x2a')],config[_0xd8fc('0x8')][_0xd8fc('0x9')],{'nonce':_0x6b462[_0xd8fc('0x2f')],'iat':_0x6b462[_0xd8fc('0x47')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()});return generateApiKey(_0x6b462);}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};function createJwt(_0x1522d5){return jwt[_0xd8fc('0x3a')]({'iat':_0x1522d5[_0xd8fc('0x47')],'nonce':_0x1522d5[_0xd8fc('0x2f')]},config[_0xd8fc('0x8')][_0xd8fc('0x9')],{'algorithm':_0xd8fc('0x4d'),'subject':_0x1522d5['id'][_0xd8fc('0x4a')](),'issuer':hardwareConf[_0xd8fc('0x2d')](),'audience':hardwareConf['getUuid']()});}