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",