Make upvoted/downvote posts/comments visible to current user only; do not use Accounts.createUser when seeding; small fixes

This commit is contained in:
SachaG 2017-04-29 12:33:05 +09:00
parent 004945baeb
commit 2b33c05981
8 changed files with 81 additions and 92 deletions

View file

@ -63,29 +63,24 @@ var createComment = function (username, body, picImageUrl) {
});
};
const createUser = function (username, email) {
const user = {
username,
email,
isDummy: true
};
newMutation({
collection: Users,
document: user,
validate: false
});
}
var createDummyUsers = function () {
console.log('// creating dummy users');
Accounts.createUser({
username: 'Bruce',
email: 'dummyuser1@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Arnold',
email: 'dummyuser2@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Julia',
email: 'dummyuser3@telescopeapp.org',
profile: {
isDummy: true
}
});
console.log('// inserting dummy users…');
createUser('Bruce', 'dummyuser1@telescopeapp.org');
createUser('Arnold', 'dummyuser2@telescopeapp.org');
createUser('Julia', 'dummyuser3@telescopeapp.org');
};
const createDummyPics = function () {

View file

@ -55,29 +55,24 @@ const seedData = [
},
];
const createUser = function (username, email) {
const user = {
username,
email,
isDummy: true
};
newMutation({
collection: Users,
document: user,
validate: false
});
}
var createDummyUsers = function () {
console.log('// creating dummy users');
Accounts.createUser({
username: 'Bruce',
email: 'dummyuser1@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Arnold',
email: 'dummyuser2@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Julia',
email: 'dummyuser3@telescopeapp.org',
profile: {
isDummy: true
}
});
console.log('// inserting dummy users…');
createUser('Bruce', 'dummyuser1@telescopeapp.org');
createUser('Arnold', 'dummyuser2@telescopeapp.org');
createUser('Julia', 'dummyuser3@telescopeapp.org');
};
Meteor.startup(function () {

View file

@ -623,7 +623,8 @@ export class AccountsLoginForm extends Tracker.Component {
Meteor.loginWithPassword(loginSelector, password, (error, result) => {
onSubmitHook(error,formState);
if (error) {
this.showMessage(this.context.intl.formatMessage({id: `accounts.error_${error.reason}`}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage(this.context.intl.formatMessage({id: errorId}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
}
else {
loginResultCallback(() => this.state.onSignedInHook());
@ -685,8 +686,8 @@ export class AccountsLoginForm extends Tracker.Component {
if (error instanceof Accounts.LoginCancelledError) {
// do nothing
} else {
console.warn(error.message || error)
this.showMessage((error.reason && this.context.intl.formatMessage({id: `accounts.error_${error.reason}`})) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}))
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage((error.reason && this.context.intl.formatMessage({id: errorId})) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}))
}
} else {
this.setState({ formState: STATES.PROFILE });
@ -747,7 +748,8 @@ export class AccountsLoginForm extends Tracker.Component {
const SignUp = function(_options) {
Accounts.createUser(_options, (error) => {
if (error) {
this.showMessage(this.context.intl.formatMessage({id: `accounts.error_${error.reason}`}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage(this.context.intl.formatMessage({id: errorId}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
if (this.context.intl.formatMessaget({id: `error.accounts_${error.reason}`})) {
onSubmitHook(`error.accounts.${error.reason}`, formState);
}
@ -798,7 +800,8 @@ export class AccountsLoginForm extends Tracker.Component {
Accounts.forgotPassword({ email: email }, (error) => {
if (error) {
this.showMessage(this.context.intl.formatMessage({id: `accounts_error_${error.reason}`}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage(this.context.intl.formatMessage({id: errorId}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
}
else {
this.showMessage(this.context.intl.formatMessage({id: 'accounts.info_email_sent'}), 'success', 5000);
@ -831,7 +834,8 @@ export class AccountsLoginForm extends Tracker.Component {
if (token) {
Accounts.resetPassword(token, newPassword, (error) => {
if (error) {
this.showMessage(this.context.intl.formatMessage({id: `accounts.error_${error.reason}`}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage(this.context.intl.formatMessage({id: errorId}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
onSubmitHook(error, formState);
}
else {
@ -847,7 +851,8 @@ export class AccountsLoginForm extends Tracker.Component {
else {
Accounts.changePassword(password, newPassword, (error) => {
if (error) {
this.showMessage(this.context.intl.formatMessage({id: `accounts.error_${error.reason}`}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
const errorId = `accounts.error_${error.reason.toLowerCase().replace(/ /g, '_')}`;
this.showMessage(this.context.intl.formatMessage({id: errorId}) || this.context.intl.formatMessage({id: 'accounts.error_unknown'}), 'error');
onSubmitHook(error, formState);
}
else {
@ -860,8 +865,7 @@ export class AccountsLoginForm extends Tracker.Component {
}
}
showMessage(messageId, type, clearTimeout, field){
const message = this.context.intl.formatMessage({id: messageId});
showMessage(message, type, clearTimeout, field){
if (message) {
this.setState(({ messages = [] }) => {
messages.push({

View file

@ -42,11 +42,6 @@ registerFragment(`
postCount
# vulcan:comments
commentCount
# vulcan:newsletter
newsletter_subscribeToNewsletter
# vulcan:notifications
notifications_users
notifications_posts
# vulcan:voting
downvotedComments {
...VotedItem

View file

@ -78,29 +78,24 @@ var createComment = function (slug, username, body, parentBody) {
});
};
const createUser = function (username, email) {
const user = {
username,
email,
isDummy: true
};
newMutation({
collection: Users,
document: user,
validate: false
});
}
var createDummyUsers = function () {
console.log('// inserting dummy users…');
Accounts.createUser({
username: 'Bruce',
email: 'dummyuser1@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Arnold',
email: 'dummyuser2@telescopeapp.org',
profile: {
isDummy: true
}
});
Accounts.createUser({
username: 'Julia',
email: 'dummyuser3@telescopeapp.org',
profile: {
isDummy: true
}
});
createUser('Bruce', 'dummyuser1@telescopeapp.org');
createUser('Arnold', 'dummyuser2@telescopeapp.org');
createUser('Julia', 'dummyuser3@telescopeapp.org');
};
var createDummyPosts = function () {

View file

@ -8,6 +8,7 @@ addStrings('en', {
"accounts.error_username_required": "Username required",
"accounts.error_accounts_": "",
"accounts.error_unknown": "Unknown error",
"accounts.error_user_not_found": "User not found",
"accounts.enter_username_or_email": "Enter username or email",
"accounts.username_or_email": "Username or email",
"accounts.enter_username": "Enter username",

View file

@ -25,6 +25,7 @@ const schema = {
type: String,
optional: true,
viewableBy: ['guests'],
insertableBy: ['guests'],
},
emails: {
type: Array,
@ -47,6 +48,9 @@ const schema = {
type: Date,
optional: true,
viewableBy: ['guests'],
onInsert: () => {
return new Date();
}
},
isAdmin: {
type: Boolean,
@ -59,8 +63,8 @@ const schema = {
group: adminGroup,
onInsert: user => {
// if this is not a dummy account, and is the first user ever, make them an admin
const realUsersCount = Users.find({'profile.isDummy': {$ne: true}}).count();
return (!user.profile.isDummy && realUsersCount === 0) ? true : false;
const realUsersCount = Users.find({'isDummy': {$ne: true}}).count();
return (!user.isDummy && realUsersCount === 0) ? true : false;
}
},
profile: {
@ -102,9 +106,11 @@ const schema = {
editableBy: ['members'],
viewableBy: ['guests'],
onInsert: (user, options) => {
if (user.profile.username) {
if (user.username) {
return user.username;
} else if (user.profile && user.profile.username) {
return user.profile.username;
} else if (user.profile.name) {
} else if (user.profile && user.profile.name) {
return user.profile.name;
} else if (user.services.linkedin && user.services.linkedin.firstName) {
return user.services.linkedin.firstName + " " + user.services.linkedin.lastName;
@ -122,14 +128,12 @@ const schema = {
regEx: SimpleSchema.RegEx.Email,
required: true,
control: "text",
insertableBy: ['members'],
insertableBy: ['guests'],
editableBy: ['members'],
viewableBy: ownsOrIsAdmin,
onInsert: (user, options) => {
onInsert: (user) => {
// look in a few places for the user email
if (options.email) {
return options.email;
} else if (user.services['meteor-developer'] && user.services['meteor-developer'].emails) {
if (user.services['meteor-developer'] && user.services['meteor-developer'].emails) {
return _.findWhere(user.services['meteor-developer'].emails, { primary: true }).address;
} else if (user.services.facebook && user.services.facebook.email) {
return user.services.facebook.email;

View file

@ -31,7 +31,7 @@ Users.addField([
fieldSchema: {
type: Array,
optional: true,
viewableBy: ['guests'],
viewableBy: Users.owns,
resolveAs: 'upvotedComments: [Vote]',
}
},
@ -50,7 +50,7 @@ Users.addField([
fieldSchema: {
type: Array,
optional: true,
viewableBy: ['guests'],
viewableBy: Users.owns,
resolveAs: 'upvotedPosts: [Vote]',
}
},
@ -69,7 +69,7 @@ Users.addField([
fieldSchema: {
type: Array,
optional: true,
viewableBy: ['guests'],
viewableBy: Users.owns,
resolveAs: 'downvotedComments: [Vote]',
}
},
@ -88,7 +88,7 @@ Users.addField([
fieldSchema: {
type: Array,
optional: true,
viewableBy: ['guests'],
viewableBy: Users.owns,
resolveAs: 'downvotedPosts: [Vote]',
}
},