From 2d1260c01bb2956b6b39138b8b6913196083a3d1 Mon Sep 17 00:00:00 2001
From: Pavlo Tkach <3469726+ptkach@users.noreply.github.com>
Date: Wed, 7 Aug 2024 12:28:08 -0400
Subject: [PATCH] Allow updating icannReferralEmail through the new console ui
(#2525)
---
.../app/settings/whois/whoisEdit.component.html | 12 ++++++++++++
.../app/settings/whois/whoisEdit.component.ts | 2 ++
.../settings/WhoisRegistrarFieldsAction.java | 17 +++++++++++++++--
.../WhoisRegistrarFieldsActionTest.java | 2 ++
4 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/console-webapp/src/app/settings/whois/whoisEdit.component.html b/console-webapp/src/app/settings/whois/whoisEdit.component.html
index fa78dcafe..32cdb3f8f 100644
--- a/console-webapp/src/app/settings/whois/whoisEdit.component.html
+++ b/console-webapp/src/app/settings/whois/whoisEdit.component.html
@@ -132,6 +132,18 @@
/>
+ @if((userDataService.userData()?.globalRole || 'NONE') !== "NONE") {
+
+ ICANN Referral Email:
+
+
+ }
+
diff --git a/console-webapp/src/app/settings/whois/whoisEdit.component.ts b/console-webapp/src/app/settings/whois/whoisEdit.component.ts
index 2f3d425ed..9e7870a21 100644
--- a/console-webapp/src/app/settings/whois/whoisEdit.component.ts
+++ b/console-webapp/src/app/settings/whois/whoisEdit.component.ts
@@ -19,6 +19,7 @@ import {
Registrar,
RegistrarService,
} from 'src/app/registrar/registrar.service';
+import { UserDataService } from 'src/app/shared/services/userData.service';
import { WhoisService } from './whois.service';
@Component({
@@ -30,6 +31,7 @@ export default class WhoisEditComponent {
registrarInEdit: Registrar | undefined;
constructor(
+ public userDataService: UserDataService,
public whoisService: WhoisService,
public registrarService: RegistrarService,
private _snackBar: MatSnackBar
diff --git a/core/src/main/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsAction.java b/core/src/main/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsAction.java
index a08e90707..0e45c3fd9 100644
--- a/core/src/main/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsAction.java
+++ b/core/src/main/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsAction.java
@@ -17,6 +17,7 @@ package google.registry.ui.server.console.settings;
import static com.google.common.base.Preconditions.checkArgument;
import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
import static google.registry.request.Action.Method.POST;
+import static jakarta.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
import static jakarta.servlet.http.HttpServletResponse.SC_FORBIDDEN;
import static jakarta.servlet.http.HttpServletResponse.SC_OK;
@@ -30,6 +31,7 @@ import google.registry.request.auth.AuthenticatedRegistrarAccessor;
import google.registry.request.auth.AuthenticatedRegistrarAccessor.RegistrarAccessDeniedException;
import google.registry.ui.server.console.ConsoleApiAction;
import google.registry.ui.server.registrar.ConsoleApiParams;
+import java.util.Objects;
import java.util.Optional;
import javax.inject.Inject;
@@ -65,10 +67,10 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
checkArgument(registrar.isPresent(), "'registrar' parameter is not present");
checkPermission(
user, registrar.get().getRegistrarId(), ConsolePermission.EDIT_REGISTRAR_DETAILS);
- tm().transact(() -> loadAndModifyRegistrar(registrar.get()));
+ tm().transact(() -> loadAndModifyRegistrar(registrar.get(), user));
}
- private void loadAndModifyRegistrar(Registrar providedRegistrar) {
+ private void loadAndModifyRegistrar(Registrar providedRegistrar, User user) {
Registrar savedRegistrar;
try {
// reload to make sure the object has all the correct fields
@@ -78,6 +80,15 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
return;
}
+ // icannReferralEmail can't be updated by partners, only by global users with
+ // EDIT_REGISTRAR_DETAILS permission
+ if (!Objects.equals(
+ savedRegistrar.getIcannReferralEmail(), providedRegistrar.getIcannReferralEmail())
+ && !user.getUserRoles().hasGlobalPermission(ConsolePermission.EDIT_REGISTRAR_DETAILS)) {
+ setFailedResponse(
+ "Icann Referral Email update is not permitted for this user", SC_BAD_REQUEST);
+ }
+
Registrar newRegistrar =
savedRegistrar
.asBuilder()
@@ -86,6 +97,8 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
.setLocalizedAddress(providedRegistrar.getLocalizedAddress())
.setPhoneNumber(providedRegistrar.getPhoneNumber())
.setFaxNumber(providedRegistrar.getFaxNumber())
+ .setIcannReferralEmail(providedRegistrar.getIcannReferralEmail())
+ .setEmailAddress(providedRegistrar.getEmailAddress())
.build();
tm().put(newRegistrar);
sendExternalUpdatesIfNecessary(
diff --git a/core/src/test/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsActionTest.java b/core/src/test/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsActionTest.java
index a21072a9a..d276723ca 100644
--- a/core/src/test/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsActionTest.java
+++ b/core/src/test/java/google/registry/ui/server/console/settings/WhoisRegistrarFieldsActionTest.java
@@ -104,6 +104,8 @@ public class WhoisRegistrarFieldsActionTest {
ImmutableMap.of(
"whoisServer",
"whois.nic.google",
+ "icannReferralEmail",
+ "lol@sloth.test",
"phoneNumber",
"+1.4155552671",
"faxNumber",