mirror of
https://github.com/wekan/wekan.git
synced 2025-04-23 13:37:09 -04:00
get ServiceConfiguration from server
This commit is contained in:
parent
ee254cb9c8
commit
c5dd0b729d
4 changed files with 59 additions and 55 deletions
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
});
|
||||
|
||||
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue