Vulcan/lib/users.js

125 lines
3.9 KiB
JavaScript
Raw Normal View History

2012-10-05 13:59:40 +09:00
isAdminById=function(userId){
2012-10-08 10:44:13 +09:00
var user = Meteor.users.findOne(userId);
2013-10-09 22:16:47 +09:00
return !!(user && isAdmin(user));
2012-10-05 13:59:40 +09:00
}
isAdmin=function(user){
user = (typeof user === 'undefined') ? Meteor.user() : user;
return !!user && !!user.isAdmin;
2012-10-05 13:59:40 +09:00
}
2013-10-23 19:43:42 +09:00
isInvited=function(user){
if(!user || typeof user === 'undefined')
return false;
return isAdmin(user) || !!user.isInvited;
}
adminUsers = function(){
return Meteor.users.find({isAdmin : true}).fetch();
}
getUserName = function(user){
return user.username || getProperty(user, 'services.twitter.screenName');
}
2012-10-01 14:52:32 +09:00
getDisplayName = function(user){
2012-10-17 16:04:47 +09:00
return (user.profile && user.profile.name) ? user.profile.name : user.username;
2012-10-01 14:52:32 +09:00
}
2012-10-23 12:24:38 +09:00
getDisplayNameById = function(userId){
return getDisplayName(Meteor.users.findOne(userId));
}
getProfileUrl = function(user) {
return Meteor.absoluteUrl()+'users/' + slugify(getUserName(user));
}
getProfileUrlById = function(id){
return Meteor.absoluteUrl()+'users/'+ id;
}
getProfileUrlBySlug = function(slug) {
return Meteor.absoluteUrl()+'users/' + slug;
}
2013-02-28 11:41:36 +09:00
getTwitterName = function(user){
// return twitter name provided by user, or else the one used for twitter login
if(checkNested(user, 'profile', 'twitter')){
return user.profile.twitter;
}else if(checkNested(user, 'services', 'twitter', 'screenName')){
2013-02-28 11:41:36 +09:00
return user.services.twitter.screenName;
}
2013-11-08 11:42:00 +09:00
return null;
}
getGitHubName = function(user){
// return twitter name provided by user, or else the one used for twitter login
if(checkNested(user, 'profile', 'github')){
return user.profile.github;
}else if(checkNested(user, 'services', 'github', 'screenName')){ // TODO: double-check this with GitHub login
return user.services.github.screenName;
}
2013-11-08 11:42:00 +09:00
return null;
2013-02-28 11:41:36 +09:00
}
getTwitterNameById = function(userId){
return getTwitterName(Meteor.users.findOne(userId));
}
2012-10-03 16:33:28 +09:00
getSignupMethod = function(user){
2012-10-08 10:44:13 +09:00
if(user.services && user.services.twitter){
return 'twitter';
}else{
2012-10-17 16:04:47 +09:00
return 'regular';
2012-10-08 10:44:13 +09:00
}
2012-10-03 16:33:28 +09:00
}
getEmail = function(user){
if(user.profile && user.profile.email){
2012-10-18 11:46:35 +09:00
return user.profile.email;
2012-10-08 10:44:13 +09:00
}else{
return '';
}
2012-10-03 16:33:28 +09:00
}
getAvatarUrl = function(user){
2012-10-08 10:44:13 +09:00
if(getSignupMethod(user)=='twitter'){
2013-06-13 15:13:12 +09:00
return 'http://twitter.com/api/users/profile_image/'+user.services.twitter.screenName;
2012-10-08 10:44:13 +09:00
}else{
return Gravatar.getGravatar(user, {
2013-01-14 10:44:54 +09:00
d: 'http://demo.telesc.pe/img/default_avatar.png',
2013-11-11 16:29:40 -05:00
s: 80
2012-10-08 10:44:13 +09:00
});
}
2012-10-02 10:54:04 +09:00
}
2012-10-03 16:33:28 +09:00
getCurrentUserEmail = function(){
2012-10-08 10:44:13 +09:00
return Meteor.user() ? getEmail(Meteor.user()) : '';
2012-10-03 16:33:28 +09:00
}
userProfileComplete = function(user) {
2012-10-08 10:44:13 +09:00
return !!getEmail(user);
2012-10-03 16:33:28 +09:00
}
2012-10-05 13:59:40 +09:00
findLast = function(user, collection){
return collection.findOne({userId: user._id}, {sort: {createdAt: -1}});
}
timeSinceLast = function(user, collection){
2012-10-08 10:44:13 +09:00
var now = new Date().getTime();
var last = findLast(user, collection);
if(!last)
return 999; // if this is the user's first post or comment ever, stop here
return Math.abs(Math.floor((now-last.createdAt)/1000));
}
numberOfItemsInPast24Hours = function(user, collection){
var mDate = moment(new Date());
var items=collection.find({
userId: user._id,
createdAt: {
$gte: mDate.subtract('hours',24).valueOf()
}
});
return items.count();
2013-10-23 10:21:08 +08:00
}
getUserSetting = function(setting, defaultValue, user){
var user = (typeof user == 'undefined') ? Meteor.user() : user;
var defaultValue = (typeof defaultValue == "undefined") ? null: defaultValue;
var settingValue = getProperty(user.profile, setting);
return (settingValue == null) ? defaultValue : settingValue;
}
getProperty = function(object, property){
// recursive function to get nested properties
var array = property.split('.');
if(array.length > 1){
var parent = array.shift();
// if our property is not at this level, call function again one level deeper if we can go deeper, else return null
return (typeof object[parent] == "undefined") ? null : getProperty(object[parent], array.join('.'))
}else{
// else return property
return object[array[0]];
}
2013-11-11 16:29:40 -05:00
}