Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local usermanager = require "core.usermanager";
- local new_sasl = require "util.sasl".new;
- local base64 = require "util.encodings".base64.encode;
- local waiter =require "util.async".waiter;
- local http = require "net.http";
- local log = module._log;
- local host = module.host;
- local provider = {};
- function provider.test_password(username, token)
- log("debug", "test token");
- local wait, done = waiter();
- local code = -1;
- http.request("http://api.learning-layers.eu/o/oauth2/userinfo?access_token=" + token,
- function(body, _code)
- log(body);
- code = _code;
- done();
- end);
- wait();
- if code >= 200 and code <= 299 then
- return true;
- else
- module:log("debug", "HTTP auth provider returned status code %d", code);
- return nil, "Auth failed. Invalid token.";
- end
- end
- function provider.user_exists(username)
- return true;
- end
- function provider.get_sasl_handler()
- return new_sasl(host, {
- plain_test = function(sasl, username, token, realm)
- return usermanager.test_password(username, realm, token), true;
- end
- });
- end
- module:provides("auth", provider);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement