2016-10-12 01:50:47 -04:00

102 lines
3.4 KiB
CoffeeScript

Meteor.methods
adminInsertDoc: (doc,collection)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
this.unblock()
result = adminCollectionObject(collection).insert doc
return result
adminUpdateDoc: (modifier,collection,_id)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
this.unblock()
result = adminCollectionObject(collection).update {_id:_id},modifier
return result
adminRemoveDoc: (collection,_id)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
if collection == 'Users'
Meteor.users.remove {_id:_id}
else
# global[collection].remove {_id:_id}
adminCollectionObject(collection).remove {_id: _id}
adminNewUser: (doc) ->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
emails = doc.email.split(',')
_.each emails, (email)->
user = {}
user.email = email
unless doc.chooseOwnPassword
user.password = doc.password
_id = Accounts.createUser user
if doc.sendPassword and AdminConfig.fromEmail?
Email.send
to: user.email
from: AdminConfig.fromEmail
subject: 'Your account has been created'
html: 'You\'ve just had an account created for ' + Meteor.absoluteUrl() + ' with password ' + doc.password
if not doc.sendPassword
Accounts.sendEnrollmentEmail _id
adminUpdateUser: (modifier,_id)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
this.unblock()
result = Meteor.users.update {_id:_id}, modifier
return result
adminSendResetPasswordEmail: (doc)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
console.log 'Changing password for user ' + doc._id
Accounts.sendResetPasswordEmail(doc._id)
adminChangePassword: (doc)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
console.log 'Changing password for user ' + doc._id
Accounts.setPassword(doc._id, doc.password)
label: 'Email user their new password'
adminCheckAdmin: ->
check arguments, [Match.Any]
user = Meteor.users.findOne(_id:this.userId)
if this.userId and !Roles.userIsInRole(this.userId, ['admin']) and (user.emails.length > 0)
email = user.emails[0].address
if typeof Meteor.settings.adminEmails != 'undefined'
adminEmails = Meteor.settings.adminEmails
if adminEmails.indexOf(email) > -1
console.log 'Adding admin user: ' + email
Roles.addUsersToRoles this.userId, ['admin'], Roles.GLOBAL_GROUP
else if typeof AdminConfig != 'undefined' and typeof AdminConfig.adminEmails == 'object'
adminEmails = AdminConfig.adminEmails
if adminEmails.indexOf(email) > -1
console.log 'Adding admin user: ' + email
Roles.addUsersToRoles this.userId, ['admin'], Roles.GLOBAL_GROUP
else if this.userId == Meteor.users.findOne({},{sort:{createdAt:1}})._id
console.log 'Making first user admin: ' + email
Roles.addUsersToRoles this.userId, ['admin']
adminAddUserToRole: (_id,role)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
Roles.addUsersToRoles _id, role, Roles.GLOBAL_GROUP
adminRemoveUserToRole: (_id,role)->
check arguments, [Match.Any]
if Roles.userIsInRole this.userId, ['admin']
Roles.removeUsersFromRoles _id, role, Roles.GLOBAL_GROUP
adminSetCollectionSort: (collection, _sort) ->
check arguments, [Match.Any]
global.AdminPages[collection].set
sort: _sort