Fixes admin create / edit users

pull/2724/head
Marcelo Schmidt 9 years ago
parent 8b46cbf4d4
commit c05dc9c391
  1. 2
      client/routes/adminRouter.coffee
  2. 2
      packages/rocketchat-lib/server/functions/setEmail.js
  3. 2
      packages/rocketchat-lib/server/functions/setUsername.coffee
  4. 25
      packages/rocketchat-ui-admin/admin/users/adminUserEdit.coffee
  5. 11
      packages/rocketchat-ui-admin/admin/users/adminUserInfo.coffee
  6. 32
      packages/rocketchat-ui-admin/admin/users/adminUsers.coffee

@ -1,11 +1,9 @@
FlowRouter.route '/admin/users',
name: 'admin-users'
triggersExit: [ ->
Session.set 'adminSelectedUser'
Session.set 'showUserInfo'
]
action: ->
Session.set 'adminSelectedUser'
Session.set 'showUserInfo'
RocketChat.TabBar.showGroup 'adminusers'
BlazeLayout.render 'main', {center: 'adminUsers'}

@ -32,5 +32,5 @@ RocketChat._setEmail = function(userId, email) {
};
RocketChat.setEmail = RocketChat.RateLimiter.limitFunction(RocketChat._setEmail, 1, 60000, {
0: function(userId) { return !RocketChat.authz.hasPermission(userId, 'edit-other-user-info'); } // Administrators have permission to change others emails, so don't limit those
0: function(userId) { return !Meteor.userId() || !RocketChat.authz.hasPermission(Meteor.userId(), 'edit-other-user-info'); } // Administrators have permission to change others emails, so don't limit those
});

@ -60,4 +60,4 @@ RocketChat._setUsername = (userId, username) ->
return user
RocketChat.setUsername = RocketChat.RateLimiter.limitFunction RocketChat._setUsername, 1, 60000,
0: (userId) -> return not RocketChat.authz.hasPermission(userId, 'edit-other-user-info') # Administrators have permission to change others usernames, so don't limit those
0: (userId) -> return not Meteor.userId() or not RocketChat.authz.hasPermission(Meteor.userId(), 'edit-other-user-info') # Administrators have permission to change others usernames, so don't limit those

@ -1,9 +1,9 @@
Template.adminUserEdit.helpers
canEditOrAdd: ->
return (Session.get('adminSelectedUser') and RocketChat.authz.hasAtLeastOnePermission('edit-other-user-info')) or (not Session.get('adminSelectedUser') and RocketChat.authz.hasAtLeastOnePermission('add-user'))
return (Template.instance().id and RocketChat.authz.hasAtLeastOnePermission('edit-other-user-info')) or (not Template.instance().id and RocketChat.authz.hasAtLeastOnePermission('add-user'))
user: ->
return Meteor.users.findOne(Session.get('adminSelectedUser'))
return Meteor.users.findOne(Template.instance().id)
Template.adminUserEdit.events
'click .cancel': (e, t) ->
@ -17,11 +17,19 @@ Template.adminUserEdit.events
t.save()
Template.adminUserEdit.onCreated ->
@id = this.data
@cancel = =>
RocketChat.TabBar.setTemplate 'adminUserInfo'
if @id
RocketChat.TabBar.setTemplate 'adminUserInfo'
RocketChat.TabBar.setData Meteor.users.findOne(@id)
RocketChat.TabBar.showGroup 'adminusers-selected'
else
RocketChat.TabBar.closeFlex()
RocketChat.TabBar.showGroup 'adminusers'
@getUserData = =>
userData = { _id: Session.get('adminSelectedUser') }
userData = { _id: @id }
userData.name = s.trim(this.$("#name").val())
userData.username = s.trim(this.$("#username").val())
userData.email = s.trim(this.$("#email").val())
@ -54,10 +62,11 @@ Template.adminUserEdit.onCreated ->
toastr.success t('User_updated_successfully')
else
toastr.success t('User_added_successfully')
Session.set('adminSelectedUser', result);
Session.set('showUserInfo', result);
Meteor.subscribe 'fullUserData', userData.username, 1
@id = result
Meteor.subscribe 'fullUserData', userData.username, 1, =>
Session.set 'showUserInfo', @id
this.cancel()
this.cancel()
if error
toastr.error error.reason

@ -20,6 +20,10 @@ Template.adminUserInfo.helpers
return "UTC #{@utcOffset}"
hasAdminRole: ->
return RocketChat.authz.hasRole(@_id, 'admin')
active: ->
if @_id
user = Meteor.users.findOne(@_id)
return user && user.active
Template.adminUserInfo.events
'click .deactivate': (e) ->
@ -83,10 +87,15 @@ Template.adminUserInfo.events
Meteor.call 'deleteUser', _id, (error, result) ->
if error
toastr.error error.reason
Session.set 'adminSelectedUser'
RocketChat.TabBar.setData()
RocketChat.TabBar.closeFlex()
RocketChat.TabBar.showGroup 'adminusers'
Session.set 'showUserInfo'
'click .edit-user': (e) ->
e.stopPropagation()
e.preventDefault()
RocketChat.TabBar.setTemplate 'adminUserEdit'
RocketChat.TabBar.setData Template.currentData()._id

@ -3,29 +3,16 @@ Template.adminUsers.helpers
return Template.instance().ready?.get()
users: ->
return Template.instance().users()
flexOpened: ->
return 'opened' if RocketChat.TabBar.isFlexOpen()
arrowPosition: ->
return 'left' unless RocketChat.TabBar.isFlexOpen()
userData: ->
return Meteor.users.findOne Session.get 'adminSelectedUser'
isLoading: ->
return 'btn-loading' unless Template.instance().ready?.get()
hasMore: ->
return Template.instance().limit?.get() is Template.instance().users?().length
flexTemplate: ->
return RocketChat.TabBar.getTemplate()
flexData: ->
return RocketChat.TabBar.getData()
adminClass: ->
return 'admin' if RocketChat.authz.hasRole(Meteor.userId(), 'admin')
username: ->
return '@' + @username if @username?
emailAddress: ->
return _.map(@emails, (e) -> e.address).join(', ')
@ -51,8 +38,7 @@ Template.adminUsers.onCreated ->
icon: 'icon-plus',
template: 'adminUserEdit',
openClick: (e, t) ->
Session.set('adminSelectedUser')
Session.set('showUserInfo')
RocketChat.TabBar.setData()
return true
order: 2
})
@ -72,17 +58,6 @@ Template.adminUsers.onCreated ->
subscription = instance.subscribe 'fullUserData', filter, limit
instance.ready.set subscription.ready()
@autorun ->
if Session.get 'adminSelectedUser'
instance.subscribe 'fullUserData', Session.get('adminSelectedUser'), 1
Session.set 'showUserInfo', Session.get('adminSelectedUser')
RocketChat.TabBar.setData Meteor.users.findOne Session.get 'adminSelectedUser'
RocketChat.TabBar.showGroup 'adminusers-selected'
else
RocketChat.TabBar.showGroup 'adminusers'
@users = ->
filter = _.trim instance.filter?.get()
if filter
@ -117,10 +92,11 @@ Template.adminUsers.events
'click .user-info': (e) ->
e.preventDefault()
Session.set 'adminSelectedUser', @_id
Session.set 'showUserInfo', Meteor.users.findOne(@_id)?.username
Session.set 'showUserInfo', @_id
RocketChat.TabBar.setTemplate 'adminUserInfo'
RocketChat.TabBar.setData Meteor.users.findOne @_id
RocketChat.TabBar.openFlex()
RocketChat.TabBar.showGroup 'adminusers-selected'
'click .info-tabs a': (e) ->
e.preventDefault()

Loading…
Cancel
Save