Built motion from commit (unavailable).|2.2.3
[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 _0xe45d=['name','internal','voicePause','chatPause','faxPause','smsPause','pauseType','showWebBar','interface','userProfileId','isChatInteractionAuthorized','use','ChatInteraction','findOne','params','closed','disposition','json','unmanaged','Unmanaged.','Forbidden.','headers','startsWith','authorization','Basic','User','find','then','authenticate','status','user','catch','Bearer','Unknown\x20authorization\x20format.','User\x20not\x20found.','User\x20object\x20not\x20found.','isAuthenticated','getLicense','update','Forbidden','canUpdate','sign','secrets','session','signToken','hasRole','Required\x20role\x20needs\x20to\x20be\x20set','indexOf','userRoles','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','motion.user','stringify','pick','/dashboards/general','../../mysqldb','jsonwebtoken','express-jwt','composable-middleware','basic-auth','ipaddr.js','role','fullname'];(function(_0x6f63de,_0x132d5f){var _0x100a9f=function(_0x38e58c){while(--_0x38e58c){_0x6f63de['push'](_0x6f63de['shift']());}};_0x100a9f(++_0x132d5f);}(_0xe45d,0xfc));var _0xde45=function(_0x341fd6,_0x9d0e71){_0x341fd6=_0x341fd6-0x0;var _0x3755d3=_0xe45d[_0x341fd6];return _0x3755d3;};'use strict';var db=require(_0xde45('0x0'))['db'];var config=require('../../config/environment');var _=require('lodash');var jwt=require(_0xde45('0x1'));var expressJwt=require(_0xde45('0x2'));var compose=require(_0xde45('0x3'));var basicAuth=require(_0xde45('0x4'));var ipaddr=require(_0xde45('0x5'));var validateJwt=expressJwt({'secret':config['secrets']['session']});var userAttributes=['id',_0xde45('0x6'),_0xde45('0x7'),_0xde45('0x8'),_0xde45('0x9'),'email','userpic','permissions',_0xde45('0xa'),_0xde45('0xb'),'mailPause',_0xde45('0xc'),_0xde45('0xd'),'openchannelPause',_0xde45('0xe'),_0xde45('0xf'),'phoneBarRemoteControlPort','phoneBarRemoteControl',_0xde45('0x10'),_0xde45('0x11')];exports[_0xde45('0x12')]=function(){return isAuthenticated(!![])[_0xde45('0x13')](function(_0x519ffc,_0xc3f2ec,_0x181d36){if(_0x519ffc['user']){_0x181d36();}else{return db[_0xde45('0x14')][_0xde45('0x15')]({'where':{'id':_0x519ffc[_0xde45('0x16')]['id']},'attributes':['id',_0xde45('0x17'),_0xde45('0x18')],'raw':!![]})['then'](function(_0x3e6503){if(_0x3e6503&&_0x3e6503[_0xde45('0x17')]){return _0xc3f2ec['status'](_0x3e6503[_0xde45('0x18')]==='unmanaged'?0x195:0x193)[_0xde45('0x19')]({'message':_0x3e6503[_0xde45('0x18')]===_0xde45('0x1a')?_0xde45('0x1b'):_0xde45('0x1c')});}else{_0x181d36();}})['catch'](function(_0x191dc4){_0x181d36(_0x191dc4);});}});};function isAuthenticated(_0x30fb1b){return compose()['use'](function(_0x629308,_0x320d68,_0x6e999b){if(_0x629308[_0xde45('0x1d')]['authorization']){if(_[_0xde45('0x1e')](_0x629308[_0xde45('0x1d')][_0xde45('0x1f')],_0xde45('0x20'))){var _0x320074=basicAuth(_0x629308);db[_0xde45('0x21')][_0xde45('0x22')]({'where':{'name':_0x320074[_0xde45('0x8')]}})[_0xde45('0x23')](function(_0x4f9457){if(!_0x4f9457||!_0x4f9457[_0xde45('0x24')](_0x320074['pass'])){return _0x320d68[_0xde45('0x25')](0x191)[_0xde45('0x19')]({'message':'Wrong\x20credentials.'});}_0x629308[_0xde45('0x26')]={'id':_0x4f9457['id']};_0x6e999b();})[_0xde45('0x27')](function(_0x5307b3){_0x6e999b(_0x5307b3);});}else if(_['startsWith'](_0x629308['headers'][_0xde45('0x1f')],_0xde45('0x28'))){validateJwt(_0x629308,_0x320d68,_0x6e999b);}}else{if(_0x30fb1b){_0x6e999b();}else{return _0x320d68[_0xde45('0x25')](0x191)[_0xde45('0x19')]({'message':_0xde45('0x29')});}}})['use'](function(_0x68b0aa,_0x3675b7,_0x4f740d){if(_0x68b0aa[_0xde45('0x26')]){db['User'][_0xde45('0x22')]({'where':{'id':_0x68b0aa['user']['id']},'attributes':userAttributes})[_0xde45('0x23')](function(_0xdc300e){if(!_0xdc300e){return _0x3675b7[_0xde45('0x25')](0x194)[_0xde45('0x19')]({'message':_0xde45('0x2a')});}_0x68b0aa[_0xde45('0x26')]=_0xdc300e;_0x4f740d();})[_0xde45('0x27')](function(_0x5542ff){_0x4f740d(_0x5542ff);});}else if(_0x30fb1b){_0x4f740d();}else{return _0x3675b7['status'](0x194)['json']({'message':_0xde45('0x2b')});}});}exports[_0xde45('0x2c')]=isAuthenticated;function canUpdate(){return compose()[_0xde45('0x13')](function(_0x466bc5,_0x3b3534,_0x3b58b6){return require('../../config/license/util')[_0xde45('0x2d')]()[_0xde45('0x23')](function(_0x31ec3a){if(_0x31ec3a[_0xde45('0x2e')]){_0x3b58b6();}else{return _0x3b3534[_0xde45('0x25')](0x193)[_0xde45('0x19')]({'message':_0xde45('0x2f')});}})[_0xde45('0x27')](function(_0xbbb6b){_0x3b58b6(_0xbbb6b);});});}exports[_0xde45('0x30')]=canUpdate;function signToken(_0x3d5189,_0x565005){return jwt[_0xde45('0x31')]({'id':_0x3d5189,'role':_0x565005},config[_0xde45('0x32')][_0xde45('0x33')],{'expiresIn':0x15180});}exports[_0xde45('0x34')]=signToken;exports[_0xde45('0x35')]=function(_0x44bcb1){if(!_0x44bcb1){throw new Error(_0xde45('0x36'));}return compose()[_0xde45('0x13')](isAuthenticated())['use'](function meetsRequirements(_0x3d5a2b,_0x59616a,_0x74422c){if(config['userRoles'][_0xde45('0x37')](_0x3d5a2b[_0xde45('0x26')][_0xde45('0x6')])>=config[_0xde45('0x38')][_0xde45('0x37')](_0x44bcb1)){return _0x74422c();}else{return _0x59616a[_0xde45('0x25')](0x193)[_0xde45('0x19')]({'message':'Forbidden'});}});};exports[_0xde45('0x39')]=function(_0x1c2df0,_0x4fd5bb){if(!_0x1c2df0[_0xde45('0x26')]){return _0x4fd5bb[_0xde45('0x25')](0x194)[_0xde45('0x19')]({'message':_0xde45('0x3a')});}var _0x438be7=signToken(_0x1c2df0[_0xde45('0x26')]['id'],_0x1c2df0[_0xde45('0x26')][_0xde45('0x6')]);_0x4fd5bb[_0xde45('0x3b')](_0xde45('0x3c'),_0x438be7);_0x4fd5bb['cookie'](_0xde45('0x3d'),JSON[_0xde45('0x3e')](_[_0xde45('0x3f')](_0x1c2df0[_0xde45('0x26')],userAttributes)));_0x4fd5bb['redirect'](_0xde45('0x40'));};