Skip to content

Commit 35501f6

Browse files
authored
Merge pull request #3501 from NationalSecurityAgency/t#3500/gb_role_filter
T#3500/gb role filter
2 parents ca4b453 + a6e13d5 commit 35501f6

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

dashboard/src/components/badges/global/GlobalBadgePage.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ const goLive = (editedBadge) => {
9191
};
9292
const badgeEdited = (editedBadge) => {
9393
const origId = badge.value.badgeId;
94-
badgeState.loadGlobalBadgeDetailsState(badgeId.value).finally(() => {
94+
badgeState.loadGlobalBadgeDetailsState(editedBadge.badgeId).finally(() => {
9595
badge.value = badgeState.badge;
9696
if (origId !== editedBadge.badgeId) {
9797
badgeId.value = editedBadge.badgeId;

service/src/main/java/skills/auth/AuthUtils.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class AuthUtils {
2929
static final Pattern QUIZ_ID_PATTERN = Pattern.compile("^/admin/quiz-definitions/([^/]+).*\$")
3030
static final Pattern ADMIN_GROUP_ID_PATTERN = Pattern.compile("^/admin/admin-group-definitions/([^/]+).*\$")
3131
static final Pattern QUIZ_ID_PATTERN_API = Pattern.compile("^/api/quizzes/([^/]+).*\$")
32+
static final Pattern GLOBAL_BADGE_ID_PATTERN = Pattern.compile("^/admin/badges/([^/]+).*\$")
3233

3334
// Example: /admin/projects/{projectId}/approvals/approve
3435
// Example: /admin/projects/{projectId}/approvals/reject
@@ -64,6 +65,10 @@ class AuthUtils {
6465
return this.getIdFromRequest(servletRequest, ADMIN_GROUP_ID_PATTERN, "adminGroupId")
6566
}
6667

68+
static String getGlobalBadgeIdFromRequest(HttpServletRequest servletRequest) {
69+
return this.getIdFromRequest(servletRequest, GLOBAL_BADGE_ID_PATTERN, "globalBadgeId")
70+
}
71+
6772
private static String getIdFromRequest(HttpServletRequest servletRequest, Pattern pattern, String label) {
6873
String res
6974
if (servletRequest) {

service/src/main/java/skills/auth/UserAuthService.groovy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,13 @@ class UserAuthService {
263263
shouldAddRole = true
264264
}
265265
}
266+
if (userRole.roleName == RoleName.ROLE_GLOBAL_BADGE_ADMIN) {
267+
shouldAddRole = false
268+
String globalBadgeId = AuthUtils.getGlobalBadgeIdFromRequest(servletRequest)
269+
if (globalBadgeId && userRole.globalBadgeId && globalBadgeId.equalsIgnoreCase(userRole.globalBadgeId)) {
270+
shouldAddRole = true
271+
}
272+
}
266273
return shouldAddRole
267274
}
268275

service/src/test/java/skills/intTests/badges/GlobalBadgeAccessSpecs.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ class GlobalBadgeAccessSpecs extends DefaultIntSpec {
210210
def user2Service = createService("user2")
211211

212212
when:
213+
def badge2 = createBadge(2, 2)
214+
user2Service.createGlobalBadge(badge2)
213215
user2Service.updateGlobalBadge(badge1)
214216

215217
then:

0 commit comments

Comments
 (0)