identity
Version:
Identity client
65 lines (54 loc) • 1.69 kB
JavaScript
exports.action = {
name: 'user',
description: 'returns a javascript file with user information',
inputs: { required : [], optional : [] },
outputExample: {},
requireAuth:false,
route: {
'get': 'user.js'
},
run: function(api, connection, next){
var res = connection.rawConnection.res;
var login_url = '/api/login';
var as_js = ((connection.type == 'web' && connection.rawConnection.req.url.match(/\.js$/)));
var User = api.identity.store.Model('User');
if(as_js){
res.setHeader('content-type', 'text/javascript');
}
User.setContext(connection).getMe().exec(function(user){
if(connection.user && !user) user = connection.user
if(user) user = user.toJson();
connection.session.user = user;
if(as_js){
if(user){
res.end('var USER = ' + JSON.stringify(user) + ';');
}else{
if(api.config.identity.requireAuth === false){
res.end('var USER = null;');
}else{
res.end('window.location.href="' + login_url + '";');
}
}
return next(connection, false);
}
connection.response = {
user: user
};
next(connection, true);
}).catch(function(err){
if(as_js){
if(api.config.identity.requireAuth === false){
res.end('var USER = null;');
}else{
res.end('window.location.href="' + login_url + '";');
}
return next(connection, true);
}
connection.response = {
user: null,
redirect: login_url
};
next(connection, true);
});
}
};