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