FIX: Prepend the user id before username in admin user routes

This commit is contained in:
Erick Guan 2015-09-26 15:56:36 +02:00
parent b2ffaa0822
commit 35142847ba
9 changed files with 16 additions and 17 deletions

View File

@ -402,7 +402,7 @@ const AdminUser = Discourse.User.extend({
}
}
}).catch(function() {
AdminUser.find( user.get('username') ).then(function(u){ user.setProperties(u); });
AdminUser.find(user.get('id')).then(u => user.setProperties(u));
bootbox.alert(I18n.t("admin.user.delete_failed"));
});
};
@ -475,7 +475,7 @@ const AdminUser = Discourse.User.extend({
if (user.get('loadedDetails')) { return Ember.RSVP.resolve(user); }
return AdminUser.find(user.get('username_lower')).then(function (result) {
return AdminUser.find(user.get('id')).then(result => {
user.setProperties(result);
user.set('loadedDetails', true);
});
@ -533,8 +533,8 @@ AdminUser.reopenClass({
});
},
find(username) {
return Discourse.ajax("/admin/users/" + username + ".json").then(function (result) {
find(user_id) {
return Discourse.ajax("/admin/users/" + user_id + ".json").then(result => {
result.loadedDetails = true;
return AdminUser.create(result);
});

View File

@ -62,7 +62,7 @@ export default {
});
this.resource('adminUsers', { path: '/users' }, function() {
this.resource('adminUser', { path: '/:username' }, function() {
this.resource('adminUser', { path: '/:user_id/:username' }, function() {
this.route('badges');
this.route('tl3Requirements', { path: '/tl3_requirements' });
});

View File

@ -2,11 +2,11 @@ import AdminUser from 'admin/models/admin-user';
export default Discourse.Route.extend({
serialize(model) {
return { username: model.get('username').toLowerCase() };
return { user_id: model.get('id'), username: model.get('username').toLowerCase() };
},
model(params) {
return AdminUser.find(Em.get(params, 'username').toLowerCase());
return AdminUser.find(Em.get(params, 'user_id'));
},
renderTemplate() {

View File

@ -141,8 +141,7 @@ export default Ember.Controller.extend(ModalFunctionality, {
fetchUserDetails() {
if (Discourse.User.currentProp('staff') && this.get('model.username')) {
const AdminUser = require('admin/models/admin-user').default;
AdminUser.find(this.get('model.username').toLowerCase())
.then(user => this.set('userDetails', user));
AdminUser.find(this.get('model.id')).then(user => this.set('userDetails', user));
}
}

View File

@ -84,8 +84,7 @@ export default Ember.Controller.extend(CanCheckEmails, {
adminDelete() {
// I really want this deferred, don't want to bring in all this code till used
const AdminUser = require('admin/models/admin-user').default;
AdminUser.find(this.get('model.username').toLowerCase())
.then(user => user.destroy({deletePosts: true}));
AdminUser.find(this.get('model.id')).then(user => user.destroy({deletePosts: true}));
},
}

View File

@ -90,7 +90,7 @@ const User = RestModel.extend({
},
adminPath: url('username_lower', "/admin/users/%@"),
adminPath: url('id', 'username_lower', "/admin/users/%@1/%@2"),
mutedTopicsPath: url('/latest?state=muted'),

View File

@ -37,7 +37,7 @@ class Admin::UsersController < Admin::AdminController
end
def show
@user = User.find_by(username_lower: params[:id])
@user = User.find_by(id: params[:id])
raise Discourse::NotFound unless @user
render_serialized(@user, AdminDetailedUserSerializer, root: false)
end

View File

@ -73,8 +73,7 @@ Discourse::Application.routes.draw do
get "groups/:type" => "groups#show", constraints: AdminConstraint.new
get "groups/:type/:id" => "groups#show", constraints: AdminConstraint.new
get "users/:id.json" => 'users#show' , id: USERNAME_ROUTE_FORMAT, defaults: {format: 'json'}
resources :users, id: USERNAME_ROUTE_FORMAT do
resources :users, id: USERNAME_ROUTE_FORMAT, except: [:show] do
collection do
get "list/:query" => "users#index"
get "ip-info" => "users#ip_info"
@ -109,6 +108,8 @@ Discourse::Application.routes.draw do
get "tl3_requirements"
put "anonymize"
end
get "users/:id.json" => 'users#show', defaults: {format: 'json'}
get 'users/:id/:username' => 'users#show'
post "users/sync_sso" => "users#sync_sso", constraints: AdminConstraint.new

View File

@ -47,14 +47,14 @@ describe Admin::UsersController do
describe '.show' do
context 'an existing user' do
it 'returns success' do
xhr :get, :show, id: @user.username
xhr :get, :show, id: @user.id
expect(response).to be_success
end
end
context 'an existing user' do
it 'returns success' do
xhr :get, :show, id: 'foobar'
xhr :get, :show, id: 0
expect(response).not_to be_success
end
end