c44d50d9a1c21be85bdc86c7d53073abce76ee4e
[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 _0x53a7=['findOne','adSsoEnabled','blockDuration','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','role','disabled','blocked','online','admin','user','agent','then','blockedAt','add','minutes','clearBlockUser','getLicense','catch','status','send','login','authenticate','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','User','passport','passport-local','moment','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','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'];(function(_0x295bc0,_0x1903af){var _0x300115=function(_0x3e8f8e){while(--_0x3e8f8e){_0x295bc0['push'](_0x295bc0['shift']());}};_0x300115(++_0x1903af);}(_0x53a7,0xee));var _0x753a=function(_0x2a3dd1,_0x2b52cd){_0x2a3dd1=_0x2a3dd1-0x0;var _0x50408b=_0x53a7[_0x2a3dd1];return _0x50408b;};'use strict';var passport=require(_0x753a('0x0'));var LocalStrategy=require(_0x753a('0x1'))['Strategy'];var moment=require(_0x753a('0x2'));var ActiveDirectory=require(_0x753a('0x3'));var BPromise=require(_0x753a('0x4'));var util=require(_0x753a('0x5'));var db=require(_0x753a('0x6'))['db'];var authService=require(_0x753a('0x7'));var utils=require(_0x753a('0x8'));var config=require(_0x753a('0x9'));var logger=require(_0x753a('0xa'))(_0x753a('0xb'));function isActiveDirectoryConfigured(_0x456366){var _0x48351a=![];if(typeof _0x456366[_0x753a('0xc')]!==_0x753a('0xd')){_0x48351a=_0x456366[_0x753a('0xc')][_0x753a('0xe')]&&_0x456366[_0x753a('0xc')][_0x753a('0xf')]&&_0x456366['activedirectory'][_0x753a('0x10')];}return _0x48351a;}function adAuthenticate(_0x3abf9c,_0x366e1b,_0x1fd4df){return new BPromise(function(_0xd940d3,_0x5972e0){try{var _0x6b8a53=new ActiveDirectory(_0x3abf9c);_0x6b8a53['authenticate'](_0x366e1b,_0x1fd4df,function(_0x337d59,_0x4a9bbd){if(_0x337d59){logger[_0x753a('0x11')](_0x753a('0x12'),_0x366e1b,util[_0x753a('0x13')](_0x337d59,{'showHidden':![],'depth':null}));_0x5972e0(_0x753a('0x14'));}else if(!_0x4a9bbd){logger[_0x753a('0x11')](_0x753a('0x15'),_0x366e1b);_0x5972e0(_0x753a('0x14'));}else{_0xd940d3(_0x4a9bbd);}});}catch(_0x2f50ba){_0x5972e0(_0x2f50ba);}});}function ActiveDirectoryAuthenticate(_0x1fe0d7,_0x55d6e1,_0x347be7,_0x5f06b2){var _0x34d568,_0x9865b8;if(!isActiveDirectoryConfigured(config)){logger[_0x753a('0x11')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x55d6e1);return _0x5f06b2(null,![],{'message':_0x753a('0x14')});}return db['Setting'][_0x753a('0x16')]({'where':{'id':0x1},'attributes':[_0x753a('0x17'),_0x753a('0x18')],'raw':!![]})['then'](function(_0x97fd4f){_0x34d568=_0x97fd4f;if(!_0x34d568[_0x753a('0x17')]){logger[_0x753a('0x11')](_0x753a('0x19'),_0x55d6e1);throw new Error(_0x753a('0x14'));}return _0x1fe0d7[_0x753a('0x16')]({'logging':!![],'attributes':['id',_0x753a('0x1a'),_0x753a('0x1b'),'salt',_0x753a('0x1c'),_0x753a('0x1d'),_0x753a('0x1e'),'blockedAt',_0x753a('0x1f')],'where':{'name':_0x55d6e1,'role':{'$or':[_0x753a('0x20'),_0x753a('0x21'),_0x753a('0x22')]},'adSsoEnabled':!![]}});})[_0x753a('0x23')](function(_0x1f48c2){if(!_0x1f48c2||_0x1f48c2&&_0x1f48c2['name']!==_0x55d6e1){throw new Error(_0x753a('0x14'));}_0x9865b8=_0x1f48c2;var _0x45ac5d=_0x9865b8[_0x753a('0x1a')]+'@'+config['activedirectory'][_0x753a('0x10')];return adAuthenticate(config['activedirectory'],_0x45ac5d,_0x347be7);})[_0x753a('0x23')](function(_0x44c2de){if(_0x9865b8['disabled']){throw new Error(_0x753a('0x14'));}if(_0x34d568[_0x753a('0x18')]>0x0){if(_0x9865b8['blocked']){if(moment(_0x9865b8[_0x753a('0x24')])[_0x753a('0x25')](_0x34d568['blockDuration'],_0x753a('0x26'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x753a('0x27')](_0x9865b8,0x0,![],null)[_0x753a('0x23')](function(){return utils[_0x753a('0x28')](_0x9865b8);})['then'](function(){return _0x5f06b2(null,_0x9865b8);});}else{return utils[_0x753a('0x28')](_0x9865b8)[_0x753a('0x23')](function(){return _0x5f06b2(null,_0x9865b8);});}}else{return utils[_0x753a('0x28')](_0x9865b8)[_0x753a('0x23')](function(){return _0x5f06b2(null,_0x9865b8);});}})[_0x753a('0x29')](function(_0x25d90e){return _0x5f06b2(null,![],_0x25d90e);});}function handleError(_0x47e4f1,_0x39f12e,_0x62f826){return _0x47e4f1[_0x753a('0x2a')](_0x39f12e||0x1f4)[_0x753a('0x2b')]({'message':_0x62f826?_0x62f826['message']||_0x62f826:''});}exports[_0x753a('0x2c')]=function(_0x3b1b27,_0x269cf5,_0x35bb93){passport[_0x753a('0x2d')](_0x753a('0x2e'),function(_0x564a07,_0x4375aa,_0x5ef6a1){var _0x5231de=_0x564a07||_0x5ef6a1;if(_0x5231de){return handleError(_0x269cf5,0x191,_0x5231de);}if(!_0x4375aa){return handleError(_0x269cf5,0x194,{'message':_0x753a('0x2f')});}else{var _0x548996={'payload':{'id':_0x4375aa['id'],'role':_0x4375aa['role']},'options':{'expiresIn':0x15180}};return authService[_0x753a('0x30')](_0x548996)[_0x753a('0x23')](function(_0x20bffe){_0x269cf5[_0x753a('0x31')]({'id':_0x4375aa['id'],'token':_0x20bffe,'statusCall':'','isAlreadyLogged':_0x4375aa[_0x753a('0x1f')]});});}})(_0x3b1b27,_0x269cf5,_0x35bb93);};passport[_0x753a('0x32')]('ad-login',new LocalStrategy({'usernameField':_0x753a('0x1a'),'passwordField':_0x753a('0x1b')},function(_0x5aa03a,_0x46608d,_0x101d3c){return ActiveDirectoryAuthenticate(db[_0x753a('0x33')],_0x5aa03a,_0x46608d,_0x101d3c);}));