Guest User

Untitled

a guest
Feb 16th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. /**
  2. * Created by masudurrahman on 1/19/17.
  3. */
  4.  
  5. var jwt = require('atlassian-jwt');
  6. var hashes = require('jshashes');
  7.  
  8. var Client = function Client() {
  9. if (arguments.length === 0) {
  10. throw new Error('an array of BASE_URL, ACCESS_KEY, SECRET_KEY, ACCOUNT_ID is required');
  11. }
  12.  
  13. var self = this;
  14. self.BASE_URL=arguments[0];
  15. self.ACCESS_KEY=arguments[1];
  16. self.SECRET_KEY=arguments[2];
  17. self.ACCOUNT_ID=arguments[3];
  18. self.HASH_LIB=new hashes.SHA256;
  19.  
  20. return self;
  21. }
  22.  
  23. Client.prototype.generateJWT = function(){
  24.  
  25. if (arguments.length === 0) {
  26. throw new Error('an array of METHOD, URI, JWT_EXPIRE is required');
  27. }
  28.  
  29. var self = this;
  30. var RELATIVE_PATH = arguments[1].split(self.BASE_URL)[1].split("?")[0];
  31. var QUERY_STRING = arguments[1].split(self.BASE_URL)[1].split("?")[1];
  32. var CANONICAL_PATH;
  33. if(QUERY_STRING) {
  34. CANONICAL_PATH = arguments[0]+'&'+RELATIVE_PATH+'&'+QUERY_STRING;
  35. } else {
  36. CANONICAL_PATH = arguments[0]+'&'+RELATIVE_PATH+'&';
  37. }
  38. jwt_payload = {
  39. 'sub': self.ACCOUNT_ID,
  40. 'qsh': self.HASH_LIB.hex(CANONICAL_PATH),
  41. 'iss': self.ACCESS_KEY,
  42. 'exp': new Date().getTime()+arguments[2],
  43. 'iat': new Date().getTime()
  44. }
  45.  
  46. var token = jwt.encode(jwt_payload, self.SECRET_KEY);
  47.  
  48. return token;
  49. }
  50.  
  51. module.exports = Client;
Add Comment
Please, Sign In to add comment