Skip to content

Instantly share code, notes, and snippets.

@kriszyp
Created July 21, 2010 18:13
Show Gist options
  • Save kriszyp/484867 to your computer and use it in GitHub Desktop.
Save kriszyp/484867 to your computer and use it in GitHub Desktop.
/**
* This is an example Wiki web application written on Pintura
*/
var pageFacets = require("./facet/page"),
pageChangeFacets = require("./facet/page-change"),
admins = require("commonjs-utils/settings").security.admins,
fullModel = require("./model/index"),
Package = require("perstore/model").Package,
copy = require("commonjs-utils/copy").copy,
Register = require("pintura/security").Register;
// registers the HTML representation handler that generates HTML from wiki content
require("media/wiki-html");
// Defines the data model for the given user by request
exports.getDataModel = function(request){
var user = request.remoteUser;
if(user){
if(admins.indexOf(user)>-1){
return fullModel; // admin users can directly access the data model without facets
}
return userModel;
}
return publicModel;
}
// the data model for non-authenticated users
var publicModel = Package({
Page: pageFacets.PublicFacet,
PageChange: pageChangeFacets.PublicFacet,
User: Register
});
// the data model for authenticated users
var userModel = copy(publicModel);
userModel.Page = pageFacets.UserFacet
// also subpackages could be defined
var publicModel = Package({
Foo: {
Bar: FooBarModel
...
GET /Foo/Bar/333 -> FooBarModel.get(333)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment