102 lines
3.4 KiB
CoffeeScript
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
|