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