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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
})
|
||||
);
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user