Как к phpbb-форуму прикрутить авторизацию по ip?

259
28 марта 2017, 14:33

Идея авторизации следующая: если пользователь заходит из корпоративной сети, то берётся его ip-адрес, на основе которого определяется имя компьютера. По имени компьютера делается поиск в active directory, из результата берётся пользователь.

Как прикрутить эту схему к phpbb? Если зашедший пользователь ещё не существует, его надо сразу создать. Никаких лишних вопросов пользователю задаваться не должно. Другие способы авторизации пока не рассматриваются.

Вот соответствующий код определения пользователя на node.js:

const LdapAuth = require('ldapauth-fork');
const dns = require('dns');
const http = require('http');
function findUsers(wkstname, callback) {
  ldap = new LdapAuth({
    url: "LDAP://smth.city.example.com",
    bindDn: "CN=Auto User,OU=Auto Users,OU=Service,DC=city,DC=example,DC=com",
    bindCredentials: "JustAPassword",
    searchBase: "OU=UsersCity,DC=city,DC=example,DC=com",
    //searchFilter: "(mail={{username}})"
    searchFilter: "(WKSTName={{wkstname}})"
  });
  var searchFilter = `(WKSTName=${wkstname})`;
  var opts = {filter: searchFilter, scope: ldap.opts.searchScope};
  ldap._search(ldap.opts.searchBase, opts, function (err, result) {
    if (err) {
      ldap.close();
      return callback(err);
    }
    var users = result.map(u => ({login: u.cn, info: u.title}));
    ldap.close();
    return callback(null, users);
  });
};
function getUserByIp(ip, callback) {
  dns.reverse(ip, function(err, domains) {
    if (err) {
      return callback(err, null);
    }
    if(domains.length) {
      findUsers(domains[0].match(/^\w+/)[0], (err, users) => {
        if (err) {
          return callback(err, null);
        }
        if (users.length !== 1) {
          return callback(users, null);
        }
        return callback(null, users[0]);
      });
    }
    return callback("No domains", null);
  });
}
var server = http.createServer(function (request, response) {
  var ip = request.connection.remoteAddress;
  getUserByIp(ip, (err, user) => {
    if (err) {
      console.log(err);
    }
    response.writeHead(200, {"Content-Type": "text/plain"});
    response.end("Hello, " + (user ? user.login : "guest") + "!");
  });
});
server.listen(8081, '0.0.0.0');
READ ALSO
Запись в куку php

Запись в куку php

Есть кука $_COOKIEPrint_r выдаёт следующую структуру

297
arr1=range(“A”, “z”); $arr2= range(0,9);

arr1=range(“A”, “z”); $arr2= range(0,9);

Как сделать, чтобы указав N число из этих массивов, печатать случайным образом и цифры и буквы?

225
PHP слияние двух массивов

PHP слияние двух массивов

Добрый день всем! есть два массива,один с ссылками,второй с ссылками на фото

290