Advertisement
Guest User

Oauth_Lua

a guest
Nov 13th, 2014
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. local usermanager = require "core.usermanager";
  2. local new_sasl = require "util.sasl".new;
  3. local base64 = require "util.encodings".base64.encode;
  4. local waiter =require "util.async".waiter;
  5. local http = require "net.http";
  6.  
  7. local log = module._log;
  8. local host = module.host;
  9.  
  10. local provider = {};
  11.  
  12. function provider.test_password(username, token)
  13. log("debug", "test token");
  14.  
  15. local wait, done = waiter();
  16.  
  17. local code = -1;
  18. http.request("http://api.learning-layers.eu/o/oauth2/userinfo?access_token=" + token,
  19.  
  20. function(body, _code)
  21.  
  22. log(body);
  23. code = _code;
  24. done();
  25. end);
  26.  
  27. wait();
  28.  
  29. if code >= 200 and code <= 299 then
  30. return true;
  31. else
  32. module:log("debug", "HTTP auth provider returned status code %d", code);
  33. return nil, "Auth failed. Invalid token.";
  34. end
  35. end
  36.  
  37. function provider.user_exists(username)
  38. return true;
  39. end
  40.  
  41.  
  42. function provider.get_sasl_handler()
  43. return new_sasl(host, {
  44. plain_test = function(sasl, username, token, realm)
  45. return usermanager.test_password(username, realm, token), true;
  46. end
  47. });
  48. end
  49.  
  50. module:provides("auth", provider);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement