61d61ec0cb48d4d26573d6d2cd452e2dcc274348
[motion2.git] / server / api / authActiveDirectory / authActiveDirectory.controller.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 _0xf5e8=['domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','role','disabled','blocked','admin','agent','minutes','clearBlockUser','getLicense','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','online','use','ad-login','User','passport','passport-local','Strategy','moment','activedirectory2','util','../../mysqldb','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','url'];(function(_0x408719,_0x44c832){var _0x56fa67=function(_0x531690){while(--_0x531690){_0x408719['push'](_0x408719['shift']());}};_0x56fa67(++_0x44c832);}(_0xf5e8,0xfa));var _0x8f5e=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0xf5e8[_0x47568e];return _0x33815b;};'use strict';var passport=require(_0x8f5e('0x0'));var LocalStrategy=require(_0x8f5e('0x1'))[_0x8f5e('0x2')];var moment=require(_0x8f5e('0x3'));var ActiveDirectory=require(_0x8f5e('0x4'));var BPromise=require('bluebird');var util=require(_0x8f5e('0x5'));var db=require(_0x8f5e('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x8f5e('0x7'));var config=require(_0x8f5e('0x8'));var logger=require(_0x8f5e('0x9'))(_0x8f5e('0xa'));function isActiveDirectoryConfigured(_0x48ed61){var _0x49a02f=![];if(typeof _0x48ed61[_0x8f5e('0xb')]!==_0x8f5e('0xc')){_0x49a02f=_0x48ed61[_0x8f5e('0xb')]['baseDN']&&_0x48ed61[_0x8f5e('0xb')][_0x8f5e('0xd')]&&_0x48ed61[_0x8f5e('0xb')][_0x8f5e('0xe')];}return _0x49a02f;}function adAuthenticate(_0x2d3064,_0x352193,_0x488803){return new BPromise(function(_0x1afc61,_0xfa8aa2){try{var _0xa1642f=new ActiveDirectory(_0x2d3064);_0xa1642f[_0x8f5e('0xf')](_0x352193,_0x488803,function(_0x401607,_0x15796b){if(_0x401607){logger[_0x8f5e('0x10')](_0x8f5e('0x11'),_0x352193,util['inspect'](_0x401607,{'showHidden':![],'depth':null}));_0xfa8aa2(_0x8f5e('0x12'));}else if(!_0x15796b){logger[_0x8f5e('0x10')](_0x8f5e('0x13'),_0x352193);_0xfa8aa2(_0x8f5e('0x12'));}else{_0x1afc61(_0x15796b);}});}catch(_0x3879ad){_0xfa8aa2(_0x3879ad);}});}function ActiveDirectoryAuthenticate(_0x4cc268,_0x35aea9,_0x44d097,_0x21f48e){var _0x1a297e,_0x3efc37;if(!isActiveDirectoryConfigured(config)){logger[_0x8f5e('0x10')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x35aea9);return _0x21f48e(null,![],{'message':_0x8f5e('0x12')});}return db['Setting'][_0x8f5e('0x14')]({'where':{'id':0x1},'attributes':[_0x8f5e('0x15'),_0x8f5e('0x16')],'raw':!![]})[_0x8f5e('0x17')](function(_0x4aaf31){_0x1a297e=_0x4aaf31;if(!_0x1a297e['adSsoEnabled']){logger[_0x8f5e('0x10')](_0x8f5e('0x18'),_0x35aea9);throw new Error(_0x8f5e('0x12'));}return _0x4cc268[_0x8f5e('0x14')]({'attributes':['id',_0x8f5e('0x19'),_0x8f5e('0x1a'),'salt',_0x8f5e('0x1b'),_0x8f5e('0x1c'),_0x8f5e('0x1d'),'blockedAt','online'],'where':{'name':_0x35aea9,'role':{'$or':[_0x8f5e('0x1e'),'user',_0x8f5e('0x1f')]},'adSsoEnabled':!![]}});})['then'](function(_0x1488f0){if(!_0x1488f0||_0x1488f0&&_0x1488f0[_0x8f5e('0x19')]!==_0x35aea9){throw new Error(_0x8f5e('0x12'));}_0x3efc37=_0x1488f0;var _0x2fdcda=_0x3efc37[_0x8f5e('0x19')]+'@'+config[_0x8f5e('0xb')][_0x8f5e('0xe')];return adAuthenticate(config[_0x8f5e('0xb')],_0x2fdcda,_0x44d097);})[_0x8f5e('0x17')](function(_0x33bc36){if(_0x3efc37[_0x8f5e('0x1c')]){throw new Error(_0x8f5e('0x12'));}if(_0x1a297e['blockDuration']>0x0){if(_0x3efc37['blocked']){if(moment(_0x3efc37['blockedAt'])['add'](_0x1a297e['blockDuration'],_0x8f5e('0x20'))>moment()){throw new Error(_0x8f5e('0x12'));}return utils[_0x8f5e('0x21')](_0x3efc37,0x0,![],null)[_0x8f5e('0x17')](function(){return utils[_0x8f5e('0x22')](_0x3efc37);})[_0x8f5e('0x17')](function(){return _0x21f48e(null,_0x3efc37);});}else{return utils[_0x8f5e('0x22')](_0x3efc37)[_0x8f5e('0x17')](function(){return _0x21f48e(null,_0x3efc37);});}}else{return utils['getLicense'](_0x3efc37)[_0x8f5e('0x17')](function(){return _0x21f48e(null,_0x3efc37);});}})['catch'](function(_0x42d76f){return _0x21f48e(null,![],_0x42d76f);});}function handleError(_0x21a301,_0x1a0b72,_0x2430e5){return _0x21a301[_0x8f5e('0x23')](_0x1a0b72||0x1f4)[_0x8f5e('0x24')]({'message':_0x2430e5?_0x2430e5['message']||_0x2430e5:''});}exports[_0x8f5e('0x25')]=function(_0x1f6a74,_0x442d76,_0x12ec1f){passport[_0x8f5e('0xf')]('ad-login',function(_0x532ea7,_0x4d7ce9,_0xba3a96){var _0x4b1148=_0x532ea7||_0xba3a96;if(_0x4b1148){return handleError(_0x442d76,0x191,_0x4b1148);}if(!_0x4d7ce9){return handleError(_0x442d76,0x194,{'message':_0x8f5e('0x26')});}else{var _0x1c34b7={'payload':{'id':_0x4d7ce9['id'],'role':_0x4d7ce9[_0x8f5e('0x1b')]},'options':{'expiresIn':0x15180}};return authService[_0x8f5e('0x27')](_0x1c34b7)[_0x8f5e('0x17')](function(_0x3905c0){_0x442d76['json']({'id':_0x4d7ce9['id'],'token':_0x3905c0,'statusCall':'','isAlreadyLogged':_0x4d7ce9[_0x8f5e('0x28')]});});}})(_0x1f6a74,_0x442d76,_0x12ec1f);};passport[_0x8f5e('0x29')](_0x8f5e('0x2a'),new LocalStrategy({'usernameField':_0x8f5e('0x19'),'passwordField':_0x8f5e('0x1a')},function(_0x3f36d9,_0x2eb85e,_0x7f3361){return ActiveDirectoryAuthenticate(db[_0x8f5e('0x2b')],_0x3f36d9,_0x2eb85e,_0x7f3361);}));