Merge pull request #3822 from fantasticfears/routes

FIX: Add user id in the admin user routes
This commit is contained in:
Régis Hanol 2016-02-09 15:41:28 +01:00
commit f3ec2ac61e
9 changed files with 16 additions and 17 deletions

View File

@ -402,7 +402,7 @@ const AdminUser = Discourse.User.extend({
} }
} }
}).catch(function() { }).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")); 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); } 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.setProperties(result);
user.set('loadedDetails', true); user.set('loadedDetails', true);
}); });
@ -533,8 +533,8 @@ AdminUser.reopenClass({
}); });
}, },
find(username) { find(user_id) {
return Discourse.ajax("/admin/users/" + username + ".json").then(function (result) { return Discourse.ajax("/admin/users/" + user_id + ".json").then(result => {
result.loadedDetails = true; result.loadedDetails = true;
return AdminUser.create(result); return AdminUser.create(result);
}); });

View File

@ -62,7 +62,7 @@ export default {
}); });
this.resource('adminUsers', { path: '/users' }, function() { 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('badges');
this.route('tl3Requirements', { path: '/tl3_requirements' }); this.route('tl3Requirements', { path: '/tl3_requirements' });
}); });

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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