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 45c43b8..274e87a 100644 --- a/src/app/admin-view/account-mgmt/account-mgmt.component.ts +++ b/src/app/admin-view/account-mgmt/account-mgmt.component.ts @@ -55,7 +55,7 @@ export class AccountMgmtComponent implements OnInit, AfterViewInit { } openUserCard(id?: string) { - this.dialog.open(UserEditComponent, {data: {id: id, type: id ? "edit" : "new", groups: this.groups}}).afterClosed().subscribe(r => { + this.dialog.open(UserEditComponent, {data: {id: id, type: id ? "edit" : "new", groups: this.groups}}).afterClosed().subscribe(r => { if (r) this.ngOnInit() }) } 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 09d8454..64d05a3 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 @@ -11,12 +11,17 @@ import { catchError, throwError } from 'rxjs'; import { Moment } from 'moment'; import * as moment from 'moment'; +export namespace UserEditComponent { + export type InputData = {type: "new" | "edit", id?: string, groups: Group[]} + export type ReturnData = true | undefined +} + @Component({ selector: 'app-user-edit', templateUrl: './user-edit.component.html', styleUrls: ['./user-edit.component.scss'] }) -export class UserEditComponent { +export class UserEditComponent { lockout = false; locked = false; loading = false; @@ -33,7 +38,7 @@ export class UserEditComponent { regDate?: Moment; constructor ( public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: ({type: "edit", id: string} | {type: "new"}) & {groups: Group[]}, + @Inject(MAT_DIALOG_DATA) public data: UserEditComponent.InputData, readonly ls: LocalStorageService, readonly acu: AdminCommService, private dialog: MatDialog, @@ -42,7 +47,7 @@ export class UserEditComponent { this.groups = data.groups if (data.type == "edit") { this.id = data.id - this.acu.accs.getUser(data.id).subscribe((r) => { + this.acu.accs.getUser(data.id!).subscribe((r) => { this.regDate = moment(r.regDate) var flags: Array = [] if (r.admin) { diff --git a/src/app/admin.guard.ts b/src/app/admin.guard.ts index 1c35f29..047b1e1 100644 --- a/src/app/admin.guard.ts +++ b/src/app/admin.guard.ts @@ -4,6 +4,6 @@ import { LocalStorageService } from './services/local-storage.service'; export const adminGuard: CanActivateChildFn = (childRoute, state) => { const router = inject(Router) - if (inject(LocalStorageService).admin == false) return router.parseUrl('/') + if (inject(LocalStorageService).admin == undefined) return router.parseUrl('/') return true }; diff --git a/src/app/app-view/personal/extra/extra.component.html b/src/app/app-view/personal/extra/extra.component.html new file mode 100644 index 0000000..252f579 --- /dev/null +++ b/src/app/app-view/personal/extra/extra.component.html @@ -0,0 +1,14 @@ +

Dodatkowe ustawienia

+ + + @for (link of LINKS; track link) { + + } + + + + + \ No newline at end of file diff --git a/src/app/app-view/personal/extra/extra.component.scss b/src/app/app-view/personal/extra/extra.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app-view/personal/extra/extra.component.spec.ts b/src/app/app-view/personal/extra/extra.component.spec.ts new file mode 100644 index 0000000..f89f871 --- /dev/null +++ b/src/app/app-view/personal/extra/extra.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExtraComponent } from './extra.component'; + +describe('ExtraComponent', () => { + let component: ExtraComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ExtraComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ExtraComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/app-view/personal/extra/extra.component.ts b/src/app/app-view/personal/extra/extra.component.ts new file mode 100644 index 0000000..e36a40a --- /dev/null +++ b/src/app/app-view/personal/extra/extra.component.ts @@ -0,0 +1,29 @@ +import { ComponentType } from '@angular/cdk/portal'; +import { Component } from '@angular/core'; +import { Link } from 'src/app/types/link'; +import { RedirectComponent } from './redirect/redirect.component'; +import { MatDialog } from '@angular/material/dialog'; + +@Component({ + selector: 'app-extra', + templateUrl: './extra.component.html', + styleUrl: './extra.component.scss' +}) +export class ExtraComponent { + + constructor (private dialog: MatDialog) {} + + private readonly _LINKS: (Omit & {component: ComponentType})[] = [ + { title: "Domyślna strona po logowaniu", component: RedirectComponent, enabled: true, icon: "home" } + ] + + public get LINKS() { + return this._LINKS.filter((v) => { + return v.enabled + }); + } + + open(component: ComponentType) { + this.dialog.open(component) + } +} diff --git a/src/app/app-view/personal/extra/redirect/redirect.component.html b/src/app/app-view/personal/extra/redirect/redirect.component.html new file mode 100644 index 0000000..1dc4d9a --- /dev/null +++ b/src/app/app-view/personal/extra/redirect/redirect.component.html @@ -0,0 +1,13 @@ +

Domyślna strona po logowaniu

+ +

Wpisz link względem /ipwa/ w poniższym polu.

+

Przykład: /app/menu

+ + + Link + +
+ + + + \ No newline at end of file diff --git a/src/app/app-view/personal/extra/redirect/redirect.component.scss b/src/app/app-view/personal/extra/redirect/redirect.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app-view/personal/extra/redirect/redirect.component.spec.ts b/src/app/app-view/personal/extra/redirect/redirect.component.spec.ts new file mode 100644 index 0000000..af6541a --- /dev/null +++ b/src/app/app-view/personal/extra/redirect/redirect.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RedirectComponent } from './redirect.component'; + +describe('RedirectComponent', () => { + let component: RedirectComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [RedirectComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(RedirectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/app-view/personal/extra/redirect/redirect.component.ts b/src/app/app-view/personal/extra/redirect/redirect.component.ts new file mode 100644 index 0000000..81d0eb4 --- /dev/null +++ b/src/app/app-view/personal/extra/redirect/redirect.component.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; +import { MatDialogRef } from '@angular/material/dialog'; +import { AuthClient } from 'src/app/services/auth.client'; + +@Component({ + selector: 'app-redirect', + templateUrl: './redirect.component.html', + styleUrl: './redirect.component.scss' +}) +export class RedirectComponent { + protected redirect = "" + constructor (public dialogRef: MatDialogRef, private ac: AuthClient) { + this.redirect = ac.redirect + } + + protected save() { + this.ac.redirect = this.redirect + this.dialogRef.close() + } +} diff --git a/src/app/app-view/personal/personal.component.html b/src/app/app-view/personal/personal.component.html index c4ab40d..b3d43b1 100644 --- a/src/app/app-view/personal/personal.component.html +++ b/src/app/app-view/personal/personal.component.html @@ -30,6 +30,10 @@
Panel administracyjny
Poprzednio Tryb edycji
+