-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathclient.js
60 lines (49 loc) · 2.01 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
/* global JiraAuth: true, OAuth, ServiceConfiguration, Random, Meteor, Accounts */
"use strict";
JiraAuth = {};
var serviceName = 'jira';
Accounts.oauth.registerService(serviceName);
Meteor.loginWithJira = function(options, callback) {
// support a callback without options
if (! callback && typeof options === "function") {
callback = options;
options = null;
}
var credentialRequestCompleteCallback = Accounts.oauth.credentialRequestCompleteHandler(callback);
JiraAuth.requestCredential(options, credentialRequestCompleteCallback);
};
JiraAuth.requestCredential = function(options, credentialRequestCompleteCallback) {
// support both (options, callback) and (callback).
if (!credentialRequestCompleteCallback && typeof options === 'function') {
credentialRequestCompleteCallback = options;
options = {};
}
var config = ServiceConfiguration.configurations.findOne({service: serviceName});
if (!config) {
if(credentialRequestCompleteCallback) {
credentialRequestCompleteCallback(new ServiceConfiguration.ConfigError());
}
return;
}
var credentialToken = Random.secret();
var loginStyle = OAuth._loginStyle(serviceName, config, options);
var stateParam = OAuth._stateParam(loginStyle, credentialToken);
// url to app, caught in `server.js`
var loginPath = '_oauth/' + serviceName + '/?requestTokenAndRedirect=true' +
'&state=' + stateParam +
'&jiraHost=' + options.jiraHost;
if (Meteor.isCordova) {
loginPath = loginPath + "&cordova=true";
if (/Android/i.test(navigator.userAgent)) {
loginPath = loginPath + "&android=true";
}
}
var loginUrl = Meteor.absoluteUrl(loginPath);
OAuth.launchLogin({
loginService: serviceName,
loginStyle: loginStyle,
loginUrl: loginUrl,
credentialRequestCompleteCallback: credentialRequestCompleteCallback,
credentialToken: credentialToken
});
};