dynamically load client routes from sub page
parent
c79b6da9d9
commit
00c4ea9199
|
@ -415,6 +415,7 @@ var ErrorHandlerView = Backbone.View.extend({
|
||||||
var AppRouter = Backbone.Router.extend({
|
var AppRouter = Backbone.Router.extend({
|
||||||
|
|
||||||
routes:{
|
routes:{
|
||||||
|
/*
|
||||||
"admin/clients":"listClients",
|
"admin/clients":"listClients",
|
||||||
"admin/client/new":"newClient",
|
"admin/client/new":"newClient",
|
||||||
"admin/client/:id":"editClient",
|
"admin/client/:id":"editClient",
|
||||||
|
@ -440,7 +441,8 @@ var AppRouter = Backbone.Router.extend({
|
||||||
"dev/resource":"resReg",
|
"dev/resource":"resReg",
|
||||||
"dev/resource/new":"newResReg",
|
"dev/resource/new":"newResReg",
|
||||||
"dev/resource/edit":"editResReg",
|
"dev/resource/edit":"editResReg",
|
||||||
|
*/
|
||||||
|
|
||||||
"": "root"
|
"": "root"
|
||||||
|
|
||||||
},
|
},
|
||||||
|
@ -472,158 +474,9 @@ var AppRouter = Backbone.Router.extend({
|
||||||
|
|
||||||
this.errorHandlerView = new ErrorHandlerView();
|
this.errorHandlerView = new ErrorHandlerView();
|
||||||
|
|
||||||
var base = $('base').attr('href');
|
|
||||||
$.getJSON(base + '.well-known/openid-configuration', function(data) {
|
|
||||||
app.serverConfiguration = data;
|
|
||||||
var baseUrl = $.url(app.serverConfiguration.issuer);
|
|
||||||
Backbone.history.start({pushState: true, root: baseUrl.attr('relative') + 'manage/'});
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
listClients:function () {
|
|
||||||
|
|
||||||
if (!isAdmin()) {
|
|
||||||
this.root();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.breadCrumbView.collection.reset();
|
|
||||||
this.breadCrumbView.collection.add([
|
|
||||||
{text:$.t('admin.home'), href:""},
|
|
||||||
{text:$.t('client.manage'), href:"manage/#admin/clients"}
|
|
||||||
]);
|
|
||||||
|
|
||||||
this.updateSidebar('admin/clients');
|
|
||||||
|
|
||||||
var view = new ClientListView({model:this.clientList, stats: this.clientStats, systemScopeList: this.systemScopeList, whiteListList: this.whiteListList});
|
|
||||||
|
|
||||||
view.load(function() {
|
|
||||||
$('#content').html(view.render().el);
|
|
||||||
view.delegateEvents();
|
|
||||||
setPageTitle($.t('client.manage'));
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
newClient:function() {
|
|
||||||
|
|
||||||
if (!isAdmin()) {
|
|
||||||
this.root();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.breadCrumbView.collection.reset();
|
|
||||||
this.breadCrumbView.collection.add([
|
|
||||||
{text:$.t('admin.home'), href:""},
|
|
||||||
{text:$.t('client.manage'), href:"manage/#admin/clients"},
|
|
||||||
{text:$.t('client.client-form.new'), href:""}
|
|
||||||
]);
|
|
||||||
|
|
||||||
this.updateSidebar('admin/clients');
|
|
||||||
|
|
||||||
var client = new ClientModel();
|
|
||||||
|
|
||||||
var view = new ClientFormView({model:client, systemScopeList: this.systemScopeList});
|
|
||||||
view.load(function() {
|
|
||||||
var userInfo = getUserInfo();
|
|
||||||
var contacts = [];
|
|
||||||
if (userInfo != null && userInfo.email != null) {
|
|
||||||
contacts.push(userInfo.email);
|
|
||||||
}
|
|
||||||
|
|
||||||
// use a different set of defaults based on heart mode flag
|
|
||||||
if (heartMode) {
|
|
||||||
client.set({
|
|
||||||
tokenEndpointAuthMethod: "PRIVATE_KEY",
|
|
||||||
generateClientSecret:false,
|
|
||||||
displayClientSecret:false,
|
|
||||||
requireAuthTime:true,
|
|
||||||
defaultMaxAge:60000,
|
|
||||||
scope: _.uniq(_.flatten(app.systemScopeList.defaultScopes().pluck("value"))),
|
|
||||||
accessTokenValiditySeconds:3600,
|
|
||||||
refreshTokenValiditySeconds:24*3600,
|
|
||||||
idTokenValiditySeconds:300,
|
|
||||||
grantTypes: ["authorization_code"],
|
|
||||||
responseTypes: ["code"],
|
|
||||||
subjectType: "PUBLIC",
|
|
||||||
jwksType: "URI",
|
|
||||||
contacts: contacts
|
|
||||||
}, { silent: true });
|
|
||||||
} else {
|
|
||||||
// set up this new client to require a secret and have us autogenerate one
|
|
||||||
client.set({
|
|
||||||
tokenEndpointAuthMethod: "SECRET_BASIC",
|
|
||||||
generateClientSecret:true,
|
|
||||||
displayClientSecret:false,
|
|
||||||
requireAuthTime:true,
|
|
||||||
defaultMaxAge:60000,
|
|
||||||
scope: _.uniq(_.flatten(app.systemScopeList.defaultScopes().pluck("value"))),
|
|
||||||
accessTokenValiditySeconds:3600,
|
|
||||||
idTokenValiditySeconds:600,
|
|
||||||
grantTypes: ["authorization_code"],
|
|
||||||
responseTypes: ["code"],
|
|
||||||
subjectType: "PUBLIC",
|
|
||||||
jwksType: "URI",
|
|
||||||
contacts: contacts
|
|
||||||
}, { silent: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$('#content').html(view.render().el);
|
|
||||||
setPageTitle($.t('client.client-form.new'));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
editClient:function(id) {
|
|
||||||
|
|
||||||
if (!isAdmin()) {
|
|
||||||
this.root();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.breadCrumbView.collection.reset();
|
|
||||||
this.breadCrumbView.collection.add([
|
|
||||||
{text:$.t('admin.home'), href:""},
|
|
||||||
{text:$.t('client.manage'), href:"manage/#admin/clients"},
|
|
||||||
{text:$.t('client.client-form.edit'), href:"manage/#admin/client/" + id}
|
|
||||||
]);
|
|
||||||
|
|
||||||
this.updateSidebar('admin/clients');
|
|
||||||
|
|
||||||
var client = this.clientList.get(id);
|
|
||||||
if (!client) {
|
|
||||||
client = new ClientModel({id:id});
|
|
||||||
}
|
|
||||||
|
|
||||||
var view = new ClientFormView({model:client, systemScopeList: app.systemScopeList});
|
|
||||||
view.load(function() {
|
|
||||||
if ($.inArray("refresh_token", client.get("grantTypes")) != -1) {
|
|
||||||
client.set({
|
|
||||||
allowRefresh: true
|
|
||||||
}, { silent: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (client.get("jwks")) {
|
|
||||||
client.set({
|
|
||||||
jwksType: "VAL"
|
|
||||||
}, { silent: true });
|
|
||||||
} else {
|
|
||||||
client.set({
|
|
||||||
jwksType: "URI"
|
|
||||||
}, { silent: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
client.set({
|
|
||||||
generateClientSecret:false,
|
|
||||||
displayClientSecret:false
|
|
||||||
}, { silent: true });
|
|
||||||
|
|
||||||
$('#content').html(view.render().el);
|
|
||||||
setPageTitle($.t('client.client-form.edit'));
|
|
||||||
});
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
whiteList:function () {
|
whiteList:function () {
|
||||||
|
|
||||||
|
@ -1082,6 +935,13 @@ $(function () {
|
||||||
$.ajaxSetup({cache:false});
|
$.ajaxSetup({cache:false});
|
||||||
app = new AppRouter();
|
app = new AppRouter();
|
||||||
|
|
||||||
|
console.log(ui.routes);
|
||||||
|
|
||||||
|
_.each(ui.routes.reverse(), function(route) {
|
||||||
|
console.log("Adding route: " + route.name);
|
||||||
|
app.route(route.path, route.name, route.callback);
|
||||||
|
});
|
||||||
|
|
||||||
app.on('route', function(name, args) {
|
app.on('route', function(name, args) {
|
||||||
// scroll to top of page on new route selection
|
// scroll to top of page on new route selection
|
||||||
$("html, body").animate({ scrollTop: 0 }, "slow");
|
$("html, body").animate({ scrollTop: 0 }, "slow");
|
||||||
|
@ -1091,7 +951,14 @@ $(function () {
|
||||||
$(document).on('click', 'a[href^="manage/#"]', function(event) {
|
$(document).on('click', 'a[href^="manage/#"]', function(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
app.navigate(this.hash.slice(1), {trigger: true});
|
app.navigate(this.hash.slice(1), {trigger: true});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var base = $('base').attr('href');
|
||||||
|
$.getJSON(base + '.well-known/openid-configuration', function(data) {
|
||||||
|
app.serverConfiguration = data;
|
||||||
|
var baseUrl = $.url(app.serverConfiguration.issuer);
|
||||||
|
Backbone.history.start({pushState: true, root: baseUrl.attr('relative') + 'manage/'});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
window.onerror = function ( message, filename, lineno, colno, error ){
|
window.onerror = function ( message, filename, lineno, colno, error ){
|
||||||
|
|
|
@ -1165,3 +1165,160 @@ var ClientFormView = Backbone.View.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// add routes to the app
|
||||||
|
/*
|
||||||
|
"admin/clients":"listClients",
|
||||||
|
"admin/client/new":"newClient",
|
||||||
|
"admin/client/:id":"editClient",
|
||||||
|
*/
|
||||||
|
|
||||||
|
ui.routes.push({path: "admin/clients", name: "listClients", callback:
|
||||||
|
function () {
|
||||||
|
|
||||||
|
if (!isAdmin()) {
|
||||||
|
this.root();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.breadCrumbView.collection.reset();
|
||||||
|
this.breadCrumbView.collection.add([
|
||||||
|
{text:$.t('admin.home'), href:""},
|
||||||
|
{text:$.t('client.manage'), href:"manage/#admin/clients"}
|
||||||
|
]);
|
||||||
|
|
||||||
|
this.updateSidebar('admin/clients');
|
||||||
|
|
||||||
|
var view = new ClientListView({model:this.clientList, stats: this.clientStats, systemScopeList: this.systemScopeList, whiteListList: this.whiteListList});
|
||||||
|
|
||||||
|
view.load(function() {
|
||||||
|
$('#content').html(view.render().el);
|
||||||
|
view.delegateEvents();
|
||||||
|
setPageTitle($.t('client.manage'));
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.routes.push({path: "admin/client/new", name: "newClient", callback:
|
||||||
|
function() {
|
||||||
|
console.log("newClient");
|
||||||
|
if (!isAdmin()) {
|
||||||
|
this.root();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.breadCrumbView.collection.reset();
|
||||||
|
this.breadCrumbView.collection.add([
|
||||||
|
{text:$.t('admin.home'), href:""},
|
||||||
|
{text:$.t('client.manage'), href:"manage/#admin/clients"},
|
||||||
|
{text:$.t('client.client-form.new'), href:""}
|
||||||
|
]);
|
||||||
|
|
||||||
|
this.updateSidebar('admin/clients');
|
||||||
|
|
||||||
|
var client = new ClientModel();
|
||||||
|
|
||||||
|
var view = new ClientFormView({model:client, systemScopeList: this.systemScopeList});
|
||||||
|
view.load(function() {
|
||||||
|
var userInfo = getUserInfo();
|
||||||
|
var contacts = [];
|
||||||
|
if (userInfo != null && userInfo.email != null) {
|
||||||
|
contacts.push(userInfo.email);
|
||||||
|
}
|
||||||
|
|
||||||
|
// use a different set of defaults based on heart mode flag
|
||||||
|
if (heartMode) {
|
||||||
|
client.set({
|
||||||
|
tokenEndpointAuthMethod: "PRIVATE_KEY",
|
||||||
|
generateClientSecret:false,
|
||||||
|
displayClientSecret:false,
|
||||||
|
requireAuthTime:true,
|
||||||
|
defaultMaxAge:60000,
|
||||||
|
scope: _.uniq(_.flatten(app.systemScopeList.defaultScopes().pluck("value"))),
|
||||||
|
accessTokenValiditySeconds:3600,
|
||||||
|
refreshTokenValiditySeconds:24*3600,
|
||||||
|
idTokenValiditySeconds:300,
|
||||||
|
grantTypes: ["authorization_code"],
|
||||||
|
responseTypes: ["code"],
|
||||||
|
subjectType: "PUBLIC",
|
||||||
|
jwksType: "URI",
|
||||||
|
contacts: contacts
|
||||||
|
}, { silent: true });
|
||||||
|
} else {
|
||||||
|
// set up this new client to require a secret and have us autogenerate one
|
||||||
|
client.set({
|
||||||
|
tokenEndpointAuthMethod: "SECRET_BASIC",
|
||||||
|
generateClientSecret:true,
|
||||||
|
displayClientSecret:false,
|
||||||
|
requireAuthTime:true,
|
||||||
|
defaultMaxAge:60000,
|
||||||
|
scope: _.uniq(_.flatten(app.systemScopeList.defaultScopes().pluck("value"))),
|
||||||
|
accessTokenValiditySeconds:3600,
|
||||||
|
idTokenValiditySeconds:600,
|
||||||
|
grantTypes: ["authorization_code"],
|
||||||
|
responseTypes: ["code"],
|
||||||
|
subjectType: "PUBLIC",
|
||||||
|
jwksType: "URI",
|
||||||
|
contacts: contacts
|
||||||
|
}, { silent: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$('#content').html(view.render().el);
|
||||||
|
setPageTitle($.t('client.client-form.new'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.routes.push({path: "admin/client/:id", name: "editClient", callback:
|
||||||
|
function(id) {
|
||||||
|
console.log("editClient " + id);
|
||||||
|
if (!isAdmin()) {
|
||||||
|
this.root();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.breadCrumbView.collection.reset();
|
||||||
|
this.breadCrumbView.collection.add([
|
||||||
|
{text:$.t('admin.home'), href:""},
|
||||||
|
{text:$.t('client.manage'), href:"manage/#admin/clients"},
|
||||||
|
{text:$.t('client.client-form.edit'), href:"manage/#admin/client/" + id}
|
||||||
|
]);
|
||||||
|
|
||||||
|
this.updateSidebar('admin/clients');
|
||||||
|
|
||||||
|
var client = this.clientList.get(id);
|
||||||
|
if (!client) {
|
||||||
|
client = new ClientModel({id:id});
|
||||||
|
}
|
||||||
|
|
||||||
|
var view = new ClientFormView({model:client, systemScopeList: app.systemScopeList});
|
||||||
|
view.load(function() {
|
||||||
|
if ($.inArray("refresh_token", client.get("grantTypes")) != -1) {
|
||||||
|
client.set({
|
||||||
|
allowRefresh: true
|
||||||
|
}, { silent: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (client.get("jwks")) {
|
||||||
|
client.set({
|
||||||
|
jwksType: "VAL"
|
||||||
|
}, { silent: true });
|
||||||
|
} else {
|
||||||
|
client.set({
|
||||||
|
jwksType: "URI"
|
||||||
|
}, { silent: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
client.set({
|
||||||
|
generateClientSecret:false,
|
||||||
|
displayClientSecret:false
|
||||||
|
}, { silent: true });
|
||||||
|
|
||||||
|
$('#content').html(view.render().el);
|
||||||
|
setPageTitle($.t('client.client-form.edit'));
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in New Issue