Built motion from commit b9b02fed.|2.6.5
[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 _0xeafd=['blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','blockedAt','admin','minutes','clearBlockUser','getLicense','status','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','use','User','passport','passport-local','bluebird','../../mysqldb','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','url','authenticate','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Setting','findOne'];(function(_0x1dbc55,_0x5db771){var _0x4d585d=function(_0x17275b){while(--_0x17275b){_0x1dbc55['push'](_0x1dbc55['shift']());}};_0x4d585d(++_0x5db771);}(_0xeafd,0x76));var _0xdeaf=function(_0x166d93,_0x301f09){_0x166d93=_0x166d93-0x0;var _0xba708=_0xeafd[_0x166d93];return _0xba708;};'use strict';var passport=require(_0xdeaf('0x0'));var LocalStrategy=require(_0xdeaf('0x1'))['Strategy'];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0xdeaf('0x2'));var util=require('util');var db=require(_0xdeaf('0x3'))['db'];var authService=require(_0xdeaf('0x4'));var utils=require(_0xdeaf('0x5'));var config=require(_0xdeaf('0x6'));var logger=require(_0xdeaf('0x7'))(_0xdeaf('0x8'));function isActiveDirectoryConfigured(_0x438e4b){var _0x593a74=![];if(typeof _0x438e4b[_0xdeaf('0x9')]!==_0xdeaf('0xa')){_0x593a74=_0x438e4b[_0xdeaf('0x9')][_0xdeaf('0xb')]&&_0x438e4b['activedirectory'][_0xdeaf('0xc')]&&_0x438e4b['activedirectory']['domain'];}return _0x593a74;}function adAuthenticate(_0x798475,_0x4dffd4,_0x33b798){return new BPromise(function(_0x45b718,_0x4f9f79){try{var _0x3320ed=new ActiveDirectory(_0x798475);_0x3320ed[_0xdeaf('0xd')](_0x4dffd4,_0x33b798,function(_0x5c2a05,_0x2119c1){if(_0x5c2a05){logger['error'](_0xdeaf('0xe'),_0x4dffd4,util[_0xdeaf('0xf')](_0x5c2a05,{'showHidden':![],'depth':null}));_0x4f9f79(_0xdeaf('0x10'));}else if(!_0x2119c1){logger[_0xdeaf('0x11')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x4dffd4);_0x4f9f79('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x45b718(_0x2119c1);}});}catch(_0x5dd216){_0x4f9f79(_0x5dd216);}});}function ActiveDirectoryAuthenticate(_0x5f0d69,_0x110bc4,_0x871ae5,_0x24c8b8){var _0x421f61,_0x38ae0b;if(!isActiveDirectoryConfigured(config)){logger[_0xdeaf('0x11')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x110bc4);return _0x24c8b8(null,![],{'message':_0xdeaf('0x10')});}return db[_0xdeaf('0x12')][_0xdeaf('0x13')]({'where':{'id':0x1},'attributes':['adSsoEnabled',_0xdeaf('0x14')],'raw':!![]})[_0xdeaf('0x15')](function(_0xcdfc78){_0x421f61=_0xcdfc78;if(!_0x421f61[_0xdeaf('0x16')]){logger['error'](_0xdeaf('0x17'),_0x110bc4);throw new Error(_0xdeaf('0x10'));}return _0x5f0d69[_0xdeaf('0x13')]({'attributes':['id',_0xdeaf('0x18'),_0xdeaf('0x19'),_0xdeaf('0x1a'),_0xdeaf('0x1b'),_0xdeaf('0x1c'),_0xdeaf('0x1d'),_0xdeaf('0x1e'),'online'],'where':{'name':_0x110bc4,'role':{'$or':[_0xdeaf('0x1f'),'user','agent']},'adSsoEnabled':!![]}});})[_0xdeaf('0x15')](function(_0x396f7a){if(!_0x396f7a||_0x396f7a&&_0x396f7a['name']!==_0x110bc4){throw new Error(_0xdeaf('0x10'));}_0x38ae0b=_0x396f7a;var _0x219961=_0x38ae0b['name']+'@'+config[_0xdeaf('0x9')]['domain'];return adAuthenticate(config[_0xdeaf('0x9')],_0x219961,_0x871ae5);})[_0xdeaf('0x15')](function(_0x5a862a){if(_0x38ae0b[_0xdeaf('0x1c')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x421f61[_0xdeaf('0x14')]>0x0){if(_0x38ae0b[_0xdeaf('0x1d')]){if(moment(_0x38ae0b[_0xdeaf('0x1e')])['add'](_0x421f61[_0xdeaf('0x14')],_0xdeaf('0x20'))>moment()){throw new Error(_0xdeaf('0x10'));}return utils[_0xdeaf('0x21')](_0x38ae0b,0x0,![],null)['then'](function(){return utils['getLicense'](_0x38ae0b);})['then'](function(){return _0x24c8b8(null,_0x38ae0b);});}else{return utils[_0xdeaf('0x22')](_0x38ae0b)[_0xdeaf('0x15')](function(){return _0x24c8b8(null,_0x38ae0b);});}}else{return utils[_0xdeaf('0x22')](_0x38ae0b)['then'](function(){return _0x24c8b8(null,_0x38ae0b);});}})['catch'](function(_0x5e7c6b){return _0x24c8b8(null,![],_0x5e7c6b);});}function handleError(_0x1a4c4c,_0x15279e,_0x573e8b){return _0x1a4c4c[_0xdeaf('0x23')](_0x15279e||0x1f4)[_0xdeaf('0x24')]({'message':_0x573e8b?_0x573e8b[_0xdeaf('0x25')]||_0x573e8b:''});}exports[_0xdeaf('0x26')]=function(_0x18c73d,_0x40a048,_0x461de0){passport[_0xdeaf('0xd')](_0xdeaf('0x27'),function(_0x5adc7a,_0x4adf97,_0x5985ea){var _0x376a63=_0x5adc7a||_0x5985ea;if(_0x376a63){return handleError(_0x40a048,0x191,_0x376a63);}if(!_0x4adf97){return handleError(_0x40a048,0x194,{'message':_0xdeaf('0x28')});}else{var _0x5ef149={'payload':{'id':_0x4adf97['id'],'role':_0x4adf97[_0xdeaf('0x1b')]},'options':{'expiresIn':0x15180}};return authService[_0xdeaf('0x29')](_0x5ef149)[_0xdeaf('0x15')](function(_0x2cf909){_0x40a048[_0xdeaf('0x2a')]({'id':_0x4adf97['id'],'token':_0x2cf909,'statusCall':'','isAlreadyLogged':_0x4adf97[_0xdeaf('0x2b')]});});}})(_0x18c73d,_0x40a048,_0x461de0);};passport[_0xdeaf('0x2c')](_0xdeaf('0x27'),new LocalStrategy({'usernameField':_0xdeaf('0x18'),'passwordField':'password'},function(_0x1a8db7,_0x3f3f77,_0x378f51){return ActiveDirectoryAuthenticate(db[_0xdeaf('0x2d')],_0x1a8db7,_0x3f3f77,_0x378f51);}));