get ServiceConfiguration from server

This commit is contained in:
viehlieb 2022-07-08 16:48:06 +02:00
parent ee254cb9c8
commit c5dd0b729d
4 changed files with 59 additions and 55 deletions

View file

@ -58,7 +58,6 @@ Template.userFormsLayout.onCreated(function () {
options = {
loginStyle: AccountsTemplates.options.socialLoginStyle,
};
console.log('options :',JSON.stringify(options,null,2));
Meteor.loginWithOidc(options);
}
else console.log("oidc redirect not set");

View file

@ -229,10 +229,10 @@ if (Meteor.isServer) {
]);
}
function loadOidcConfig(){
config = ServiceConfiguration.configurations.findOne({service: 'oidc'});
configKeys = Object.keys(config);
return Object.keys(config).length > 0;
function loadOidcConfig(service){
check(service, String);
var config = ServiceConfiguration.configurations.findOne({service: service});
return config;
}
function sendInvitationEmail(_id) {
@ -515,8 +515,11 @@ if (Meteor.isServer) {
return process.env.PASSWORD_LOGIN_ENABLED === 'false';
},
isOidcRedirectionEnabled(){
return process.env.OIDC_REDIRECTION_ENABLED === 'true' && loadOidcConfig();
}
return process.env.OIDC_REDIRECTION_ENABLED === 'true' && Object.keys(loadOidcConfig("oidc")).length > 0;
},
getServiceConfiguration(service){
return loadOidcConfig(service);
}
});
}

View file

@ -7,10 +7,7 @@ if (Meteor.isClient) {
callback = options;
options = null;
}
console.log(options.loginStyle);
console.log(callback);
var credentialRequestCompleteCallback = Accounts.oauth.credentialRequestCompleteHandler(callback);
console.log("credentialCallback",credentialRequestCompleteCallback);
Oidc.requestCredential(options, credentialRequestCompleteCallback);
};
}

View file

@ -12,56 +12,61 @@ Oidc.requestCredential = function (options, credentialRequestCompleteCallback) {
options = {};
}
var config = ServiceConfiguration.configurations.findOne({service: 'oidc'});
if (!config) {
credentialRequestCompleteCallback && credentialRequestCompleteCallback(
new ServiceConfiguration.ConfigError('Service oidc not configured.'));
return;
}
Meteor.call("getServiceConfiguration", "oidc",(_, result) => {
if (result) {
var config = result;
var credentialToken = Random.secret();
var loginStyle = OAuth._loginStyle('oidc', config, options);
// options
options = options || {};
options.client_id = config.clientId;
options.response_type = options.response_type || 'code';
options.redirect_uri = OAuth._redirectUri('oidc', config);
options.state = OAuth._stateParam(loginStyle, credentialToken, options.redirectUrl);
options.scope = config.requestPermissions || 'openid profile email';
var credentialToken = Random.secret();
var loginStyle = OAuth._loginStyle('oidc', config, options);
if (config.loginStyle && config.loginStyle == 'popup') {
options.display = 'popup';
}
// options
options = options || {};
options.client_id = config.clientId;
options.response_type = options.response_type || 'code';
options.redirect_uri = OAuth._redirectUri('oidc', config);
options.state = OAuth._stateParam(loginStyle, credentialToken, options.redirectUrl);
options.scope = config.requestPermissions || 'openid profile email';
var loginUrl = config.serverUrl + config.authorizationEndpoint;
// check if the loginUrl already contains a "?"
var first = loginUrl.indexOf('?') === -1;
for (var k in options) {
if (first) {
loginUrl += '?';
first = false;
}
else {
loginUrl += '&'
}
loginUrl += encodeURIComponent(k) + '=' + encodeURIComponent(options[k]);
}
if (config.loginStyle && config.loginStyle == 'popup') {
options.display = 'popup';
}
//console.log('XXX: loginURL: ' + loginUrl)
var loginUrl = config.serverUrl + config.authorizationEndpoint;
// check if the loginUrl already contains a "?"
var first = loginUrl.indexOf('?') === -1;
for (var k in options) {
if (first) {
loginUrl += '?';
first = false;
options.popupOptions = options.popupOptions || {};
var popupOptions = {
width: options.popupOptions.width || 320,
height: options.popupOptions.height || 450
};
OAuth.launchLogin({
loginService: 'oidc',
loginStyle: loginStyle,
loginUrl: loginUrl,
credentialRequestCompleteCallback: credentialRequestCompleteCallback,
credentialToken: credentialToken,
popupOptions: popupOptions,
});
}
else {
loginUrl += '&'
else
{
credentialRequestCompleteCallback && credentialRequestCompleteCallback(
new ServiceConfiguration.ConfigError('Service oidc not configured.'));
return;
}
loginUrl += encodeURIComponent(k) + '=' + encodeURIComponent(options[k]);
}
//console.log('XXX: loginURL: ' + loginUrl)
options.popupOptions = options.popupOptions || {};
var popupOptions = {
width: options.popupOptions.width || 320,
height: options.popupOptions.height || 450
};
OAuth.launchLogin({
loginService: 'oidc',
loginStyle: loginStyle,
loginUrl: loginUrl,
credentialRequestCompleteCallback: credentialRequestCompleteCallback,
credentialToken: credentialToken,
popupOptions: popupOptions,
});
};