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

Add required fields to API users().insert (#2593)

This commit is contained in:
Pavlo Tkach
2024-10-17 15:45:12 -04:00
committed by GitHub
parent 634202c0e9
commit 91e241374d
4 changed files with 24 additions and 5 deletions

View File

@@ -1,5 +1,5 @@
<app-selected-registrar-wrapper> <app-selected-registrar-wrapper>
@if (usersService.isLoaded) { @if (!isLoading) {
<div class="console-app__users"> <div class="console-app__users">
<div class="console-app__users-header"> <div class="console-app__users-header">
<h1 class="mat-headline-4">Users</h1> <h1 class="mat-headline-4">Users</h1>
@@ -10,7 +10,7 @@
aria-label="Create new user" aria-label="Create new user"
color="primary" color="primary"
> >
Create New User Create a Viewer User
</button> </button>
</div> </div>
<mat-table <mat-table

View File

@@ -24,6 +24,14 @@ import { RegistrarService } from '../registrar/registrar.service';
import { SnackBarModule } from '../snackbar.module'; import { SnackBarModule } from '../snackbar.module';
import { User, UsersService } from './users.service'; import { User, UsersService } from './users.service';
const roleToDescription = (role: String) => {
if (!role) return 'N/A';
else if (role.toLowerCase().startsWith('account_manager')) {
return 'Viewer';
}
return 'Editor';
};
export const columns = [ export const columns = [
{ {
columnDef: 'emailAddress', columnDef: 'emailAddress',
@@ -33,7 +41,7 @@ export const columns = [
{ {
columnDef: 'role', columnDef: 'role',
header: 'User role', header: 'User role',
cell: (record: User) => `${record.role || ''}`, cell: (record: User) => `${roleToDescription(record.role)}`,
}, },
]; ];
@@ -54,6 +62,7 @@ export class UsersComponent {
dataSource: MatTableDataSource<User>; dataSource: MatTableDataSource<User>;
columns = columns; columns = columns;
displayedColumns = this.columns.map((c) => c.columnDef); displayedColumns = this.columns.map((c) => c.columnDef);
isLoading = false;
@ViewChild(MatSort) sort!: MatSort; @ViewChild(MatSort) sort!: MatSort;
@@ -79,14 +88,19 @@ export class UsersComponent {
} }
loadUsers() { loadUsers() {
this.isLoading = true;
this.usersService.fetchUsers().subscribe({ this.usersService.fetchUsers().subscribe({
error: (err: HttpErrorResponse) => { error: (err: HttpErrorResponse) => {
this._snackBar.open(err.error || err.message); this._snackBar.open(err.error || err.message);
}, },
complete: () => {
this.isLoading = false;
},
}); });
} }
createNewUser() { createNewUser() {
this.isLoading = true;
this.usersService.createNewUser().subscribe({ this.usersService.createNewUser().subscribe({
next: (newUser) => { next: (newUser) => {
this._snackBar.open( this._snackBar.open(
@@ -100,6 +114,9 @@ export class UsersComponent {
error: (err: HttpErrorResponse) => { error: (err: HttpErrorResponse) => {
this._snackBar.open(err.error || err.message); this._snackBar.open(err.error || err.message);
}, },
complete: () => {
this.isLoading = false;
},
}); });
} }
} }

View File

@@ -29,7 +29,6 @@ export interface User {
@Injectable() @Injectable()
export class UsersService { export class UsersService {
isLoaded = false;
users = signal<User[]>([]); users = signal<User[]>([]);
constructor( constructor(
@@ -42,7 +41,6 @@ export class UsersService {
.getUsers(this.registrarService.registrarId()) .getUsers(this.registrarService.registrarId())
.pipe( .pipe(
tap((users: User[]) => { tap((users: User[]) => {
this.isLoaded = true;
this.users.set(users); this.users.set(users);
}) })
); );

View File

@@ -24,6 +24,7 @@ import static jakarta.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
import static jakarta.servlet.http.HttpServletResponse.SC_OK; import static jakarta.servlet.http.HttpServletResponse.SC_OK;
import com.google.api.services.directory.Directory; 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.base.Splitter;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
@@ -124,6 +125,9 @@ public class ConsoleUsersAction extends ConsoleApiAction {
com.google.api.services.directory.model.User newUser = com.google.api.services.directory.model.User newUser =
new com.google.api.services.directory.model.User(); new com.google.api.services.directory.model.User();
newUser.setName(
new UserName().setFamilyName(registrarId).setGivenName("User" + nextAvailableIncrement));
newUser.setPassword(passwordGenerator.createString(PASSWORD_LENGTH)); newUser.setPassword(passwordGenerator.createString(PASSWORD_LENGTH));
newUser.setPrimaryEmail(generateNewEmailAddress(user, nextAvailableIncrement)); newUser.setPrimaryEmail(generateNewEmailAddress(user, nextAvailableIncrement));