1
0
mirror of https://github.com/google/nomulus synced 2025-12-23 14:25:44 +00:00

Allow updating icannReferralEmail through the new console ui (#2525)

This commit is contained in:
Pavlo Tkach
2024-08-07 12:28:08 -04:00
committed by GitHub
parent 06da6a2cc6
commit 2d1260c01b
4 changed files with 31 additions and 2 deletions

View File

@@ -132,6 +132,18 @@
/> />
</mat-form-field> </mat-form-field>
@if((userDataService.userData()?.globalRole || 'NONE') !== "NONE") {
<mat-form-field appearance="outline">
<mat-label>ICANN Referral Email: </mat-label>
<input
matInput
type="text"
[(ngModel)]="registrarInEdit.icannReferralEmail"
[ngModelOptions]="{ standalone: true }"
/>
</mat-form-field>
}
<button mat-flat-button color="primary" type="submit">Save</button> <button mat-flat-button color="primary" type="submit">Save</button>
</form> </form>
</div> </div>

View File

@@ -19,6 +19,7 @@ import {
Registrar, Registrar,
RegistrarService, RegistrarService,
} from 'src/app/registrar/registrar.service'; } from 'src/app/registrar/registrar.service';
import { UserDataService } from 'src/app/shared/services/userData.service';
import { WhoisService } from './whois.service'; import { WhoisService } from './whois.service';
@Component({ @Component({
@@ -30,6 +31,7 @@ export default class WhoisEditComponent {
registrarInEdit: Registrar | undefined; registrarInEdit: Registrar | undefined;
constructor( constructor(
public userDataService: UserDataService,
public whoisService: WhoisService, public whoisService: WhoisService,
public registrarService: RegistrarService, public registrarService: RegistrarService,
private _snackBar: MatSnackBar private _snackBar: MatSnackBar

View File

@@ -17,6 +17,7 @@ package google.registry.ui.server.console.settings;
import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkArgument;
import static google.registry.persistence.transaction.TransactionManagerFactory.tm; import static google.registry.persistence.transaction.TransactionManagerFactory.tm;
import static google.registry.request.Action.Method.POST; 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_FORBIDDEN;
import static jakarta.servlet.http.HttpServletResponse.SC_OK; 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.request.auth.AuthenticatedRegistrarAccessor.RegistrarAccessDeniedException;
import google.registry.ui.server.console.ConsoleApiAction; import google.registry.ui.server.console.ConsoleApiAction;
import google.registry.ui.server.registrar.ConsoleApiParams; import google.registry.ui.server.registrar.ConsoleApiParams;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import javax.inject.Inject; import javax.inject.Inject;
@@ -65,10 +67,10 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
checkArgument(registrar.isPresent(), "'registrar' parameter is not present"); checkArgument(registrar.isPresent(), "'registrar' parameter is not present");
checkPermission( checkPermission(
user, registrar.get().getRegistrarId(), ConsolePermission.EDIT_REGISTRAR_DETAILS); 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; Registrar savedRegistrar;
try { try {
// reload to make sure the object has all the correct fields // reload to make sure the object has all the correct fields
@@ -78,6 +80,15 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
return; 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 = Registrar newRegistrar =
savedRegistrar savedRegistrar
.asBuilder() .asBuilder()
@@ -86,6 +97,8 @@ public class WhoisRegistrarFieldsAction extends ConsoleApiAction {
.setLocalizedAddress(providedRegistrar.getLocalizedAddress()) .setLocalizedAddress(providedRegistrar.getLocalizedAddress())
.setPhoneNumber(providedRegistrar.getPhoneNumber()) .setPhoneNumber(providedRegistrar.getPhoneNumber())
.setFaxNumber(providedRegistrar.getFaxNumber()) .setFaxNumber(providedRegistrar.getFaxNumber())
.setIcannReferralEmail(providedRegistrar.getIcannReferralEmail())
.setEmailAddress(providedRegistrar.getEmailAddress())
.build(); .build();
tm().put(newRegistrar); tm().put(newRegistrar);
sendExternalUpdatesIfNecessary( sendExternalUpdatesIfNecessary(

View File

@@ -104,6 +104,8 @@ public class WhoisRegistrarFieldsActionTest {
ImmutableMap.of( ImmutableMap.of(
"whoisServer", "whoisServer",
"whois.nic.google", "whois.nic.google",
"icannReferralEmail",
"lol@sloth.test",
"phoneNumber", "phoneNumber",
"+1.4155552671", "+1.4155552671",
"faxNumber", "faxNumber",