6129d1e2b772ceaff218fb0282aaedbd21e518b7
[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 _0x95a2=['Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','salt','role','disabled','blocked','online','agent','blockDuration','blockedAt','add','minutes','clearBlockUser','getLicense','send','message','login','ad-login','json','use','password','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','activedirectory','undefined','baseDN','domain','authenticate','error','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','findOne','adSsoEnabled','then'];(function(_0x38a096,_0x316012){var _0x4327d2=function(_0x3dec0e){while(--_0x3dec0e){_0x38a096['push'](_0x38a096['shift']());}};_0x4327d2(++_0x316012);}(_0x95a2,0x6c));var _0x295a=function(_0x18474f,_0x51e0f9){_0x18474f=_0x18474f-0x0;var _0xab5297=_0x95a2[_0x18474f];return _0xab5297;};'use strict';var passport=require(_0x295a('0x0'));var LocalStrategy=require(_0x295a('0x1'))[_0x295a('0x2')];var moment=require(_0x295a('0x3'));var ActiveDirectory=require(_0x295a('0x4'));var BPromise=require(_0x295a('0x5'));var util=require('util');var db=require(_0x295a('0x6'))['db'];var authService=require(_0x295a('0x7'));var utils=require(_0x295a('0x8'));var config=require(_0x295a('0x9'));var logger=require(_0x295a('0xa'))('api');function isActiveDirectoryConfigured(_0x320ff3){var _0x1b5538=![];if(typeof _0x320ff3[_0x295a('0xb')]!==_0x295a('0xc')){_0x1b5538=_0x320ff3[_0x295a('0xb')][_0x295a('0xd')]&&_0x320ff3['activedirectory']['url']&&_0x320ff3[_0x295a('0xb')][_0x295a('0xe')];}return _0x1b5538;}function adAuthenticate(_0x422da2,_0x47425c,_0x133208){return new BPromise(function(_0x254dbd,_0x27061a){try{var _0x4c7907=new ActiveDirectory(_0x422da2);_0x4c7907[_0x295a('0xf')](_0x47425c,_0x133208,function(_0x398343,_0x4c4bd2){if(_0x398343){logger[_0x295a('0x10')]('Error\x20authenticate\x20%s:\x20%s',_0x47425c,util['inspect'](_0x398343,{'showHidden':![],'depth':null}));_0x27061a(_0x295a('0x11'));}else if(!_0x4c4bd2){logger[_0x295a('0x10')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x47425c);_0x27061a(_0x295a('0x11'));}else{_0x254dbd(_0x4c4bd2);}});}catch(_0x4e77d2){_0x27061a(_0x4e77d2);}});}function ActiveDirectoryAuthenticate(_0x2f9550,_0x50a6cc,_0x14efc7,_0x1c5831){var _0x57082b,_0x331cff;if(!isActiveDirectoryConfigured(config)){logger[_0x295a('0x10')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x50a6cc);return _0x1c5831(null,![],{'message':_0x295a('0x11')});}return db['Setting'][_0x295a('0x12')]({'where':{'id':0x1},'attributes':[_0x295a('0x13'),'blockDuration'],'raw':!![]})[_0x295a('0x14')](function(_0x109aed){_0x57082b=_0x109aed;if(!_0x57082b[_0x295a('0x13')]){logger['error'](_0x295a('0x15'),_0x50a6cc);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x2f9550[_0x295a('0x12')]({'logging':!![],'attributes':['id',_0x295a('0x16'),'password',_0x295a('0x17'),_0x295a('0x18'),_0x295a('0x19'),_0x295a('0x1a'),'blockedAt',_0x295a('0x1b')],'where':{'name':_0x50a6cc,'role':{'$or':['admin','user',_0x295a('0x1c')]},'adSsoEnabled':!![]}});})[_0x295a('0x14')](function(_0x55108a){if(!_0x55108a||_0x55108a&&_0x55108a[_0x295a('0x16')]!==_0x50a6cc){throw new Error(_0x295a('0x11'));}_0x331cff=_0x55108a;var _0x5e8c88=_0x331cff['name']+'@'+config[_0x295a('0xb')][_0x295a('0xe')];return adAuthenticate(config['activedirectory'],_0x5e8c88,_0x14efc7);})[_0x295a('0x14')](function(_0x58da11){if(_0x331cff[_0x295a('0x19')]){throw new Error(_0x295a('0x11'));}if(_0x57082b[_0x295a('0x1d')]>0x0){if(_0x331cff[_0x295a('0x1a')]){if(moment(_0x331cff[_0x295a('0x1e')])[_0x295a('0x1f')](_0x57082b[_0x295a('0x1d')],_0x295a('0x20'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x295a('0x21')](_0x331cff,0x0,![],null)[_0x295a('0x14')](function(){return utils[_0x295a('0x22')](_0x331cff);})[_0x295a('0x14')](function(){return _0x1c5831(null,_0x331cff);});}else{return utils[_0x295a('0x22')](_0x331cff)[_0x295a('0x14')](function(){return _0x1c5831(null,_0x331cff);});}}else{return utils[_0x295a('0x22')](_0x331cff)[_0x295a('0x14')](function(){return _0x1c5831(null,_0x331cff);});}})['catch'](function(_0x4e87e6){return _0x1c5831(null,![],_0x4e87e6);});}function handleError(_0x598655,_0x4f5b4,_0x1d5626){return _0x598655['status'](_0x4f5b4||0x1f4)[_0x295a('0x23')]({'message':_0x1d5626?_0x1d5626[_0x295a('0x24')]||_0x1d5626:''});}exports[_0x295a('0x25')]=function(_0xe6e328,_0x12604b,_0xdf3a4c){passport[_0x295a('0xf')](_0x295a('0x26'),function(_0x50f244,_0x4ce73f,_0x416cec){var _0x375a83=_0x50f244||_0x416cec;if(_0x375a83){return handleError(_0x12604b,0x191,_0x375a83);}if(!_0x4ce73f){return handleError(_0x12604b,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x5446ac={'payload':{'id':_0x4ce73f['id'],'role':_0x4ce73f[_0x295a('0x18')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x5446ac)[_0x295a('0x14')](function(_0x2590dc){_0x12604b[_0x295a('0x27')]({'id':_0x4ce73f['id'],'token':_0x2590dc,'statusCall':'','isAlreadyLogged':_0x4ce73f[_0x295a('0x1b')]});});}})(_0xe6e328,_0x12604b,_0xdf3a4c);};passport[_0x295a('0x28')]('ad-login',new LocalStrategy({'usernameField':_0x295a('0x16'),'passwordField':_0x295a('0x29')},function(_0x55c8b1,_0x1d68c6,_0x59a23d){return ActiveDirectoryAuthenticate(db[_0x295a('0x2a')],_0x55c8b1,_0x1d68c6,_0x59a23d);}));