diff --git a/apps/meteor/app/meteor-developer/server/index.ts b/apps/meteor/app/meteor-developer/server/index.ts new file mode 100644 index 0000000000000..cf327e4971bb2 --- /dev/null +++ b/apps/meteor/app/meteor-developer/server/index.ts @@ -0,0 +1 @@ +import './lib'; diff --git a/apps/meteor/app/meteor-developer/server/lib.ts b/apps/meteor/app/meteor-developer/server/lib.ts new file mode 100644 index 0000000000000..cb532732ead92 --- /dev/null +++ b/apps/meteor/app/meteor-developer/server/lib.ts @@ -0,0 +1,46 @@ +import type { OAuthConfiguration } from '@rocket.chat/core-typings'; +import { Meteor } from 'meteor/meteor'; +import passport from 'passport'; + +import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; +import { settings } from '../../settings/server'; + +const config: Partial = { + serverURL: 'https://www.meteor.com', + authorizePath: '/oauth2/authorize', + tokenPath: '/oauth2/token', + identityPath: '/api/v1/identity', + scope: 'email', + tokenSentVia: 'header', + addAutopublishFields: { + forLoggedInUser: ['services.meteor-developer'], + forOtherUsers: ['services.meteor-developer.username'], + }, +}; + +const serviceKey = 'meteor-developer'; + +const configureMeteorDeveloperOAuth = (): void => { + passport.unuse(serviceKey); + + const enabled = settings.get('Accounts_OAuth_Meteor'); + if (!enabled) { + return; + } + + const clientId = settings.get('Accounts_OAuth_Meteor_id'); + const clientSecret = settings.get('Accounts_OAuth_Meteor_secret'); + + if (!clientId || !clientSecret) { + return; + } + + addPassportCustomOAuth(serviceKey, { ...config, clientId, clientSecret }); +}; + +Meteor.startup(() => { + settings.watchMultiple( + ['Accounts_OAuth_Meteor', 'Accounts_OAuth_Meteor_id', 'Accounts_OAuth_Meteor_secret'], + configureMeteorDeveloperOAuth, + ); +}); diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts index 8dd1046b515b9..228d809fe6dc2 100644 --- a/apps/meteor/server/importPackages.ts +++ b/apps/meteor/server/importPackages.ts @@ -33,6 +33,7 @@ import '../app/importer-slack-users/server'; import '../app/integrations/server'; import '../app/irc/server'; import '../app/lib/server'; +import '../app/meteor-developer/server'; import '../app/linkedin/server'; import '../app/token-login/server'; import '../app/mailer/server/api';