diff --git a/console-webapp/src/app/users/users.component.html b/console-webapp/src/app/users/users.component.html index 226a51587..41f67c60a 100644 --- a/console-webapp/src/app/users/users.component.html +++ b/console-webapp/src/app/users/users.component.html @@ -1,5 +1,5 @@ - @if (usersService.isLoaded) { + @if (!isLoading) {

Users

@@ -10,7 +10,7 @@ aria-label="Create new user" color="primary" > - Create New User + Create a Viewer User
{ + if (!role) return 'N/A'; + else if (role.toLowerCase().startsWith('account_manager')) { + return 'Viewer'; + } + return 'Editor'; +}; + export const columns = [ { columnDef: 'emailAddress', @@ -33,7 +41,7 @@ export const columns = [ { columnDef: 'role', header: 'User role', - cell: (record: User) => `${record.role || ''}`, + cell: (record: User) => `${roleToDescription(record.role)}`, }, ]; @@ -54,6 +62,7 @@ export class UsersComponent { dataSource: MatTableDataSource; columns = columns; displayedColumns = this.columns.map((c) => c.columnDef); + isLoading = false; @ViewChild(MatSort) sort!: MatSort; @@ -79,14 +88,19 @@ export class UsersComponent { } loadUsers() { + this.isLoading = true; this.usersService.fetchUsers().subscribe({ error: (err: HttpErrorResponse) => { this._snackBar.open(err.error || err.message); }, + complete: () => { + this.isLoading = false; + }, }); } createNewUser() { + this.isLoading = true; this.usersService.createNewUser().subscribe({ next: (newUser) => { this._snackBar.open( @@ -100,6 +114,9 @@ export class UsersComponent { error: (err: HttpErrorResponse) => { this._snackBar.open(err.error || err.message); }, + complete: () => { + this.isLoading = false; + }, }); } } diff --git a/console-webapp/src/app/users/users.service.ts b/console-webapp/src/app/users/users.service.ts index e1b2e488b..06ee32399 100644 --- a/console-webapp/src/app/users/users.service.ts +++ b/console-webapp/src/app/users/users.service.ts @@ -29,7 +29,6 @@ export interface User { @Injectable() export class UsersService { - isLoaded = false; users = signal([]); constructor( @@ -42,7 +41,6 @@ export class UsersService { .getUsers(this.registrarService.registrarId()) .pipe( tap((users: User[]) => { - this.isLoaded = true; this.users.set(users); }) ); diff --git a/core/src/main/java/google/registry/ui/server/console/ConsoleUsersAction.java b/core/src/main/java/google/registry/ui/server/console/ConsoleUsersAction.java index 3e3782fa0..9d88ec854 100644 --- a/core/src/main/java/google/registry/ui/server/console/ConsoleUsersAction.java +++ b/core/src/main/java/google/registry/ui/server/console/ConsoleUsersAction.java @@ -24,6 +24,7 @@ import static jakarta.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; import static jakarta.servlet.http.HttpServletResponse.SC_OK; import com.google.api.services.directory.Directory; +import com.google.api.services.directory.model.UserName; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -124,6 +125,9 @@ public class ConsoleUsersAction extends ConsoleApiAction { com.google.api.services.directory.model.User newUser = new com.google.api.services.directory.model.User(); + + newUser.setName( + new UserName().setFamilyName(registrarId).setGivenName("User" + nextAvailableIncrement)); newUser.setPassword(passwordGenerator.createString(PASSWORD_LENGTH)); newUser.setPrimaryEmail(generateNewEmailAddress(user, nextAvailableIncrement));