FEAT: salesforce passport

This commit is contained in:
Arthur Simas
2022-06-29 12:39:54 -03:00
parent dd4a1ecd46
commit 5d3510639e
8 changed files with 110 additions and 7 deletions
+13
View File
@@ -89,6 +89,19 @@ export class OauthController {
return await this.callback(req, 'mailchimp');
}
@Get('salesforce')
@UseGuards(AuthGuard('salesforce'))
async oauthSalesforce() {
return true;
}
@Get('salesforce/callback')
@UseGuards(AuthGuard('salesforce'))
@Redirect()
async oauthSalesforceCallback(@Req() req) {
return await this.callback(req, 'salesforce');
}
async callback(@Req() req: Request, plugin) {
const { error, state: customer_id } = req.query;
@@ -14,7 +14,6 @@ export class HubspotStrategy extends PassportStrategy(Strategy) {
clientID: oauthSecrets.hubspot.client_id,
clientSecret: oauthSecrets.hubspot.client_secret,
callbackURL: oauthSecrets.hubspot.redirect_uri,
redirectUri: oauthSecrets.hubspot.redirect_uri,
scope:
'automation business-intelligence oauth forms integration-sync sales-email-read crm.lists.read crm.objects.contacts.read crm.schemas.contacts.read crm.objects.companies.read crm.objects.deals.read crm.schemas.companies.read crm.schemas.deals.read crm.objects.owners.read crm.objects.quotes.read crm.schemas.quotes.read crm.objects.line_items.read crm.schemas.line_items.read',
passReqToCallback: true,
@@ -0,0 +1,46 @@
import { Strategy } from 'passport-forcedotcom';
import { PassportStrategy } from '@nestjs/passport';
import { Inject, Injectable } from '@nestjs/common';
import { OauthSecrets } from 'src/utils/OauthSecrets';
@Injectable()
export class SalesforceStrategy extends PassportStrategy(
Strategy,
'salesforce',
) {
constructor(
@Inject('OAUTH_SECRETS')
private readonly oauthSecrets: OauthSecrets,
) {
super(
{
clientID: oauthSecrets.salesforce.client_id,
clientSecret: oauthSecrets.salesforce.client_secret,
callbackURL: oauthSecrets.salesforce.redirect_uri,
scope: [
'wave_api',
'chatter_api',
'chatbot_api',
'cdp_ingest_api',
'cdp_profile_api',
'api',
'pardot_api',
'cdp_segment_api',
'cdp_query_api',
'refresh_token',
'offline_access',
],
passReqToCallback: true,
},
(accessToken, refreshToken, tokenInfo, profile, done) => {
return done(null, profile, { accessToken, refreshToken, tokenInfo });
},
);
}
authenticate(req, options) {
const { customer_id } = req.query;
options.state = customer_id;
super.authenticate(req, options);
}
}