Vulcan/lib/router/users.js

123 lines
2.7 KiB
JavaScript
Raw Normal View History

// Controller for user pages
2014-11-27 17:25:01 +05:30
UserPageController = RouteController.extend({
waitOn: function() {
return [
coreSubscriptions.subscribe('singleUser', this.params._idOrSlug)
]
},
getUser: function () {
return Meteor.users.findOne({slug: this.params._idOrSlug});
},
data: function() {
var findById = Meteor.users.findOne(this.params._idOrSlug);
var findBySlug = Meteor.users.findOne({slug: this.params._idOrSlug});
if (typeof findById !== 'undefined') {
// redirect to slug-based URL
Router.go(getProfileUrl(findById), {replaceState: true});
} else {
return {
user: (typeof findById == 'undefined') ? findBySlug : findById
};
}
2014-11-27 17:25:01 +05:30
},
getTitle: function () {
return getDisplayName(this.getUser()) + ' - ' + getSetting('title', "Telescope");
},
getDescription: function () {
return i18n.t('the_profile_of') + ' ' + getDisplayName(this.getUser());
},
2014-11-27 17:25:01 +05:30
fastRender: true
});
// Controller for user account editing
UserEditController = RouteController.extend({
waitOn: function() {
return [
2014-12-08 22:17:43 +09:00
coreSubscriptions.subscribe('singleUser', this.params.slug)
]
},
data: function() {
2015-02-02 18:53:42 +09:00
// if there is no slug, default to current user
var user = !!this.params.slug ? Meteor.users.findOne({slug: this.params.slug}) : Meteor.user();
2014-12-08 22:17:43 +09:00
return {
user: user
2014-12-08 22:17:43 +09:00
};
2014-11-27 17:25:01 +05:30
},
fastRender: true
});
Meteor.startup(function () {
2014-11-22 21:19:55 -08:00
// User Logout
Router.route('/sign-out', {
name: 'signOut',
2014-12-13 11:58:47 +09:00
template: getTemplate('sign_out'),
onBeforeAction: function() {
Meteor.logout(function() {
});
2014-12-13 11:58:47 +09:00
this.next();
}
});
// User Profile
Router.route('/users/:_idOrSlug', {
name: 'user_profile',
template: getTemplate('user_profile'),
controller: UserPageController
});
// User Edit
Router.route('/users/:slug/edit', {
name: 'user_edit',
template: getTemplate('user_edit'),
controller: UserEditController,
onBeforeAction: function () {
// Only allow users with permissions to see the user edit page.
if (Meteor.user() && (
isAdmin(Meteor.user()) ||
this.params.slug === Meteor.user().slug
)) {
this.next();
} else {
this.render(getTemplate('no_rights'));
}
}
});
2015-02-02 18:53:42 +09:00
Router.route('/account', {
name: 'userAccountShortcut',
template: getTemplate('user_edit'),
controller: UserEditController
});
// All Users
Router.route('/all-users', {
template: getTemplate('users')
});
// Unsubscribe (from notifications)
Router.route('/unsubscribe/:hash', {
name: 'unsubscribe',
template: getTemplate('unsubscribe'),
data: function() {
return {
hash: this.params.hash
};
}
});
});