Created
July 21, 2010 18:13
-
-
Save kriszyp/484867 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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