-
Notifications
You must be signed in to change notification settings - Fork 0
/
intuit.js
124 lines (106 loc) · 3.35 KB
/
intuit.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
const dotenv = require('dotenv')
const { ObjectId } = require('mongodb')
const OAuthClient = require('intuit-oauth')
const getOAuthUri = async settingsCollection => {
let clientId, clientSecret, environment, authUri
if (process.env.INTUIT_CLIENT_ID) {
clientId = process.env.INTUIT_CLIENT_ID
clientSecret = process.env.INTUIT_CLIENT_SECRET
environment = process.env.INTUIT_ENVIRONMENT
} else {
// Load the config if it has not been done
const env = dotenv.config()
clientId = env.parsed.INTUIT_CLIENT_ID
clientSecret = env.parsed.INTUIT_CLIENT_SECRET
environment = env.parsed.INTUIT_ENVIRONMENT
}
try {
const oauthClient = new OAuthClient({
clientId,
clientSecret,
environment,
redirectUri: 'https://api.gothereforeministries.org/callback'
})
authUri = await oauthClient.authorizeUri({
scope: [OAuthClient.scopes.Accounting, OAuthClient.scopes.Payment],
state: 'authorizeMe'
})
} catch (err) {
console.log(err)
}
return authUri
}
const getOAuthClientBare = async () => {
let clientId, clientSecret, environment
if (process.env.INTUIT_CLIENT_ID) {
clientId = process.env.INTUIT_CLIENT_ID
clientSecret = process.env.INTUIT_CLIENT_SECRET
environment = process.env.INTUIT_ENVIRONMENT
} else {
// Load the config if it has not been done
const env = dotenv.config()
clientId = env.parsed.INTUIT_CLIENT_ID
clientSecret = env.parsed.INTUIT_CLIENT_SECRET
environment = env.parsed.INTUIT_ENVIRONMENT
}
const oauthClient = new OAuthClient({
clientId,
clientSecret,
environment,
redirectUri: 'https://api.gothereforeministries.org/callback'
})
return oauthClient
}
const getOAuthClient = async settingsCollection => {
let clientId, clientSecret, environment
if (process.env.INTUIT_CLIENT_ID) {
clientId = process.env.INTUIT_CLIENT_ID
clientSecret = process.env.INTUIT_CLIENT_SECRET
environment = process.env.INTUIT_ENVIRONMENT
} else {
// Load the config if it has not been done
const env = dotenv.config()
clientId = env.parsed.INTUIT_CLIENT_ID
clientSecret = env.parsed.INTUIT_CLIENT_SECRET
environment = env.parsed.INTUIT_ENVIRONMENT
}
const accessToken = await settingsCollection.findOne({
name: 'access_token'
})
const oauthClient = new OAuthClient({
clientId,
clientSecret,
environment,
redirectUri: 'https://api.gothereforeministries.org/callback',
token: accessToken.value
})
if (!oauthClient.isAccessTokenValid()) {
const refreshToken = await settingsCollection.findOne({
name: 'refresh_token'
})
const authResponse = await oauthClient.refreshUsingToken(refreshToken.value)
//console.log('authResponse:' + JSON.stringify(authResponse))
if (authResponse && authResponse.refresh_token) {
// console.log('refresh_token:' + authResponse.refresh_token)
accessToken.value = authResponse.access_token
await settingsCollection.updateOne(
{
_id: new ObjectId(accessToken._id)
},
{ $set: accessToken }
)
refreshToken.value = authResponse.refresh_token
await settingsCollection.updateOne(
{
_id: new ObjectId(refreshToken._id)
},
{ $set: refreshToken }
)
}
}
return oauthClient
}
module.exports = {
getOAuthClient,
getOAuthClientBare
}