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

View File

@@ -24,6 +24,14 @@ import { RegistrarService } from '../registrar/registrar.service';
import { SnackBarModule } from '../snackbar.module';
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 = [
{
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<User>;
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;
},
});
}
}

View File

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