forked from optilude/meteor-jira-auth
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathclient.js
68 lines (53 loc) · 2.03 KB
/
client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* global JiraAuth: true, OAuth, ServiceConfiguration, Random, Meteor, Accounts */
"use strict";
JiraAuth = {};
const serviceName = 'jira';
Accounts.oauth.registerService(serviceName);
Meteor.loginWithJira = function (options, callback) {
if (!callback && typeof options === "function") {
callback = options;
options = null;
}
var credentialRequestCompleteCallback = Accounts.oauth.credentialRequestCompleteHandler(callback);
JiraAuth.requestCredential(options, credentialRequestCompleteCallback);
};
JiraAuth.requestCredential = function (options, credentialRequestCompleteCallback) {
if (!credentialRequestCompleteCallback && typeof options === 'function') {
credentialRequestCompleteCallback = options;
options = {};
}
let config = ServiceConfiguration.configurations.findOne({service: serviceName});
if (!config) {
if (credentialRequestCompleteCallback) {
credentialRequestCompleteCallback(new ServiceConfiguration.ConfigError());
}
return;
}
let
credentialToken = Random.secret(),
loginStyle = OAuth._loginStyle(serviceName, config, options),
stateParam = OAuth._stateParam(loginStyle, credentialToken),
loginPath = [
'_oauth/', serviceName, '/?requestTokenAndRedirect=true',
'&state=', stateParam,
'&jiraHost=', options.jiraHost,
'&jiraPort=', options.jiraPort,
'&jiraProtocol=', options.jiraProtocol
].join("");
if (Meteor.isCordova) {
loginPath = loginPath + "&cordova=true";
if (/Android/i.test(navigator.userAgent)) {
loginPath = loginPath + "&android=true";
}
}
let loginUrl = Meteor.absoluteUrl(loginPath);
OAuth.launchLogin(
{
loginService: serviceName,
loginStyle: loginStyle,
loginUrl: loginUrl,
credentialRequestCompleteCallback: credentialRequestCompleteCallback,
credentialToken: credentialToken
}
);
};