Skip to content

Instantly share code, notes, and snippets.

@flienteen
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save flienteen/9366052 to your computer and use it in GitHub Desktop.
Save flienteen/9366052 to your computer and use it in GitHub Desktop.
total.js index
var framework = require('total.js');
var http = require('http');
var debug = true;
framework.run(http, debug);
framework.route('/', view_homepage);
framework.route('/', json_homepage, ['xhr', 'post']);
framework.route('/', view_logged, ['authorize']); //doesn't work
framework.route('/logout/', logout, ['authorize', 'get']);
framework.route('/post', post, ['authorize', 'post', 'xhr']); //doesn't work
// ================================================
// AUTHORIZATION
// ================================================
framework.onAuthorization = function(req, res, flags, callback) {
var self = this;
var cookie = req.cookie('__user');
if (cookie === null || cookie.length < 10) {
callback(false);
return;
}
var obj = self.decrypt(cookie, 'user');
if (obj === null || obj === '' || obj.ip !== req.ip) {
callback(false);
return;
}
var user = self.cache.read('user_' + obj.id);
if (user !== null) {
req.user = user;
callback(true);
return;
}
user = {id:0, email:'hi@gmail.com'};
self.cache.add('user_' + user.id, user, new Date().add('m', 5));
callback(true, user);
};
function post()
{
this.json(this.post);
}
function view_logged() {
var self = this;
self.plain('You are logged as {0}. To unlogged remove cookie __user or click http://{1}:{2}/logout/'.format(self.user.email, self.framework.ip, self.framework.port));
}
function view_homepage() {
var self = this;
var html='<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>';
html += (self.user) ?'Okay, you are logged in, now <button id="post">Do a Post Submit</button>' :'<button id="login">LogIn</button>';
html += '<script>$("#login").click(function(){$.post("/", function(r){ if (r.r) window.location.href = "/";})})</script>';
html += '<script>$("#post").click(function(){$.post("/post", function(r){ console.log(r)})})</script>';
self.framework.responseContent(self.req, self.res, self.status, html, 'text/html');
}
function json_homepage(){
var self = this;
self.res.cookie('__user', self.framework.encrypt({ id: 0, ip: self.req.ip }, 'user'), new Date().add('m', 5));
self.json({ r: true });
}
function logout() {
var self = this;
self.res.cookie('__user', '', new Date().add('y', -1));
self.redirect('/');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment