From fd9380a61d8510f278c74a63f1a7fa954b23d911 Mon Sep 17 00:00:00 2001 From: Jan Szumotalski Date: Mon, 5 May 2025 18:54:20 +0200 Subject: [PATCH] fix: Changed group assignment. Closes #1. --- .../account-mgmt/account-mgmt.component.ts | 9 ++-- .../user-edit/user-edit.component.html | 8 ++++ .../user-edit/user-edit.component.ts | 42 +++++++++++-------- src/app/admin-view/admin-comm.service.ts | 23 ++++++---- .../admin-view/groups/groups.component.html | 16 ------- src/app/admin-view/groups/groups.component.ts | 8 ---- .../notifications.component.html | 1 - src/app/types/group.ts | 2 - 8 files changed, 53 insertions(+), 56 deletions(-) diff --git a/src/app/admin-view/account-mgmt/account-mgmt.component.ts b/src/app/admin-view/account-mgmt/account-mgmt.component.ts index d60b872..6299b4c 100644 --- a/src/app/admin-view/account-mgmt/account-mgmt.component.ts +++ b/src/app/admin-view/account-mgmt/account-mgmt.component.ts @@ -9,6 +9,7 @@ import { UserEditComponent } from './user-edit/user-edit.component'; import { catchError, throwError } from 'rxjs'; import { UserResetComponent } from './user-reset/user-reset.component'; import { LocalStorageService } from 'src/app/services/local-storage.service'; +import { Group } from 'src/app/types/group'; @Component({ selector: 'app-account-mgmt', @@ -18,6 +19,7 @@ import { LocalStorageService } from 'src/app/services/local-storage.service'; export class AccountMgmtComponent implements OnInit, AfterViewInit { + protected groups: Group[] = [] users: MatTableDataSource loading = false @ViewChild(MatPaginator) paginator!: MatPaginator @@ -45,7 +47,8 @@ export class AccountMgmtComponent implements OnInit, AfterViewInit { this.loading = true this.ac.accs.getAccs().subscribe((data)=>{ this.loading = false - this.users.data = data + this.users.data = data.users + this.groups = data.groups }) } @@ -55,7 +58,7 @@ export class AccountMgmtComponent implements OnInit, AfterViewInit { } edit(item: any) { - this.dialog.open(UserEditComponent, {data: item}).afterClosed().subscribe(reply => { + this.dialog.open(UserEditComponent, {data: {user: item, groups: this.groups}}).afterClosed().subscribe(reply => { if (reply) { this.ac.accs.putAcc(item._id, reply).pipe(catchError((err)=>{ this.sb.open("Wystąpił błąd. Skontaktuj się z obsługą programu.") @@ -73,7 +76,7 @@ export class AccountMgmtComponent implements OnInit, AfterViewInit { } new() { - this.dialog.open(UserEditComponent).afterClosed().subscribe(reply => { + this.dialog.open(UserEditComponent, {data: {groups: this.groups}}).afterClosed().subscribe(reply => { if (reply) { this.ac.accs.postAcc(reply).pipe(catchError((err)=>{ this.sb.open("Wystąpił błąd. Skontaktuj się z obsługą programu.") diff --git a/src/app/admin-view/account-mgmt/user-edit/user-edit.component.html b/src/app/admin-view/account-mgmt/user-edit/user-edit.component.html index 125c409..0d278b4 100644 --- a/src/app/admin-view/account-mgmt/user-edit/user-edit.component.html +++ b/src/app/admin-view/account-mgmt/user-edit/user-edit.component.html @@ -15,6 +15,14 @@ Nazwa użytkownika + + Grupy + + @for (item of groups; track $index) { + {{item.name}} + } + + Uprawnienia diff --git a/src/app/admin-view/account-mgmt/user-edit/user-edit.component.ts b/src/app/admin-view/account-mgmt/user-edit/user-edit.component.ts index 37855bb..a578741 100644 --- a/src/app/admin-view/account-mgmt/user-edit/user-edit.component.ts +++ b/src/app/admin-view/account-mgmt/user-edit/user-edit.component.ts @@ -2,6 +2,7 @@ import { Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { FormControl, FormGroup } from '@angular/forms'; import { LocalStorageService } from 'src/app/services/local-storage.service'; +import { Group } from 'src/app/types/group'; @Component({ selector: 'app-user-edit', @@ -10,42 +11,49 @@ import { LocalStorageService } from 'src/app/services/local-storage.service'; }) export class UserEditComponent { form: FormGroup + groups: Group[] constructor (public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any, readonly ls: LocalStorageService) { - if (data == null) { - data = { + if (data.user == null) { + data.user = { fname: "", surname: "", - room: 0, + room: "", uname: "", + groups: [], admin: 0 } } + this.groups = data.groups var flags: Array = [] - if (data.admin) { - if ((data.admin & 1) == 1) flags.push(1) - if ((data.admin & 2) == 2) flags.push(2) - if ((data.admin & 4) == 4) flags.push(4) - if ((data.admin & 8) == 8) flags.push(8) - if ((data.admin & 16) == 16) flags.push(16) - if ((data.admin & 32) == 32) flags.push(32) - if ((data.admin & 64) == 64) flags.push(64) - if ((data.admin & 128) == 128) flags.push(128) + if (data.user.admin) { + if ((data.user.admin & 1) == 1) flags.push(1) + if ((data.user.admin & 2) == 2) flags.push(2) + if ((data.user.admin & 4) == 4) flags.push(4) + if ((data.user.admin & 8) == 8) flags.push(8) + if ((data.user.admin & 16) == 16) flags.push(16) + if ((data.user.admin & 32) == 32) flags.push(32) + if ((data.user.admin & 64) == 64) flags.push(64) + if ((data.user.admin & 128) == 128) flags.push(128) } this.form = new FormGroup({ - fname: new FormControl(data.fname), - surname: new FormControl(data.surname), - room: new FormControl(data.room), - uname: new FormControl(data.uname), + fname: new FormControl(data.user.fname), + surname: new FormControl(data.user.surname), + room: new FormControl(data.user.room), + uname: new FormControl(data.user.uname), + groups: new FormControl>(data.user.groups), flags: new FormControl>(flags), }) } protected editUser() { + console.log(this.form.value); + this.dialogRef.close({ fname: this.form.get('fname')?.value, surname: this.form.get('surname')?.value, - room: this.form.get('room')?.value, + room: this.form.get('room')?.value.length == 0 ? undefined : this.form.get('room')?.value, uname: this.form.get('uname')?.value, + groups: this.form.get('groups')?.value, flags: (() => { var value = this.form.get('flags')?.value.reduce((a: number,b: number)=>a+b,0) if (this.ls.capCheck(32)) { diff --git a/src/app/admin-view/admin-comm.service.ts b/src/app/admin-view/admin-comm.service.ts index 25be904..2ce5674 100644 --- a/src/app/admin-view/admin-comm.service.ts +++ b/src/app/admin-view/admin-comm.service.ts @@ -120,7 +120,20 @@ export class AdminCommService { //#region amgmt accs = { getAccs: () => { - return this.http.get(environment.apiEndpoint+`/admin/accs`, {withCredentials: true}) + return this.http.get<{ + users: { + _id: string; + uname: string; + pass: string; + room?: string; + admin?: number; + locked?: boolean; + fname?: string; + surname?: string; + groups: string[]; + }[], + groups: Group[] + }>(environment.apiEndpoint+`/admin/accs`, {withCredentials: true}) }, postAcc: (item: any) => { @@ -145,14 +158,6 @@ export class AdminCommService { getGroups: () => { return this.http.get(environment.apiEndpoint+`/admin/groups`, {withCredentials: true}) }, - - editRooms: (id: string, rooms: number[]) => { - return this.putGroups(id, {rooms: rooms}) - }, - - editUsers: (id: string, users: string[]) => { - return this.putGroups(id, {unames: users}) - }, newGroup: (name: string) => { return this.http.post(environment.apiEndpoint+`/admin/groups`, {name: name}, {withCredentials: true}) diff --git a/src/app/admin-view/groups/groups.component.html b/src/app/admin-view/groups/groups.component.html index 4fb3085..a50996d 100644 --- a/src/app/admin-view/groups/groups.component.html +++ b/src/app/admin-view/groups/groups.component.html @@ -3,22 +3,6 @@ {{item.name}} - - - - - - - - - - - - - - -
PokojeUżytkownicy
-
diff --git a/src/app/admin-view/groups/groups.component.ts b/src/app/admin-view/groups/groups.component.ts index 7da5e5f..6721ca4 100644 --- a/src/app/admin-view/groups/groups.component.ts +++ b/src/app/admin-view/groups/groups.component.ts @@ -38,14 +38,6 @@ export class GroupsComponent implements OnInit { return groups.flatMap((g) => g.name) } - protected editRooms(id: string, rooms: string[]) { - this.acs.groups.editRooms(id, rooms.map(Number)).subscribe((s) => this.refreshIfGood(s)) - } - - protected editUsers(id: string, users: string[]) { - this.acs.groups.editUsers(id, users).subscribe((s) => this.refreshIfGood(s)) - } - protected nameEdit(id: string, name: string | string[]) { name = name as string this.acs.groups.editName(id, name).subscribe((s) => this.refreshIfGood(s)) diff --git a/src/app/admin-view/notifications/notifications.component.html b/src/app/admin-view/notifications/notifications.component.html index 6fa942c..39fdb41 100644 --- a/src/app/admin-view/notifications/notifications.component.html +++ b/src/app/admin-view/notifications/notifications.component.html @@ -22,7 +22,6 @@
- Wychowankowie diff --git a/src/app/types/group.ts b/src/app/types/group.ts index 27cf76a..beb298d 100644 --- a/src/app/types/group.ts +++ b/src/app/types/group.ts @@ -1,6 +1,4 @@ export interface Group { _id: string; name: string; - rooms?: number[]; - unames?: string[] }