Guest User

Untitled

a guest
Feb 18th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. module.exports.authentication = function(application, req, res){
  2.  
  3. let credentials = req.body
  4.  
  5. let user = credentials.login + '@domain.com'
  6. let pass = credentials.senha
  7.  
  8. // var cookie = require('cookie-signature');
  9. var ActiveDirectory = require('activedirectory2');
  10. var config = {
  11. url: 'ldap://global.domain.com',
  12. baseDN: 'dc=global,dc=domain,dc=com',
  13. username: user,
  14. password: pass
  15. }
  16. var ad = new ActiveDirectory(config);
  17.  
  18. var connection = application.config.dbConnection;
  19. var authenticationDAO = new application.app.models.authenticationDAO(connection);
  20.  
  21. authenticationDAO.authentication(ad, config, res);
  22. }
  23.  
  24. function authenticationDAO(connection) {
  25. this._connection = connection;
  26. }
  27.  
  28. authenticationDAO.prototype.authentication = function (ad, config, res) {
  29.  
  30. let authorization_level = [
  31. { ldap_group: 'Brazil Solution Development Team', permission: 'FULL' },
  32. { ldap_group: 'Brazil Profissinal Services Team', permission: 'FULL' },
  33. { ldap_group: 'Brazil Sales Engineering', permission: 'FULL' },
  34. { ldap_group: 'comercialsp', permission: 'MIDDLE' },
  35. { ldap_group: 'comercialrj', permission: 'MIDDLE' },
  36. { ldap_group: 'br-qss-om', permission: 'BASIC' },
  37. { ldap_group: 'br-eti', permission: 'BASIC' },
  38. { ldap_group: 'equipe.csm', permission: 'BASIC' }
  39. ];
  40.  
  41. let promise1 = new Promise((resolve, reject) => {
  42. ad.authenticate(config.username, config.password, function (err, auth) {
  43. if (err) {
  44. reject('err');
  45. }
  46.  
  47. if (auth) {
  48. resolve(auth)
  49. } else {
  50. resolve(auth)
  51. }
  52. })
  53. })
  54.  
  55. let promise2 = new Promise((resolve, reject) => {
  56. ad.getGroupMembershipForUser(config.username, function (err, groups) {
  57. if (err) {
  58. reject('err');
  59. }
  60.  
  61. if (!groups) {
  62. reject('User: ' + config.username + ' not found.');
  63. } else {
  64. resolve(groups);
  65. }
  66. });
  67. })
  68.  
  69. let promise3 = new Promise((resolve, reject) => {
  70. ad.findUser(config.username, function (err, user) {
  71. if (err) {
  72. reject('err');
  73. }
  74.  
  75. if (!user) {
  76. reject('err')
  77. } else {
  78. resolve(user);
  79. }
  80. });
  81. })
  82.  
  83. let username = '';
  84. let authenticated = false;
  85. let authorized = false;
  86. let hasGroup = false
  87. let groupName = '';
  88. let permission = '';
  89.  
  90. Promise.all([promise1, promise2, promise3], username, authenticated, authorized, hasGroup, groupName, permission)
  91. .then(([auth, groups, userInfo]) => {
  92. if (auth) {
  93. authorization_level.forEach(value => {
  94. if (groups.find(groups => groups.cn === value.ldap_group)) {
  95. hasGroup = true;
  96. username = userInfo.cn;
  97. authenticated = auth;
  98. authorized = auth;
  99. groupName = value.ldap_group;
  100. permission = value.permission;
  101. res.send({ username, authenticated, authorized, groupName, permission })
  102. }
  103. });
  104. }
  105.  
  106. if (!hasGroup) {
  107. let msgErrorAccess = 'To gain access to the Solution Request Portal please contact:';
  108. let msgEmailOwner = 'Brazil Solution Development Team';
  109. let msgEmail = 'br-soldev@equinix.com';
  110. let msgErrorGroup = "You are not authorized to use the Solution Request Portal";
  111. username = userInfo.cn;
  112. authenticated = true;
  113. res.send({ authenticated, authorized, username, msgErrorGroup, msgErrorAccess, msgEmailOwner, msgEmail });
  114. }
  115. })
  116. .catch(error => {
  117. let situation = error;
  118. let acessDenied = 'User and / or password incorrect';
  119. let equinixNetwork = 'Make sure you are connected to the Equinix network via cable or VPN.';
  120. res.send({ situation, acessDenied, equinixNetwork });
  121. })
  122. }
  123.  
  124. module.exports = function () {
  125. return authenticationDAO;
  126. }
Add Comment
Please, Sign In to add comment