You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

util.lib.lua 858B

1234567891011121314151617181920212223242526272829303132333435363738
  1. -- Token authentication
  2. -- Copyright (C) 2015 Atlassian
  3. local jwt = require "luajwt";
  4. local _M = {};
  5. local function verify_password_impl(password, appId, appSecret, roomName)
  6. local claims, err = jwt.decode(password, appSecret, true);
  7. if claims == nil then
  8. return nil, err;
  9. end
  10. local issClaim = claims["iss"];
  11. if issClaim == nil then
  12. return nil, "Issuer field is missing";
  13. end
  14. if issClaim ~= appId then
  15. return nil, "Invalid application ID('iss' claim)";
  16. end
  17. local roomClaim = claims["room"];
  18. if roomClaim == nil then
  19. return nil, "Room field is missing";
  20. end
  21. if roomName ~= nil and roomName ~= roomClaim then
  22. return nil, "Invalid room name('room' claim)";
  23. end
  24. return true;
  25. end
  26. function _M.verify_password(password, appId, appSecret, roomName)
  27. return verify_password_impl(password, appId, appSecret, roomName);
  28. end
  29. return _M;