Skip to content

Commit 6764d31

Browse files
Merge pull request #7059 from rabbitmq/mergify/bp/v3.11.x/pr-6990
2 parents 19d7f87 + 00c2ed7 commit 6764d31

File tree

9 files changed

+59
-22
lines changed

9 files changed

+59
-22
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
*~
22
.sw?
3+
*.tmp
34
.*.sw?
45
/.erlang.mk/
56
/_build/

deps/rabbitmq_management/priv/www/js/dispatcher.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ dispatcher_add(function(sammy) {
194194
return false;
195195
});
196196

197-
path('#/users', {'users': {path: '/users',
198-
options: {sort:true}},
199-
'permissions': '/permissions'}, 'users');
197+
sammy.get('#/users', function() {
198+
renderUsers();
199+
});
200200
sammy.get('#/users/:id', function() {
201201
var vhosts = JSON.parse(sync_get('/vhosts'));
202202
const current_vhost = get_pref('vhost');

deps/rabbitmq_management/priv/www/js/main.js

+11
Original file line numberDiff line numberDiff line change
@@ -778,6 +778,7 @@ function update_pages(template, page_start){
778778
case 'exchanges' : renderExchanges(); break;
779779
case 'connections' : renderConnections(); break;
780780
case 'channels' : renderChannels(); break;
781+
case 'users' : renderUsers(); break;
781782
default:
782783
renderCallback = RENDER_CALLBACKS[template];
783784
if (renderCallback != undefined) {
@@ -799,6 +800,16 @@ function renderQueues() {
799800
}, 'vhosts': '/vhosts'}, 'queues', '#/queues');
800801
}
801802

803+
function renderUsers() {
804+
render({'users': {path: url_pagination_template('users', 1, 100),
805+
options: {
806+
sort: true,
807+
pagination: true
808+
}
809+
},
810+
'permissions': '/permissions'}, 'users', '#/users');
811+
}
812+
802813
function renderExchanges() {
803814
render({'exchanges': {path: url_pagination_template('exchanges', 1, 100),
804815
options: {sort:true, vhost:true, pagination:true}},

deps/rabbitmq_management/priv/www/js/tmpl/limits.ejs

+3-3
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@
146146
<th><label>User:</label></th>
147147
<td>
148148
<select name="user">
149-
<% for (var i = 0; i < users.length; i++) { %>
150-
<option value="<%= fmt_string(users[i].name) %>">
151-
<%= fmt_string(users[i].name) %>
149+
<% for (var i = 0; i < users.items.length; i++) { %>
150+
<option value="<%= fmt_string(users.items[i].name) %>">
151+
<%= fmt_string(users.items[i].name) %>
152152
</option>
153153
<% } %>
154154
</select>

deps/rabbitmq_management/priv/www/js/tmpl/permissions.ejs

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ for (var i = 0; i < permissions.length; i++) {
5555
<td>
5656
<input type="hidden" name="vhost" value="<%= fmt_string(parent.name) %>"/>
5757
<select name="username">
58-
<% for (var i = 0; i < users.length; i++) { %>
59-
<option value="<%= fmt_string(users[i].name) %>"><%= fmt_string(users[i].name) %></option>
58+
<% for (var i = 0; i < users.items.length; i++) { %>
59+
<option value="<%= fmt_string(users.items[i].name) %>"><%= fmt_string(users.items[i].name) %></option>
6060
<% } %>
6161
</select>
6262
</td>

deps/rabbitmq_management/priv/www/js/tmpl/topic-permissions.ejs

+2-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ for (var i = 0; i < topic_permissions.length; i++) {
5656
<td>
5757
<input type="hidden" name="vhost" value="<%= fmt_string(parent.name) %>"/>
5858
<select name="username">
59-
<% for (var i = 0; i < users.length; i++) { %>
60-
<option value="<%= fmt_string(users[i].name) %>"><%= fmt_string(users[i].name) %></option>
59+
<% for (var i = 0; i < users.items.length; i++) { %>
60+
<option value="<%= fmt_string(users.items[i].name) %>"><%= fmt_string(users.items[i].name) %></option>
6161
<% } %>
6262
</select>
6363
</td>

deps/rabbitmq_management/priv/www/js/tmpl/users.ejs

+7-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
<h1>Users</h1>
2-
<div class="section" id="users-section">
3-
<h2>All users</h2>
4-
<div class="hider">
5-
<%= filter_ui(users) %>
6-
<div class="updatable">
7-
<% if (users.length > 0) { %>
2+
<div class="section">
3+
<%= paginate_ui(users, 'users') %>
4+
</div>
5+
<div class="updatable">
6+
<% if (users.items.length > 0) { %>
87
<table class="list">
98
<thead>
109
<tr>
@@ -16,8 +15,8 @@
1615
</thead>
1716
<tbody>
1817
<%
19-
for (var i = 0; i < users.length; i++) {
20-
var user = users[i];
18+
for (var i = 0; i < users.items.length; i++) {
19+
var user = users.items[i];
2120
%>
2221
<tr<%= alt_rows(i)%>>
2322
<td><%= link_user(user.name) %></td>

deps/rabbitmq_management/selenium/test/pageobjects/AdminTab.js

+7-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const OverviewPage = require('./OverviewPage')
44

55
const ALL_USERS_SECTION = By.css('div#users-section')
66
const USER_LINK = By.css('div#menu ul#tabs li a[href="#/connections"]')
7-
const FILTER_USER = By.css('input#filter')
7+
const FILTER_USER = By.css('input#users-name')
88
const CHECKBOX_REGEX = By.css('input#filter-regex-mode')
99
const FILTERED_USER = By.css('span.filter-highlight')
1010

@@ -14,13 +14,17 @@ module.exports = class AdminTab extends OverviewPage {
1414
}
1515

1616
async searchForUser(user, regex = false) {
17+
18+
var filtered_user = By.css('a[href="#/users/' + user + '"]')
19+
1720
await this.sendKeys(FILTER_USER, user)
21+
await this.sendKeys(FILTER_USER, Key.RETURN)
1822
if (regex) {
1923
await this.click(CHECKBOX_REGEX)
2024
}
2125
await this.driver.sleep(250)
22-
await this.waitForDisplayed(FILTERED_USER)
23-
return await this.driver.findElement(FILTERED_USER) != undefined
26+
await this.waitForDisplayed(filtered_user)
27+
return await this.driver.findElement(filtered_user) != undefined
2428
}
2529

2630
}

deps/rabbitmq_management/src/rabbit_mgmt_wm_users.erl

+23-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@
1818
-include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl").
1919
-include_lib("rabbit_common/include/rabbit.hrl").
2020

21+
-define(BASIC_COLUMNS, ["hashing_algorithm",
22+
"rabbit_password_hashing_sha256",
23+
"limits",
24+
"name",
25+
"password_hash",
26+
"tags"]).
27+
28+
-define(DEFAULT_SORT, ["name"]).
29+
2130
%%--------------------------------------------------------------------
2231

2332
init(Req, [Mode]) ->
@@ -33,7 +42,17 @@ allowed_methods(ReqData, Context) ->
3342
{[<<"HEAD">>, <<"GET">>, <<"OPTIONS">>], ReqData, Context}.
3443

3544
to_json(ReqData, {Mode, Context}) ->
36-
rabbit_mgmt_util:reply_list(users(Mode), ReqData, Context).
45+
try
46+
Basic = users(Mode),
47+
Data = rabbit_mgmt_util:augment_resources(Basic, ?DEFAULT_SORT,
48+
?BASIC_COLUMNS, ReqData,
49+
Context, fun augment/2),
50+
rabbit_mgmt_util:reply(Data, ReqData, Context)
51+
catch
52+
{error, invalid_range_parameters, Reason} ->
53+
rabbit_mgmt_util:bad_request(iolist_to_binary(Reason), ReqData,
54+
Context)
55+
end.
3756

3857
is_authorized(ReqData, {Mode, Context}) ->
3958
{Res, Req2, Context2} = rabbit_mgmt_util:is_authorized_admin(ReqData, Context),
@@ -57,3 +76,6 @@ users(without_permissions) ->
5776
Acc
5877
end
5978
end, [], rabbit_auth_backend_internal:list_users()).
79+
80+
augment(Basic, _ReqData) ->
81+
Basic.

0 commit comments

Comments
 (0)