Built motion from commit 3061e47c.|2.6.31
[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 _0xcda9=['use','User','passport-local','moment','activedirectory2','bluebird','util','../../config/environment','../../config/logger','api','activedirectory','baseDN','domain','error','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','password','salt','role','disabled','blocked','blockedAt','online','admin','user','name','add','minutes','clearBlockUser','getLicense','catch','status','send','message','authenticate','ad-login'];(function(_0x465c3f,_0x105901){var _0x4e7423=function(_0x22ba6e){while(--_0x22ba6e){_0x465c3f['push'](_0x465c3f['shift']());}};_0x4e7423(++_0x105901);}(_0xcda9,0xb2));var _0x9cda=function(_0x13fef4,_0x5b5610){_0x13fef4=_0x13fef4-0x0;var _0x518aef=_0xcda9[_0x13fef4];return _0x518aef;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x9cda('0x0'))['Strategy'];var moment=require(_0x9cda('0x1'));var ActiveDirectory=require(_0x9cda('0x2'));var BPromise=require(_0x9cda('0x3'));var util=require(_0x9cda('0x4'));var db=require('../../mysqldb')['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var config=require(_0x9cda('0x5'));var logger=require(_0x9cda('0x6'))(_0x9cda('0x7'));function isActiveDirectoryConfigured(_0x4f8332){var _0x4ed842=![];if(typeof _0x4f8332[_0x9cda('0x8')]!=='undefined'){_0x4ed842=_0x4f8332['activedirectory'][_0x9cda('0x9')]&&_0x4f8332[_0x9cda('0x8')]['url']&&_0x4f8332['activedirectory'][_0x9cda('0xa')];}return _0x4ed842;}function adAuthenticate(_0x46407e,_0x573e31,_0x2e7ebf){return new BPromise(function(_0x1a5e57,_0x43dae1){try{var _0x135ba4=new ActiveDirectory(_0x46407e);_0x135ba4['authenticate'](_0x573e31,_0x2e7ebf,function(_0x3b70c7,_0x5353aa){if(_0x3b70c7){logger[_0x9cda('0xb')](_0x9cda('0xc'),_0x573e31,util[_0x9cda('0xd')](_0x3b70c7,{'showHidden':![],'depth':null}));_0x43dae1(_0x9cda('0xe'));}else if(!_0x5353aa){logger['error'](_0x9cda('0xf'),_0x573e31);_0x43dae1('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x1a5e57(_0x5353aa);}});}catch(_0x731c20){_0x43dae1(_0x731c20);}});}function ActiveDirectoryAuthenticate(_0x5c752e,_0x48de48,_0xfb6db9,_0x380591){var _0x386eb4,_0x554e9f;if(!isActiveDirectoryConfigured(config)){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x48de48);return _0x380591(null,![],{'message':_0x9cda('0xe')});}return db[_0x9cda('0x10')]['findOne']({'where':{'id':0x1},'attributes':[_0x9cda('0x11'),_0x9cda('0x12')],'raw':!![]})[_0x9cda('0x13')](function(_0x163fda){_0x386eb4=_0x163fda;if(!_0x386eb4['adSsoEnabled']){logger['error'](_0x9cda('0x14'),_0x48de48);throw new Error(_0x9cda('0xe'));}return _0x5c752e[_0x9cda('0x15')]({'attributes':['id','name',_0x9cda('0x16'),_0x9cda('0x17'),_0x9cda('0x18'),_0x9cda('0x19'),_0x9cda('0x1a'),_0x9cda('0x1b'),_0x9cda('0x1c')],'where':{'name':_0x48de48,'role':{'$or':[_0x9cda('0x1d'),_0x9cda('0x1e'),'agent']},'adSsoEnabled':!![]}});})[_0x9cda('0x13')](function(_0x11ee5d){if(!_0x11ee5d||_0x11ee5d&&_0x11ee5d[_0x9cda('0x1f')]!==_0x48de48){throw new Error(_0x9cda('0xe'));}_0x554e9f=_0x11ee5d;var _0x302ecb=_0x554e9f['name']+'@'+config[_0x9cda('0x8')][_0x9cda('0xa')];return adAuthenticate(config[_0x9cda('0x8')],_0x302ecb,_0xfb6db9);})[_0x9cda('0x13')](function(_0x4c6c7b){if(_0x554e9f[_0x9cda('0x19')]){throw new Error(_0x9cda('0xe'));}if(_0x386eb4[_0x9cda('0x12')]>0x0){if(_0x554e9f['blocked']){if(moment(_0x554e9f[_0x9cda('0x1b')])[_0x9cda('0x20')](_0x386eb4[_0x9cda('0x12')],_0x9cda('0x21'))>moment()){throw new Error(_0x9cda('0xe'));}return utils[_0x9cda('0x22')](_0x554e9f,0x0,![],null)[_0x9cda('0x13')](function(){return utils[_0x9cda('0x23')](_0x554e9f);})[_0x9cda('0x13')](function(){return _0x380591(null,_0x554e9f);});}else{return utils[_0x9cda('0x23')](_0x554e9f)[_0x9cda('0x13')](function(){return _0x380591(null,_0x554e9f);});}}else{return utils[_0x9cda('0x23')](_0x554e9f)['then'](function(){return _0x380591(null,_0x554e9f);});}})[_0x9cda('0x24')](function(_0x1f927a){return _0x380591(null,![],_0x1f927a);});}function handleError(_0x526b58,_0x4fcd9e,_0x3f55b3){return _0x526b58[_0x9cda('0x25')](_0x4fcd9e||0x1f4)[_0x9cda('0x26')]({'message':_0x3f55b3?_0x3f55b3[_0x9cda('0x27')]||_0x3f55b3:''});}exports['login']=function(_0x281746,_0x58edd5,_0x15dccb){passport[_0x9cda('0x28')](_0x9cda('0x29'),function(_0xb608a6,_0x498d4c,_0x3ec99e){var _0x9a010a=_0xb608a6||_0x3ec99e;if(_0x9a010a){return handleError(_0x58edd5,0x191,_0x9a010a);}if(!_0x498d4c){return handleError(_0x58edd5,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x11f7e0={'payload':{'id':_0x498d4c['id'],'role':_0x498d4c[_0x9cda('0x18')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x11f7e0)[_0x9cda('0x13')](function(_0x467cbd){_0x58edd5['json']({'id':_0x498d4c['id'],'token':_0x467cbd,'statusCall':'','isAlreadyLogged':_0x498d4c[_0x9cda('0x1c')]});});}})(_0x281746,_0x58edd5,_0x15dccb);};passport[_0x9cda('0x2a')](_0x9cda('0x29'),new LocalStrategy({'usernameField':_0x9cda('0x1f'),'passwordField':'password'},function(_0x2ec5ba,_0x33af1f,_0x238337){return ActiveDirectoryAuthenticate(db[_0x9cda('0x2b')],_0x2ec5ba,_0x33af1f,_0x238337);}));