Built motion from commit ce97982f.|2.6.29
[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 _0xb9ba=['blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','online','user','add','minutes','clearBlockUser','getLicense','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','adSsoEnabled'];(function(_0x4c5c97,_0x4f85bf){var _0xd5d2cb=function(_0x1e6100){while(--_0x1e6100){_0x4c5c97['push'](_0x4c5c97['shift']());}};_0xd5d2cb(++_0x4f85bf);}(_0xb9ba,0x136));var _0xab9b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb9ba[_0x122ef9];return _0x42fba0;};'use strict';var passport=require(_0xab9b('0x0'));var LocalStrategy=require(_0xab9b('0x1'))[_0xab9b('0x2')];var moment=require(_0xab9b('0x3'));var ActiveDirectory=require(_0xab9b('0x4'));var BPromise=require(_0xab9b('0x5'));var util=require(_0xab9b('0x6'));var db=require(_0xab9b('0x7'))['db'];var authService=require(_0xab9b('0x8'));var utils=require('../../config/utils');var config=require(_0xab9b('0x9'));var logger=require(_0xab9b('0xa'))(_0xab9b('0xb'));function isActiveDirectoryConfigured(_0x1c6fdc){var _0x4f219b=![];if(typeof _0x1c6fdc[_0xab9b('0xc')]!==_0xab9b('0xd')){_0x4f219b=_0x1c6fdc['activedirectory'][_0xab9b('0xe')]&&_0x1c6fdc[_0xab9b('0xc')][_0xab9b('0xf')]&&_0x1c6fdc[_0xab9b('0xc')][_0xab9b('0x10')];}return _0x4f219b;}function adAuthenticate(_0x581556,_0x18ae69,_0x43c443){return new BPromise(function(_0x193a08,_0x547a8b){try{var _0x230bd3=new ActiveDirectory(_0x581556);_0x230bd3[_0xab9b('0x11')](_0x18ae69,_0x43c443,function(_0x18b4d1,_0x503a48){if(_0x18b4d1){logger[_0xab9b('0x12')](_0xab9b('0x13'),_0x18ae69,util[_0xab9b('0x14')](_0x18b4d1,{'showHidden':![],'depth':null}));_0x547a8b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x503a48){logger['error'](_0xab9b('0x15'),_0x18ae69);_0x547a8b(_0xab9b('0x16'));}else{_0x193a08(_0x503a48);}});}catch(_0x509ffe){_0x547a8b(_0x509ffe);}});}function ActiveDirectoryAuthenticate(_0x4e5792,_0x5129f3,_0x50d95c,_0x13157a){var _0x5b53d9,_0x5d5dad;if(!isActiveDirectoryConfigured(config)){logger[_0xab9b('0x12')](_0xab9b('0x17'),_0x5129f3);return _0x13157a(null,![],{'message':_0xab9b('0x16')});}return db[_0xab9b('0x18')]['findOne']({'where':{'id':0x1},'attributes':[_0xab9b('0x19'),_0xab9b('0x1a')],'raw':!![]})[_0xab9b('0x1b')](function(_0x3aa2ed){_0x5b53d9=_0x3aa2ed;if(!_0x5b53d9['adSsoEnabled']){logger[_0xab9b('0x12')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x5129f3);throw new Error(_0xab9b('0x16'));}return _0x4e5792['findOne']({'attributes':['id',_0xab9b('0x1c'),_0xab9b('0x1d'),_0xab9b('0x1e'),_0xab9b('0x1f'),_0xab9b('0x20'),_0xab9b('0x21'),_0xab9b('0x22'),_0xab9b('0x23')],'where':{'name':_0x5129f3,'role':{'$or':['admin',_0xab9b('0x24'),'agent']},'adSsoEnabled':!![]}});})['then'](function(_0x166630){if(!_0x166630||_0x166630&&_0x166630[_0xab9b('0x1c')]!==_0x5129f3){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x5d5dad=_0x166630;var _0x24b0d7=_0x5d5dad['name']+'@'+config[_0xab9b('0xc')][_0xab9b('0x10')];return adAuthenticate(config[_0xab9b('0xc')],_0x24b0d7,_0x50d95c);})[_0xab9b('0x1b')](function(_0x35b27a){if(_0x5d5dad[_0xab9b('0x20')]){throw new Error(_0xab9b('0x16'));}if(_0x5b53d9[_0xab9b('0x1a')]>0x0){if(_0x5d5dad['blocked']){if(moment(_0x5d5dad[_0xab9b('0x22')])[_0xab9b('0x25')](_0x5b53d9['blockDuration'],_0xab9b('0x26'))>moment()){throw new Error(_0xab9b('0x16'));}return utils[_0xab9b('0x27')](_0x5d5dad,0x0,![],null)['then'](function(){return utils[_0xab9b('0x28')](_0x5d5dad);})[_0xab9b('0x1b')](function(){return _0x13157a(null,_0x5d5dad);});}else{return utils['getLicense'](_0x5d5dad)['then'](function(){return _0x13157a(null,_0x5d5dad);});}}else{return utils['getLicense'](_0x5d5dad)[_0xab9b('0x1b')](function(){return _0x13157a(null,_0x5d5dad);});}})['catch'](function(_0x23e614){return _0x13157a(null,![],_0x23e614);});}function handleError(_0x19e158,_0x2a0f7e,_0x1ea9af){return _0x19e158[_0xab9b('0x29')](_0x2a0f7e||0x1f4)[_0xab9b('0x2a')]({'message':_0x1ea9af?_0x1ea9af[_0xab9b('0x2b')]||_0x1ea9af:''});}exports[_0xab9b('0x2c')]=function(_0x5dd440,_0x2a72ef,_0x4d5db0){passport['authenticate'](_0xab9b('0x2d'),function(_0x497c7b,_0x37d560,_0x45147e){var _0x43c87e=_0x497c7b||_0x45147e;if(_0x43c87e){return handleError(_0x2a72ef,0x191,_0x43c87e);}if(!_0x37d560){return handleError(_0x2a72ef,0x194,{'message':_0xab9b('0x2e')});}else{var _0x416bf4={'payload':{'id':_0x37d560['id'],'role':_0x37d560[_0xab9b('0x1f')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x416bf4)['then'](function(_0x4de8ea){_0x2a72ef['json']({'id':_0x37d560['id'],'token':_0x4de8ea,'statusCall':'','isAlreadyLogged':_0x37d560['online']});});}})(_0x5dd440,_0x2a72ef,_0x4d5db0);};passport['use'](_0xab9b('0x2d'),new LocalStrategy({'usernameField':'name','passwordField':_0xab9b('0x1d')},function(_0x588c32,_0x5b01c4,_0x3afd4b){return ActiveDirectoryAuthenticate(db[_0xab9b('0x2f')],_0x588c32,_0x5b01c4,_0x3afd4b);}));