[FIX] Improve wordpress OAuth settings (#10724)

[NEW] Add more options for Wordpress OAuth configuration
pull/10607/head^2
Pierre H. Lehnen 8 years ago committed by Rodrigo Nascimento
parent 08149ebebb
commit e8054b943d
  1. 8
      packages/rocketchat-i18n/i18n/en.i18n.json
  2. 64
      packages/rocketchat-wordpress/common.js
  3. 53
      packages/rocketchat-wordpress/startup.js

@ -130,6 +130,14 @@
"Accounts_OAuth_Wordpress_callback_url": "WordPress Callback URL",
"Accounts_OAuth_Wordpress_id": "WordPress Id",
"Accounts_OAuth_Wordpress_secret": "WordPress Secret",
"Accounts_OAuth_Wordpress_server_type_wordpress_com": "Wordpress.com",
"Accounts_OAuth_Wordpress_server_type_wp_oauth_server": "WP OAuth Server Plugin",
"Accounts_OAuth_Wordpress_server_type_custom": "Custom",
"Accounts_OAuth_Wordpress_identity_path": "Identity Path",
"Accounts_OAuth_Wordpress_identity_token_sent_via": "Identity Token Sent Via",
"Accounts_OAuth_Wordpress_token_path": "Token Path",
"Accounts_OAuth_Wordpress_authorize_path": "Authorize Path",
"Accounts_OAuth_Wordpress_scope": "Scope",
"Accounts_PasswordReset": "Password Reset",
"Accounts_Registration_AuthenticationServices_Default_Roles": "Default Roles for Authentication Services",
"Accounts_Registration_AuthenticationServices_Default_Roles_Description": "Default roles (comma-separated) users will be given when registering through authentication services",

@ -1,12 +1,10 @@
/* globals CustomOAuth */
import _ from 'underscore';
const config = {
serverURL: '',
identityPath: '/rest/v1/me',
identityTokenSentVia: 'header',
authorizePath: '/oauth2/authorize',
tokenPath: '/oauth2/token',
scope: 'auth',
identityPath: '/oauth/me',
addAutopublishFields: {
forLoggedInUser: ['services.wordpress'],
forOtherUsers: ['services.wordpress.user_login']
@ -15,20 +13,60 @@ const config = {
const WordPress = new CustomOAuth('wordpress', config);
const fillSettings = _.debounce(() => {
config.serverURL = RocketChat.settings.get('API_Wordpress_URL');
delete config.identityPath;
delete config.identityTokenSentVia;
delete config.authorizePath;
delete config.tokenPath;
delete config.scope;
const serverType = RocketChat.settings.get('Accounts_OAuth_Wordpress_server_type');
switch (serverType) {
case 'custom':
if (RocketChat.settings.get('Accounts_OAuth_Wordpress_identity_path')) {
config.identityPath = RocketChat.settings.get('Accounts_OAuth_Wordpress_identity_path');
}
if (RocketChat.settings.get('Accounts_OAuth_Wordpress_identity_token_sent_via')) {
config.identityTokenSentVia = RocketChat.settings.get('Accounts_OAuth_Wordpress_identity_token_sent_via');
}
if (RocketChat.settings.get('Accounts_OAuth_Wordpress_token_path')) {
config.tokenPath = RocketChat.settings.get('Accounts_OAuth_Wordpress_token_path');
}
if (RocketChat.settings.get('Accounts_OAuth_Wordpress_authorize_path')) {
config.authorizePath = RocketChat.settings.get('Accounts_OAuth_Wordpress_authorize_path');
}
if (RocketChat.settings.get('Accounts_OAuth_Wordpress_scope')) {
config.scope = RocketChat.settings.get('Accounts_OAuth_Wordpress_scope');
}
break;
case 'wordpress-com':
config.identityPath = '/rest/v1/me';
config.identityTokenSentVia = 'header';
config.authorizePath = '/oauth2/authorize';
config.tokenPath = '/oauth2/token';
config.scope = 'auth';
break;
default:
config.identityPath = '/oauth/me';
break;
}
return WordPress.configure(config);
}, 1000);
if (Meteor.isServer) {
Meteor.startup(function() {
return RocketChat.settings.get('API_Wordpress_URL', function(key, value) {
config.serverURL = value;
return WordPress.configure(config);
});
return RocketChat.settings.get(/(API\_Wordpress\_URL)?(Accounts\_OAuth\_Wordpress\_)?/, () => fillSettings());
});
} else {
Meteor.startup(function() {
return Tracker.autorun(function() {
if (RocketChat.settings.get('API_Wordpress_URL')) {
config.serverURL = RocketChat.settings.get('API_Wordpress_URL');
return WordPress.configure(config);
}
return fillSettings();
});
});
}

@ -22,6 +22,59 @@ RocketChat.settings.addGroup('OAuth', function() {
type: 'string',
enableQuery
});
this.add('Accounts_OAuth_Wordpress_server_type', '', {
type: 'select',
enableQuery,
'public': true,
values: [
{
key: 'wordpress-com',
i18nLabel: 'Accounts_OAuth_Wordpress_server_type_wordpress_com'
},
{
key: 'wp-oauth-server',
i18nLabel: 'Accounts_OAuth_Wordpress_server_type_wp_oauth_server'
},
{
key: 'custom',
i18nLabel: 'Accounts_OAuth_Wordpress_server_type_custom'
}
]
});
const customOAuthQuery = [{
_id: 'Accounts_OAuth_Wordpress',
value: true
}, {
_id: 'Accounts_OAuth_Wordpress_server_type',
value: 'custom'
}];
this.add('Accounts_OAuth_Wordpress_identity_path', '', {
type: 'string',
enableQuery: customOAuthQuery,
'public': true
});
this.add('Accounts_OAuth_Wordpress_identity_token_sent_via', '', {
type: 'string',
enableQuery: customOAuthQuery,
'public': true
});
this.add('Accounts_OAuth_Wordpress_token_path', '', {
type: 'string',
enableQuery: customOAuthQuery,
'public': true
});
this.add('Accounts_OAuth_Wordpress_authorize_path', '', {
type: 'string',
enableQuery: customOAuthQuery,
'public': true
});
this.add('Accounts_OAuth_Wordpress_scope', '', {
type: 'string',
enableQuery: customOAuthQuery,
'public': true
});
return this.add('Accounts_OAuth_Wordpress_callback_url', '_oauth/wordpress', {
type: 'relativeUrl',
readonly: true,

Loading…
Cancel
Save