Built motion from commit 538092ac.|2.6.10
[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 _0xabae=['moment','activedirectory2','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','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','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','salt','disabled','blocked','blockedAt','admin','user','then','blockDuration','minutes','clearBlockUser','getLicense','catch','send','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','use','ad-login','User','passport-local','Strategy'];(function(_0xe06071,_0x4eeaa1){var _0x8ad8be=function(_0xb48521){while(--_0xb48521){_0xe06071['push'](_0xe06071['shift']());}};_0x8ad8be(++_0x4eeaa1);}(_0xabae,0x139));var _0xeaba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xabae[_0x14add3];return _0x4a174f;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xeaba('0x0'))[_0xeaba('0x1')];var moment=require(_0xeaba('0x2'));var ActiveDirectory=require(_0xeaba('0x3'));var BPromise=require('bluebird');var util=require('util');var db=require('../../mysqldb')['db'];var authService=require(_0xeaba('0x4'));var utils=require(_0xeaba('0x5'));var config=require(_0xeaba('0x6'));var logger=require(_0xeaba('0x7'))(_0xeaba('0x8'));function isActiveDirectoryConfigured(_0x3eccbf){var _0x133c3a=![];if(typeof _0x3eccbf[_0xeaba('0x9')]!==_0xeaba('0xa')){_0x133c3a=_0x3eccbf[_0xeaba('0x9')][_0xeaba('0xb')]&&_0x3eccbf['activedirectory'][_0xeaba('0xc')]&&_0x3eccbf['activedirectory'][_0xeaba('0xd')];}return _0x133c3a;}function adAuthenticate(_0x1983c5,_0x3b985f,_0x133653){return new BPromise(function(_0x2c98e6,_0x39db45){try{var _0x5dc32f=new ActiveDirectory(_0x1983c5);_0x5dc32f[_0xeaba('0xe')](_0x3b985f,_0x133653,function(_0x272c56,_0x40762f){if(_0x272c56){logger[_0xeaba('0xf')](_0xeaba('0x10'),_0x3b985f,util['inspect'](_0x272c56,{'showHidden':![],'depth':null}));_0x39db45(_0xeaba('0x11'));}else if(!_0x40762f){logger[_0xeaba('0xf')](_0xeaba('0x12'),_0x3b985f);_0x39db45('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x2c98e6(_0x40762f);}});}catch(_0x24dbb4){_0x39db45(_0x24dbb4);}});}function ActiveDirectoryAuthenticate(_0x3f4a0b,_0x263f7d,_0x311d2e,_0x9f4aa8){var _0x2cecd3,_0x2a4d0c;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xeaba('0x13'),_0x263f7d);return _0x9f4aa8(null,![],{'message':_0xeaba('0x11')});}return db['Setting']['findOne']({'where':{'id':0x1},'attributes':['adSsoEnabled','blockDuration'],'raw':!![]})['then'](function(_0x37560a){_0x2cecd3=_0x37560a;if(!_0x2cecd3['adSsoEnabled']){logger['error'](_0xeaba('0x14'),_0x263f7d);throw new Error(_0xeaba('0x11'));}return _0x3f4a0b[_0xeaba('0x15')]({'attributes':['id',_0xeaba('0x16'),_0xeaba('0x17'),_0xeaba('0x18'),'role',_0xeaba('0x19'),_0xeaba('0x1a'),_0xeaba('0x1b'),'online'],'where':{'name':_0x263f7d,'role':{'$or':[_0xeaba('0x1c'),_0xeaba('0x1d'),'agent']},'adSsoEnabled':!![]}});})['then'](function(_0x2a9de1){if(!_0x2a9de1||_0x2a9de1&&_0x2a9de1[_0xeaba('0x16')]!==_0x263f7d){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x2a4d0c=_0x2a9de1;var _0x47d39e=_0x2a4d0c[_0xeaba('0x16')]+'@'+config['activedirectory'][_0xeaba('0xd')];return adAuthenticate(config['activedirectory'],_0x47d39e,_0x311d2e);})[_0xeaba('0x1e')](function(_0x12c06a){if(_0x2a4d0c[_0xeaba('0x19')]){throw new Error(_0xeaba('0x11'));}if(_0x2cecd3['blockDuration']>0x0){if(_0x2a4d0c[_0xeaba('0x1a')]){if(moment(_0x2a4d0c[_0xeaba('0x1b')])['add'](_0x2cecd3[_0xeaba('0x1f')],_0xeaba('0x20'))>moment()){throw new Error(_0xeaba('0x11'));}return utils[_0xeaba('0x21')](_0x2a4d0c,0x0,![],null)[_0xeaba('0x1e')](function(){return utils['getLicense'](_0x2a4d0c);})[_0xeaba('0x1e')](function(){return _0x9f4aa8(null,_0x2a4d0c);});}else{return utils['getLicense'](_0x2a4d0c)[_0xeaba('0x1e')](function(){return _0x9f4aa8(null,_0x2a4d0c);});}}else{return utils[_0xeaba('0x22')](_0x2a4d0c)['then'](function(){return _0x9f4aa8(null,_0x2a4d0c);});}})[_0xeaba('0x23')](function(_0x159e97){return _0x9f4aa8(null,![],_0x159e97);});}function handleError(_0x380cf4,_0x45e085,_0x2f8aa3){return _0x380cf4['status'](_0x45e085||0x1f4)[_0xeaba('0x24')]({'message':_0x2f8aa3?_0x2f8aa3[_0xeaba('0x25')]||_0x2f8aa3:''});}exports['login']=function(_0x11de1c,_0x210f5b,_0x2e6e3d){passport[_0xeaba('0xe')]('ad-login',function(_0x470895,_0x3f59df,_0x4e052f){var _0x1521c9=_0x470895||_0x4e052f;if(_0x1521c9){return handleError(_0x210f5b,0x191,_0x1521c9);}if(!_0x3f59df){return handleError(_0x210f5b,0x194,{'message':_0xeaba('0x26')});}else{var _0x6fc480={'payload':{'id':_0x3f59df['id'],'role':_0x3f59df[_0xeaba('0x27')]},'options':{'expiresIn':0x15180}};return authService[_0xeaba('0x28')](_0x6fc480)[_0xeaba('0x1e')](function(_0x55d17f){_0x210f5b[_0xeaba('0x29')]({'id':_0x3f59df['id'],'token':_0x55d17f,'statusCall':'','isAlreadyLogged':_0x3f59df['online']});});}})(_0x11de1c,_0x210f5b,_0x2e6e3d);};passport[_0xeaba('0x2a')](_0xeaba('0x2b'),new LocalStrategy({'usernameField':'name','passwordField':_0xeaba('0x17')},function(_0x8cb231,_0x3d1c92,_0x11f698){return ActiveDirectoryAuthenticate(db[_0xeaba('0x2c')],_0x8cb231,_0x3d1c92,_0x11f698);}));