Built motion from commit df3e9871f6bcc3432fec345b2f4facbd4dba8b5c. Version 3.0.0...
[motion-next.git] / server / components / auth / service.js
index 9419e49..bbf1acc 100644 (file)
@@ -1 +1 @@
-const a823_0x5643=['phoneBarAutoAnswer','promisify','crudPermissions','Unmanaged.','role','permissions','name','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','passwordResetAt','jsonwebtoken','isNil','join','settingsEnabled','verify','hotdesk','getUuid','email','authenticate','Forbidden','voicePause','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','phoneBarEnableDtmfTone','isEqual','Unknown\x20authorization\x20format','headers','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','User','query','nonce','sub','session','then','toLowerCase','json','splice','toString','motion.token','phoneBarExpires','apiKeyIat','isMiddleware','closed','unmanaged','redirect','exports','chatPause','phoneBarPrefixRequired','unshift','faxPause','secrets','lodash','apiKeyNonce','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','phoneBarEnableRecording','smsPause','userProfileId','user','update','User\x20object\x20not\x20found.','../../config/license/util','catch','disposition','floor','cookie','Bearer','sign','HS256','encryptString','util','decryptString','express-jwt','payload','status','send','phoneBarAutoAnswerDelay','phoneBarEnableSettings','lastLoginAt','getLicense','../encryptor','authorization','basic-auth','startsWith','phoneBarRemoteControlPort','Wrong\x20credentials.','length','sequelize','params','composable-middleware','pauseType','findOne','showWebBar','secret','fullname','use','/dashboards/general','../../config/environment','internal','now','Basic','alias','apikey'];(function(_0x5da454,_0x56439c){const _0x34e7a5=function(_0x4a51ff){while(--_0x4a51ff){_0x5da454['push'](_0x5da454['shift']());}};_0x34e7a5(++_0x56439c);}(a823_0x5643,0xa7));const a823_0x34e7=function(_0x5da454,_0x56439c){_0x5da454=_0x5da454-0x0;let _0x34e7a5=a823_0x5643[_0x5da454];return _0x34e7a5;};const _0x1b097a=a823_0x34e7;'use strict';const db=require('../../mysqldb')['db'],{ValidationError}=require(_0x1b097a('0x11')),config=require(_0x1b097a('0x1b')),hardwareConf=require('../../config/license/hardware'),licenseUtil=require(_0x1b097a('0x5b')),encryptor=require(_0x1b097a('0xa')),util=require(_0x1b097a('0x0')),_=require(_0x1b097a('0x52')),jwt=require(_0x1b097a('0x2a')),expressJwt=require(_0x1b097a('0x2')),compose=require(_0x1b097a('0x13')),basicAuth=require(_0x1b097a('0xc')),crypto=require('crypto'),validateJwt=expressJwt({'secret':config[_0x1b097a('0x51')]['session'],'algorithms':[_0x1b097a('0x62')]}),userAttributes=['id',_0x1b097a('0x25'),_0x1b097a('0x18'),_0x1b097a('0x27'),_0x1b097a('0x1c'),_0x1b097a('0x31'),'userpic',_0x1b097a('0x26'),'md5secret',_0x1b097a('0x34'),_0x1b097a('0x4d'),'mailPause',_0x1b097a('0x50'),_0x1b097a('0x56'),'openchannelPause',_0x1b097a('0x14'),_0x1b097a('0x16'),_0x1b097a('0x8'),'lastPauseAt',_0x1b097a('0x23'),'allowmessenger',_0x1b097a('0x29'),_0x1b097a('0x1f'),_0x1b097a('0x21'),_0x1b097a('0x6'),'phoneBarDnd',_0x1b097a('0x55'),_0x1b097a('0x36'),_0x1b097a('0x7'),_0x1b097a('0x46'),_0x1b097a('0x4e'),'phoneBarRemoteControl',_0x1b097a('0xe'),_0x1b097a('0x2f'),'interface',_0x1b097a('0x57'),_0x1b097a('0x2d')];function isChatInteractionAuthorized(){return this['isAuthenticated'](!![])['use'](function(_0x4a51ff,_0x2c6a18,_0x1890ab){const _0x504584=a823_0x34e7;if(_0x4a51ff['user'])_0x1890ab();else return db['ChatInteraction'][_0x504584('0x15')]({'where':{'id':_0x4a51ff[_0x504584('0x12')]['id']},'attributes':['id',_0x504584('0x49'),_0x504584('0x5d')],'raw':!![]})[_0x504584('0x40')](function(_0x47b47e){const _0x4c62e4=_0x504584;if(_0x47b47e&&_0x47b47e[_0x4c62e4('0x49')])return _0x2c6a18[_0x4c62e4('0x4')](_0x47b47e['disposition']===_0x4c62e4('0x4a')?0x195:0x193)[_0x4c62e4('0x42')]({'message':_0x47b47e[_0x4c62e4('0x5d')]===_0x4c62e4('0x4a')?_0x4c62e4('0x24'):'Forbidden.'});else _0x1890ab();})[_0x504584('0x5c')](function(_0x140fc8){_0x1890ab(_0x140fc8);});});}function isAuthenticated(_0x52216b){const _0x1d53ee=_0x1b097a;return compose()[_0x1d53ee('0x19')](function(_0x3b9db5,_0x2bb759,_0x4f69ee){const _0xf80d27=_0x1d53ee;if(_0x3b9db5[_0xf80d27('0x39')][_0xf80d27('0xb')]){if(_[_0xf80d27('0xd')](_0x3b9db5[_0xf80d27('0x39')]['authorization'],_0xf80d27('0x1e'))){const _0xf47774=basicAuth(_0x3b9db5);db[_0xf80d27('0x3b')]['findOne']({'where':{'name':_0xf47774[_0xf80d27('0x27')]}})[_0xf80d27('0x40')](function(_0x148c81){const _0x556c1e=_0xf80d27;if(!_0x148c81||!_0x148c81[_0x556c1e('0x32')](_0xf47774['pass']))return _0x2bb759[_0x556c1e('0x4')](0x191)['json']({'message':_0x556c1e('0xf')});_0x3b9db5[_0x556c1e('0x58')]={'id':_0x148c81['id']},_0x4f69ee();})[_0xf80d27('0x5c')](function(_0x4f28de){_0x4f69ee(_0x4f28de);});}else{if(_['startsWith'](_0x3b9db5[_0xf80d27('0x39')]['authorization'],_0xf80d27('0x60')))validateJwt(_0x3b9db5,_0x2bb759,_0x4f69ee);else{if(_0x52216b)_0x4f69ee();else return _0x2bb759[_0xf80d27('0x4')](0x193)[_0xf80d27('0x42')]({'message':'Unknown\x20authorization\x20format'});}}}else{if(_0x3b9db5[_0xf80d27('0x3c')][_0xf80d27('0x20')])try{const _0x1a95e6={'audience':hardwareConf[_0xf80d27('0x30')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x3b9db5[_0xf80d27('0x3c')][_0xf80d27('0x20')],_0x1a95e6)[_0xf80d27('0x40')](function(_0x6690c0){const _0x23ea05=_0xf80d27;return db['User'][_0x23ea05('0x15')]({'where':{'id':_0x6690c0[_0x23ea05('0x3e')]}})[_0x23ea05('0x40')](function(_0x24a4fa){const _0x411d78=_0x23ea05;if(!_0x24a4fa||!_[_0x411d78('0x37')](_0x24a4fa[_0x411d78('0x53')],_0x6690c0[_0x411d78('0x3d')]))return _0x2bb759[_0x411d78('0x4')](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});_0x3b9db5[_0x411d78('0x58')]={'id':_0x24a4fa['id']},_0x4f69ee();});})[_0xf80d27('0x5c')](function(){const _0xe50d17=_0xf80d27;return _0x2bb759[_0xe50d17('0x4')](0x191)[_0xe50d17('0x42')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x5e6152){_0x4f69ee(_0x5e6152);}else{if(_0x52216b)_0x4f69ee();else return _0x2bb759['status'](0x193)[_0xf80d27('0x42')]({'message':_0xf80d27('0x38')});}}})['use'](function(_0x584860,_0x2833e6,_0x4387e9){const _0x1b6adb=_0x1d53ee;if(_0x584860[_0x1b6adb('0x58')])db[_0x1b6adb('0x3b')][_0x1b6adb('0x15')]({'where':{'id':_0x584860['user']['id']},'attributes':userAttributes})[_0x1b6adb('0x40')](function(_0xc5f087){const _0x42d46d=_0x1b6adb;if(!_0xc5f087)return _0x2833e6[_0x42d46d('0x4')](0x194)[_0x42d46d('0x42')]({'message':'User\x20not\x20found.'});_0x584860['user']=_0xc5f087,_0x4387e9();})[_0x1b6adb('0x5c')](function(_0x2e8246){_0x4387e9(_0x2e8246);});else{if(_0x52216b)_0x4387e9();else return _0x2833e6['status'](0x194)[_0x1b6adb('0x42')]({'message':_0x1b6adb('0x5a')});}});}function canUpdate(){const _0x1039d0=_0x1b097a;return compose()[_0x1039d0('0x19')](function(_0x328486,_0x3f0f22,_0x2c84a0){const _0x36244e=_0x1039d0;return licenseUtil[_0x36244e('0x9')]()['then'](function(_0x3498b0){const _0x1cf72e=_0x36244e;if(_0x3498b0[_0x1cf72e('0x59')])_0x2c84a0();else return _0x3f0f22[_0x1cf72e('0x4')](0x193)[_0x1cf72e('0x42')]({'message':_0x1cf72e('0x33')});})[_0x36244e('0x5c')](function(_0x1a911e){_0x2c84a0(_0x1a911e);});});}function isMiddleware(_0x1e946d,_0x595b8a,_0xbe8333){const _0x4bc0dd=_0x1b097a;return _0x1e946d[_0x4bc0dd('0x48')]=!![],_0xbe8333();}function signToken(_0x3a73ae){return signJwt(_0x3a73ae);}function setTokenCookie(_0x392547,_0x4bf00f){const _0x23d32a=_0x1b097a;if(!_0x392547[_0x23d32a('0x58')])return _0x4bf00f[_0x23d32a('0x4')](0x194)['json']({'message':_0x23d32a('0x28')});const _0x3cac82={'payload':{'id':_0x392547['user']['id'],'role':_0x392547[_0x23d32a('0x58')][_0x23d32a('0x25')]},'options':{'expiresIn':0x15180}};return signJwt(_0x3cac82)[_0x23d32a('0x40')](function(_0x25bfff){const _0xc4028f=_0x23d32a;_0x4bf00f[_0xc4028f('0x5f')](_0xc4028f('0x45'),_0x25bfff),_0x4bf00f[_0xc4028f('0x4b')](_0xc4028f('0x1a'));})[_0x23d32a('0x5c')](function(_0x593cdc){const _0x528656=_0x23d32a;return _0x4bf00f[_0x528656('0x4')](0x1f4)[_0x528656('0x5')](_0x593cdc);});}function retrieveApiKey(_0x157512){const _0x49a05a=_0x1b097a;return _[_0x49a05a('0x2b')](_0x157512[_0x49a05a('0x53')])||_['isNil'](_0x157512['apiKeyIat'])?null:createJwt(_0x157512);}function generateApiKey(_0x4e9d4a){const _0x134a6f=_0x1b097a;return _0x4e9d4a[_0x134a6f('0x53')]=generateNonce(),_0x4e9d4a[_0x134a6f('0x47')]=generateIssuedAt(),createJwt(_0x4e9d4a);}function regenerateApiKey(_0x3314d5,_0x5c73a3){const _0x4ad804=_0x1b097a,_0x85aeb4=_0x3314d5['query']['apikey'];if(_0x85aeb4){const _0x4777ca={'nonce':_0x5c73a3['apiKeyNonce'],'iat':_0x5c73a3[_0x4ad804('0x47')],'audience':hardwareConf[_0x4ad804('0x30')](),'issuer':hardwareConf[_0x4ad804('0x30')]()};return verifyJwt(_0x85aeb4,_0x4777ca)[_0x4ad804('0x40')](function(){return generateApiKey(_0x5c73a3);});}else throw{'message':_0x4ad804('0x3a')};}function validatePasswordPattern(_0x205b28){const _0x603e9=_0x1b097a,_0x5a99d8=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#$%^&*~\-_=+[{\]}])(?=.{8,})/);if(!_0x5a99d8['test'](_0x205b28))throw new ValidationError(_0x603e9('0x35'));return;}function validatePasswordHistory(_0x10ad5d,_0x271c7f,_0x286459){const _0x33747b=_0x1b097a,_0xe0f222=encryptor[_0x33747b('0x1')](_0x271c7f)['split'](',');for(let _0x27a4e9=0x0;_0x27a4e9<_0x286459;_0x27a4e9++){if(!_0xe0f222[_0x27a4e9])break;if(_0x10ad5d[_0x33747b('0x41')]()===_0xe0f222[_0x27a4e9]['toLowerCase']()){let _0x58c506=util['format'](_0x33747b('0x54'),_0x286459);_0x286459===0x1&&(_0x58c506='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.');throw new ValidationError(_0x58c506);}}return;}function updatePasswordsHistory(_0x2f4d20,_0x5c8e06){const _0x3a586c=_0x1b097a,_0xbebfc9=_0x5c8e06?encryptor[_0x3a586c('0x1')](_0x5c8e06)['split'](','):[];return _0xbebfc9[_0x3a586c('0x10')]===0x5&&_0xbebfc9[_0x3a586c('0x43')](-0x1,0x1),_0xbebfc9[_0x3a586c('0x4f')](_0x2f4d20),encryptor[_0x3a586c('0x63')](_0xbebfc9[_0x3a586c('0x2c')](','));}function signJwt(_0x11ba2a){const _0x41da8e=_0x1b097a,_0x418d03=util[_0x41da8e('0x22')](jwt[_0x41da8e('0x61')],{'context':jwt}),_0x55510a=_0x11ba2a[_0x41da8e('0x17')]||config[_0x41da8e('0x51')][_0x41da8e('0x3f')];return new Promise(function(_0x81adc3,_0x189a72){const _0x3d4412=_0x41da8e;_0x418d03(_0x11ba2a[_0x3d4412('0x3')],_0x55510a,_0x11ba2a['options'])[_0x3d4412('0x40')](function(_0x3ca764){_0x81adc3(_0x3ca764);})[_0x3d4412('0x5c')](function(_0x4bdb77){_0x189a72(_0x4bdb77);});});}function verifyJwt(_0x55b876,_0x1b5fa3,_0x348a47){const _0x3b71a3=_0x1b097a,_0x3f209c=util['promisify'](jwt[_0x3b71a3('0x2e')],{'context':jwt}),_0x187fce=_0x348a47||config[_0x3b71a3('0x51')][_0x3b71a3('0x3f')];return new Promise(function(_0x23050c,_0x112d1c){const _0x2d6f63=_0x3b71a3;_0x3f209c(_0x55b876,_0x187fce,_0x1b5fa3)[_0x2d6f63('0x40')](function(_0x34270a){_0x23050c(_0x34270a);})[_0x2d6f63('0x5c')](function(_0x140667){_0x112d1c(_0x140667);});});}function generateNonce(){const _0x5da283=_0x1b097a;return crypto['randomBytes'](0x10)[_0x5da283('0x44')]('hex');}function generateIssuedAt(){const _0x1a7887=_0x1b097a;return Math[_0x1a7887('0x5e')](Date[_0x1a7887('0x1d')]()/0x3e8)[_0x1a7887('0x44')]();}function createJwt(_0x4104e9){const _0x5299dd=_0x1b097a,_0x326795={'payload':{'iat':_0x4104e9[_0x5299dd('0x47')],'nonce':_0x4104e9[_0x5299dd('0x53')]},'options':{'algorithm':'HS512','subject':_0x4104e9['id'][_0x5299dd('0x44')](),'issuer':hardwareConf[_0x5299dd('0x30')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x326795)[_0x5299dd('0x40')](function(_0x40432a){const _0x1a7d0b=_0x5299dd;return{'iat':_0x4104e9[_0x1a7d0b('0x47')],'nonce':_0x4104e9[_0x1a7d0b('0x53')],'token':_0x40432a};});}module[_0x1b097a('0x4c')]={'isChatInteractionAuthorized':isChatInteractionAuthorized,'isAuthenticated':isAuthenticated,'canUpdate':canUpdate,'isMiddleware':isMiddleware,'signToken':signToken,'setTokenCookie':setTokenCookie,'retrieveApiKey':retrieveApiKey,'generateApiKey':generateApiKey,'regenerateApiKey':regenerateApiKey,'validatePasswordPattern':validatePasswordPattern,'validatePasswordHistory':validatePasswordHistory,'updatePasswordsHistory':updatePasswordsHistory};
\ No newline at end of file
+const a823_0x1ee9=['alias','decryptString','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','sub','phoneBarEnableRecording','Basic','util','toString','basic-auth','phoneBarEnableDtmfTone','disposition','startsWith','user','lastLoginAt','internal','../../mysqldb','sequelize','phoneBarEnableSettings','hex','apiKeyNonce','userpic','test','Invalid\x20API\x20access\x20key','now','Unmanaged.','phoneBarRemoteControl','unshift','authenticate','apiKeyIat','allowmessenger','floor','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','showWebBar','phoneBarAutoAnswer','unmanaged','toLowerCase','use','role','Unknown\x20authorization\x20format','lodash','promisify','query','hotdesk','update','exports','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','userProfileId','cookie','pass','permissions','User\x20object\x20not\x20found.','composable-middleware','verify','faxPause','send','sign','fullname','../../config/license/util','catch','Forbidden','HS512','ChatInteraction','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Bearer','pauseType','crypto','closed','../../config/license/hardware','getUuid','authorization','User','headers','randomBytes','crudPermissions','json','lastPauseAt','openchannelPause','/dashboards/general','split','redirect','secrets','secret','express-jwt','then','phoneBarPrefixRequired','../encryptor','passwordResetAt','status','session','apikey','settingsEnabled','isAuthenticated','isEqual','params','phoneBarAutoAnswerDelay','email','length','findOne','splice','chatPause','isNil','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','voicePause','options','name','User\x20not\x20found.'];(function(_0x109559,_0x1ee920){const _0x447847=function(_0x52db30){while(--_0x52db30){_0x109559['push'](_0x109559['shift']());}};_0x447847(++_0x1ee920);}(a823_0x1ee9,0x1ee));const a823_0x4478=function(_0x109559,_0x1ee920){_0x109559=_0x109559-0x0;let _0x447847=a823_0x1ee9[_0x109559];return _0x447847;};const _0x45f2fe=a823_0x4478;'use strict';const db=require(_0x45f2fe('0x33'))['db'],{ValidationError}=require(_0x45f2fe('0x34')),config=require('../../config/environment'),hardwareConf=require(_0x45f2fe('0x67')),licenseUtil=require(_0x45f2fe('0x5d')),encryptor=require(_0x45f2fe('0xf')),util=require(_0x45f2fe('0x2a')),_=require(_0x45f2fe('0x4b')),jwt=require('jsonwebtoken'),expressJwt=require(_0x45f2fe('0xc')),compose=require(_0x45f2fe('0x57')),basicAuth=require(_0x45f2fe('0x2c')),crypto=require(_0x45f2fe('0x65')),validateJwt=expressJwt({'secret':config[_0x45f2fe('0xa')]['session'],'algorithms':['HS256']}),userAttributes=['id',_0x45f2fe('0x49'),_0x45f2fe('0x5c'),_0x45f2fe('0x22'),_0x45f2fe('0x32'),_0x45f2fe('0x19'),_0x45f2fe('0x38'),_0x45f2fe('0x55'),'md5secret',_0x45f2fe('0x20'),_0x45f2fe('0x1d'),'mailPause',_0x45f2fe('0x59'),'smsPause',_0x45f2fe('0x6'),_0x45f2fe('0x64'),_0x45f2fe('0x44'),_0x45f2fe('0x31'),_0x45f2fe('0x5'),_0x45f2fe('0x3'),_0x45f2fe('0x41'),_0x45f2fe('0x10'),_0x45f2fe('0x24'),_0x45f2fe('0x45'),_0x45f2fe('0x18'),'phoneBarDnd',_0x45f2fe('0x28'),_0x45f2fe('0x2d'),_0x45f2fe('0x35'),'phoneBarExpires',_0x45f2fe('0xe'),_0x45f2fe('0x3d'),'phoneBarRemoteControlPort',_0x45f2fe('0x4e'),'interface',_0x45f2fe('0x52'),_0x45f2fe('0x14')];function isChatInteractionAuthorized(){const _0x59e74c=_0x45f2fe;return this[_0x59e74c('0x15')](!![])[_0x59e74c('0x48')](function(_0x52db30,_0x40bbb8,_0x485f45){const _0x53724d=_0x59e74c;if(_0x52db30[_0x53724d('0x30')])_0x485f45();else return db[_0x53724d('0x61')][_0x53724d('0x1b')]({'where':{'id':_0x52db30[_0x53724d('0x17')]['id']},'attributes':['id',_0x53724d('0x66'),_0x53724d('0x2e')],'raw':!![]})[_0x53724d('0xd')](function(_0x3909e7){const _0x1122b5=_0x53724d;if(_0x3909e7&&_0x3909e7['closed'])return _0x40bbb8[_0x1122b5('0x11')](_0x3909e7['disposition']===_0x1122b5('0x46')?0x195:0x193)[_0x1122b5('0x4')]({'message':_0x3909e7[_0x1122b5('0x2e')]===_0x1122b5('0x46')?_0x1122b5('0x3c'):'Forbidden.'});else _0x485f45();})[_0x53724d('0x5e')](function(_0x5d41a1){_0x485f45(_0x5d41a1);});});}function isAuthenticated(_0x48b429){const _0x1484c8=_0x45f2fe;return compose()[_0x1484c8('0x48')](function(_0x2c69c5,_0x760b86,_0x5bdf15){const _0x24c346=_0x1484c8;if(_0x2c69c5[_0x24c346('0x1')]['authorization']){if(_[_0x24c346('0x2f')](_0x2c69c5[_0x24c346('0x1')]['authorization'],_0x24c346('0x29'))){const _0x259b44=basicAuth(_0x2c69c5);db[_0x24c346('0x0')][_0x24c346('0x1b')]({'where':{'name':_0x259b44[_0x24c346('0x22')]}})['then'](function(_0x549420){const _0x5766e6=_0x24c346;if(!_0x549420||!_0x549420[_0x5766e6('0x3f')](_0x259b44[_0x5766e6('0x54')]))return _0x760b86[_0x5766e6('0x11')](0x191)['json']({'message':'Wrong\x20credentials.'});_0x2c69c5['user']={'id':_0x549420['id']},_0x5bdf15();})[_0x24c346('0x5e')](function(_0x195d2b){_0x5bdf15(_0x195d2b);});}else{if(_[_0x24c346('0x2f')](_0x2c69c5[_0x24c346('0x1')][_0x24c346('0x69')],_0x24c346('0x63')))validateJwt(_0x2c69c5,_0x760b86,_0x5bdf15);else{if(_0x48b429)_0x5bdf15();else return _0x760b86[_0x24c346('0x11')](0x193)[_0x24c346('0x4')]({'message':_0x24c346('0x4a')});}}}else{if(_0x2c69c5['query'][_0x24c346('0x13')])try{const _0x133ef3={'audience':hardwareConf[_0x24c346('0x68')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x2c69c5[_0x24c346('0x4d')][_0x24c346('0x13')],_0x133ef3)[_0x24c346('0xd')](function(_0x401fbc){const _0x299c04=_0x24c346;return db['User'][_0x299c04('0x1b')]({'where':{'id':_0x401fbc[_0x299c04('0x27')]}})[_0x299c04('0xd')](function(_0x4ab412){const _0xb029a1=_0x299c04;if(!_0x4ab412||!_[_0xb029a1('0x16')](_0x4ab412[_0xb029a1('0x37')],_0x401fbc['nonce']))return _0x760b86[_0xb029a1('0x11')](0x191)[_0xb029a1('0x4')]({'message':_0xb029a1('0x26')});_0x2c69c5[_0xb029a1('0x30')]={'id':_0x4ab412['id']},_0x5bdf15();});})['catch'](function(){const _0x4ec18d=_0x24c346;return _0x760b86[_0x4ec18d('0x11')](0x191)['json']({'message':_0x4ec18d('0x3a')});});}catch(_0x9f923b){_0x5bdf15(_0x9f923b);}else{if(_0x48b429)_0x5bdf15();else return _0x760b86[_0x24c346('0x11')](0x193)[_0x24c346('0x4')]({'message':_0x24c346('0x4a')});}}})[_0x1484c8('0x48')](function(_0xe4dbbc,_0x4c7570,_0x2d5822){const _0x314815=_0x1484c8;if(_0xe4dbbc[_0x314815('0x30')])db[_0x314815('0x0')]['findOne']({'where':{'id':_0xe4dbbc['user']['id']},'attributes':userAttributes})['then'](function(_0x48076e){const _0x1a5133=_0x314815;if(!_0x48076e)return _0x4c7570[_0x1a5133('0x11')](0x194)[_0x1a5133('0x4')]({'message':_0x1a5133('0x23')});_0xe4dbbc['user']=_0x48076e,_0x2d5822();})[_0x314815('0x5e')](function(_0x4cfb27){_0x2d5822(_0x4cfb27);});else{if(_0x48b429)_0x2d5822();else return _0x4c7570[_0x314815('0x11')](0x194)[_0x314815('0x4')]({'message':_0x314815('0x56')});}});}function canUpdate(){const _0x2ce582=_0x45f2fe;return compose()[_0x2ce582('0x48')](function(_0x4b0e0a,_0x5a158c,_0x2bade8){const _0x279764=_0x2ce582;return licenseUtil['getLicense']()[_0x279764('0xd')](function(_0x59f91c){const _0x4fe533=_0x279764;if(_0x59f91c[_0x4fe533('0x4f')])_0x2bade8();else return _0x5a158c['status'](0x193)[_0x4fe533('0x4')]({'message':_0x4fe533('0x5f')});})['catch'](function(_0x2d6c52){_0x2bade8(_0x2d6c52);});});}function isMiddleware(_0x507719,_0xfd451f,_0x43bccd){return _0x507719['isMiddleware']=!![],_0x43bccd();}function signToken(_0x30539b){return signJwt(_0x30539b);}function setTokenCookie(_0x10ad22,_0x119e5d){const _0x3a495e=_0x45f2fe;if(!_0x10ad22[_0x3a495e('0x30')])return _0x119e5d['status'](0x194)[_0x3a495e('0x4')]({'message':_0x3a495e('0x1f')});const _0x45ab77={'payload':{'id':_0x10ad22[_0x3a495e('0x30')]['id'],'role':_0x10ad22[_0x3a495e('0x30')][_0x3a495e('0x49')]},'options':{'expiresIn':0x15180}};return signJwt(_0x45ab77)['then'](function(_0x27d3d9){const _0x48b62a=_0x3a495e;_0x119e5d[_0x48b62a('0x53')]('motion.token',_0x27d3d9),_0x119e5d[_0x48b62a('0x9')](_0x48b62a('0x7'));})[_0x3a495e('0x5e')](function(_0x21a100){const _0x2bb7f1=_0x3a495e;return _0x119e5d[_0x2bb7f1('0x11')](0x1f4)[_0x2bb7f1('0x5a')](_0x21a100);});}function retrieveApiKey(_0x364ee1){const _0x535486=_0x45f2fe;return _[_0x535486('0x1e')](_0x364ee1[_0x535486('0x37')])||_[_0x535486('0x1e')](_0x364ee1[_0x535486('0x40')])?null:createJwt(_0x364ee1);}function generateApiKey(_0x1ef98c){const _0x40b7cf=_0x45f2fe;return _0x1ef98c[_0x40b7cf('0x37')]=generateNonce(),_0x1ef98c['apiKeyIat']=generateIssuedAt(),createJwt(_0x1ef98c);}function regenerateApiKey(_0x4c3862,_0x46a21c){const _0x2edcf0=_0x45f2fe,_0x3aeb38=_0x4c3862['query'][_0x2edcf0('0x13')];if(_0x3aeb38){const _0x52524b={'nonce':_0x46a21c['apiKeyNonce'],'iat':_0x46a21c[_0x2edcf0('0x40')],'audience':hardwareConf[_0x2edcf0('0x68')](),'issuer':hardwareConf[_0x2edcf0('0x68')]()};return verifyJwt(_0x3aeb38,_0x52524b)[_0x2edcf0('0xd')](function(){return generateApiKey(_0x46a21c);});}else throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}function validatePasswordPattern(_0x46f41c){const _0xb342a3=_0x45f2fe,_0x3898cf=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#$%^&*~\-_=+[{\]}])(?=.{8,})/);if(!_0x3898cf[_0xb342a3('0x39')](_0x46f41c))throw new ValidationError(_0xb342a3('0x51'));return;}function validatePasswordHistory(_0x5564b4,_0x5cb9f8,_0x5efe99){const _0x518007=_0x45f2fe,_0x13d79c=encryptor[_0x518007('0x25')](_0x5cb9f8)[_0x518007('0x8')](',');for(let _0x9a0d6d=0x0;_0x9a0d6d<_0x5efe99;_0x9a0d6d++){if(!_0x13d79c[_0x9a0d6d])break;if(_0x5564b4[_0x518007('0x47')]()===_0x13d79c[_0x9a0d6d]['toLowerCase']()){let _0x3f7e77=util['format'](_0x518007('0x43'),_0x5efe99);_0x5efe99===0x1&&(_0x3f7e77=_0x518007('0x62'));throw new ValidationError(_0x3f7e77);}}return;}function updatePasswordsHistory(_0x439620,_0x4b9269){const _0x452b2a=_0x45f2fe,_0xe9c438=_0x4b9269?encryptor[_0x452b2a('0x25')](_0x4b9269)[_0x452b2a('0x8')](','):[];return _0xe9c438[_0x452b2a('0x1a')]===0x5&&_0xe9c438[_0x452b2a('0x1c')](-0x1,0x1),_0xe9c438[_0x452b2a('0x3e')](_0x439620),encryptor['encryptString'](_0xe9c438['join'](','));}function signJwt(_0x3dd22b){const _0x3f654a=_0x45f2fe,_0x33daae=util[_0x3f654a('0x4c')](jwt[_0x3f654a('0x5b')],{'context':jwt}),_0x2189fd=_0x3dd22b[_0x3f654a('0xb')]||config[_0x3f654a('0xa')][_0x3f654a('0x12')];return new Promise(function(_0x42f0a9,_0x4b6f93){const _0x4b9352=_0x3f654a;_0x33daae(_0x3dd22b['payload'],_0x2189fd,_0x3dd22b[_0x4b9352('0x21')])['then'](function(_0x52628e){_0x42f0a9(_0x52628e);})[_0x4b9352('0x5e')](function(_0x37640e){_0x4b6f93(_0x37640e);});});}function verifyJwt(_0x329841,_0x133ced,_0x125552){const _0x384c28=_0x45f2fe,_0x47f7cc=util[_0x384c28('0x4c')](jwt[_0x384c28('0x58')],{'context':jwt}),_0x2b1e89=_0x125552||config['secrets'][_0x384c28('0x12')];return new Promise(function(_0x53850e,_0x3c8d82){const _0xcc650b=_0x384c28;_0x47f7cc(_0x329841,_0x2b1e89,_0x133ced)[_0xcc650b('0xd')](function(_0x56749c){_0x53850e(_0x56749c);})[_0xcc650b('0x5e')](function(_0x6a26f7){_0x3c8d82(_0x6a26f7);});});}function generateNonce(){const _0x136848=_0x45f2fe;return crypto[_0x136848('0x2')](0x10)['toString'](_0x136848('0x36'));}function generateIssuedAt(){const _0x527fad=_0x45f2fe;return Math[_0x527fad('0x42')](Date[_0x527fad('0x3b')]()/0x3e8)[_0x527fad('0x2b')]();}function createJwt(_0x4ce6f1){const _0x574248=_0x45f2fe,_0x25ee38={'payload':{'iat':_0x4ce6f1[_0x574248('0x40')],'nonce':_0x4ce6f1[_0x574248('0x37')]},'options':{'algorithm':_0x574248('0x60'),'subject':_0x4ce6f1['id'][_0x574248('0x2b')](),'issuer':hardwareConf[_0x574248('0x68')](),'audience':hardwareConf[_0x574248('0x68')]()}};return signJwt(_0x25ee38)[_0x574248('0xd')](function(_0xcda90f){return{'iat':_0x4ce6f1['apiKeyIat'],'nonce':_0x4ce6f1['apiKeyNonce'],'token':_0xcda90f};});}module[_0x45f2fe('0x50')]={'isChatInteractionAuthorized':isChatInteractionAuthorized,'isAuthenticated':isAuthenticated,'canUpdate':canUpdate,'isMiddleware':isMiddleware,'signToken':signToken,'setTokenCookie':setTokenCookie,'retrieveApiKey':retrieveApiKey,'generateApiKey':generateApiKey,'regenerateApiKey':regenerateApiKey,'validatePasswordPattern':validatePasswordPattern,'validatePasswordHistory':validatePasswordHistory,'updatePasswordsHistory':updatePasswordsHistory};
\ No newline at end of file