mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
Make upvoted/downvote posts/comments visible to current user only; do not use Accounts.createUser when seeding; small fixes
This commit is contained in:
parent
004945baeb
commit
2b33c05981
8 changed files with 81 additions and 92 deletions
|
@ -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 () {
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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({
|
||||
|
|
|
@ -42,11 +42,6 @@ registerFragment(`
|
|||
postCount
|
||||
# vulcan:comments
|
||||
commentCount
|
||||
# vulcan:newsletter
|
||||
newsletter_subscribeToNewsletter
|
||||
# vulcan:notifications
|
||||
notifications_users
|
||||
notifications_posts
|
||||
# vulcan:voting
|
||||
downvotedComments {
|
||||
...VotedItem
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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]',
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Add table
Reference in a new issue