diff --git a/tools/cldr-apps/js/src/esm/cldrAccount.mjs b/tools/cldr-apps/js/src/esm/cldrAccount.mjs
index db78f60c6de..ea198dc4451 100644
--- a/tools/cldr-apps/js/src/esm/cldrAccount.mjs
+++ b/tools/cldr-apps/js/src/esm/cldrAccount.mjs
@@ -270,7 +270,7 @@ function getHtml(json) {
html += getOrgFilterMenu();
}
}
- if (justUser) {
+ if (justUser && canListMultipleUsers()) {
html += "
" + listMultipleUsersButton + "
\n";
}
if (!isJustMe) {
@@ -345,7 +345,9 @@ function getTableStart() {
function getTableEnd(json) {
let html = "" + "
\n";
if (justUser) {
- html += listMultipleUsersButton;
+ if (canListMultipleUsers()) {
+ html += listMultipleUsersButton;
+ }
} else {
html += numberOfUsersShown(shownUsers ? shownUsers.length : 0);
html += getEmailControls(json);
@@ -354,6 +356,10 @@ function getTableEnd(json) {
return html;
}
+function canListMultipleUsers() {
+ return !!cldrStatus.getPermissions()?.userIsManager;
+}
+
function numberOfUsersShown(number) {
return (
"Number of users shown: " + number + "
\n"
diff --git a/tools/cldr-apps/js/src/views/MainMenu.vue b/tools/cldr-apps/js/src/views/MainMenu.vue
index 4eac410cec1..f7b31d5327a 100644
--- a/tools/cldr-apps/js/src/views/MainMenu.vue
+++ b/tools/cldr-apps/js/src/views/MainMenu.vue
@@ -35,7 +35,19 @@
-
+
-
+
-
Simulate Email Notifications (SMOKETEST ONLY)
@@ -135,7 +147,7 @@ export default {
canUseVettingSummary: false,
isAdmin: false,
isTC: false,
- isUnofficial: false,
+ canSeeUnofficialEmail: false,
loggedIn: false,
org: null,
recentActivityUrl: null,
@@ -153,13 +165,13 @@ export default {
const perm = cldrStatus.getPermissions();
this.accountLocked = perm && perm.userIsLocked;
this.canImportOldVotes = perm && perm.userCanImportOldVotes;
- this.canListUsers = this.canMonitorVetting =
- perm && (perm.userIsTC || perm.userIsVetter);
+ this.canListUsers = this.canMonitorVetting = !!perm?.userIsManager;
this.canMonitorForum = perm && perm.userCanMonitorForum;
// this.canSeeStatistics will be false until there is a new implementation
this.canUseVettingSummary = perm && perm.userCanUseVettingSummary;
this.isAdmin = perm && perm.userIsAdmin;
- this.isUnofficial = cldrStatus.getIsUnofficial();
+ this.canSeeUnofficialEmail =
+ cldrStatus.getIsUnofficial() && !!perm?.userIsManager;
this.isTC = perm && perm.userIsTC;
const user = cldrStatus.getSurveyUser();
diff --git a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/SurveyAjax.java b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/SurveyAjax.java
index b743b70c393..6058e07f505 100644
--- a/tools/cldr-apps/src/main/java/org/unicode/cldr/web/SurveyAjax.java
+++ b/tools/cldr-apps/src/main/java/org/unicode/cldr/web/SurveyAjax.java
@@ -482,7 +482,7 @@ private void processRequest(
mySession.userDidAction();
SurveyJSONWrapper r = newJSONStatus(request, sm);
r.put("what", what);
- if (UserRegistry.userIsVetter(mySession.user)) {
+ if (UserRegistry.userIsManagerOrStronger(mySession.user)) {
String org = mySession.user.org;
if (UserRegistry.userCreateOtherOrgs(mySession.user)) {
org = null; // all
diff --git a/tools/cldr-apps/src/test/resources/org/unicode/cldr/web/TestUserLevel.csv b/tools/cldr-apps/src/test/resources/org/unicode/cldr/web/TestUserLevel.csv
index 320cf2f58b3..57df2c0e52e 100644
--- a/tools/cldr-apps/src/test/resources/org/unicode/cldr/web/TestUserLevel.csv
+++ b/tools/cldr-apps/src/test/resources/org/unicode/cldr/web/TestUserLevel.csv
@@ -57,7 +57,7 @@ adlam, anonymous, canImportOldVotesSUBMISSION, false, ,
adlam, admin,userCanDoList, true, ,
adlam, tc,userCanDoList, true, ,
adlam, manager,userCanDoList, true, ,
-adlam, vetter,userCanDoList, true, ,
+adlam, vetter,userCanDoList, false, ,
adlam, guest,userCanDoList, false, ,
adlam, locked,userCanDoList, false, ,
adlam, anonymous,userCanDoList, false, ,
diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/util/VoteResolver.java b/tools/cldr-code/src/main/java/org/unicode/cldr/util/VoteResolver.java
index e7f76d9c26b..b3c1d1a0839 100644
--- a/tools/cldr-code/src/main/java/org/unicode/cldr/util/VoteResolver.java
+++ b/tools/cldr-code/src/main/java/org/unicode/cldr/util/VoteResolver.java
@@ -381,7 +381,7 @@ public boolean canImportOldVotes(CheckCLDR.Phase inPhase) {
}
public boolean canDoList() {
- return isVetter();
+ return isManagerOrStronger();
}
public boolean canCreateUsers() {