diff --git a/src/app/admin-view/account-mgmt/account.model.ts b/src/app/admin-view/account-mgmt/account.model.ts index 5eae42f..c65be43 100644 --- a/src/app/admin-view/account-mgmt/account.model.ts +++ b/src/app/admin-view/account-mgmt/account.model.ts @@ -4,7 +4,7 @@ export interface User { _id: string uname: string room?: string - admin?: number + admin?: string[] locked?: boolean fname?: string surname?: string 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 5bdd74c..4a67c14 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 @@ -43,28 +43,28 @@ } @else { } - @if (ls.permChecker(32)) { + @if (ls.permChecker("accs")) { Uprawnienia @if (ls.capCheck(1)) { - Wiadomości + Wiadomości } @if (ls.capCheck(2)) { - Jadłospis + Jadłospis } @if (ls.capCheck(4)) { - Powiadomienia + Powiadomienia } @if (ls.capCheck(8)) { - Grupy + Grupy } - Konta + Konta @if (ls.capCheck(32)) { - Klucze + Klucze } @if (ls.capCheck(16)) { - Czystość + Czystość } 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 ce41754..d9aa6cd 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 @@ -36,7 +36,7 @@ export class UserEditComponent { room: new FormControl(''), uname: new FormControl(''), groups: new FormControl>([]), - flags: new FormControl>([]), + flags: new FormControl>([]), }) id?: string regDate?: DateTime @@ -53,17 +53,6 @@ export class UserEditComponent { this.id = data.id this.acu.getUser(data.id!).subscribe(r => { this.regDate = DateTime.fromISO(r.regDate) - var flags: Array = [] - if (r.admin) { - if ((r.admin & 1) == 1) flags.push(1) - if ((r.admin & 2) == 2) flags.push(2) - if ((r.admin & 4) == 4) flags.push(4) - if ((r.admin & 8) == 8) flags.push(8) - if ((r.admin & 16) == 16) flags.push(16) - if ((r.admin & 32) == 32) flags.push(32) - if ((r.admin & 64) == 64) flags.push(64) - if ((r.admin & 128) == 128) flags.push(128) - } this.locked = r.locked ? true : false this.lockout = r.lockout this.form.get('fname')?.setValue(r.fname) @@ -71,7 +60,7 @@ export class UserEditComponent { this.form.get('room')?.setValue(r.room) this.form.get('uname')?.setValue(r.uname) this.form.get('groups')?.setValue(r.groups) - this.form.get('flags')?.setValue(flags) + this.form.get('flags')?.setValue(r.admin) }) } } @@ -150,9 +139,7 @@ export class UserEditComponent { uname: this.form.get('uname')?.value, groups: this.form.get('groups')?.value, admin: (() => { - var value = this.form - .get('flags') - ?.value.reduce((a: number, b: number) => a + b, 0) + var value = this.form.get('flags')?.value if (this.ls.capCheck(32)) { return value } else { diff --git a/src/app/admin-view/admin-view.component.ts b/src/app/admin-view/admin-view.component.ts index 362dea4..e63dd10 100644 --- a/src/app/admin-view/admin-view.component.ts +++ b/src/app/admin-view/admin-view.component.ts @@ -15,43 +15,43 @@ export class AdminViewComponent { title: 'Wiadomości', icon: 'newspaper', href: 'news', - enabled: this.ls.permChecker(1) && this.ls.capCheck(1), + enabled: this.ls.permChecker("news") && this.ls.capCheck(1), }, { title: 'Jadłospis', icon: 'restaurant_menu', href: 'menu', - enabled: this.ls.permChecker(2) && this.ls.capCheck(2), + enabled: this.ls.permChecker("menu") && this.ls.capCheck(2), }, { title: 'Wysyłanie powiadomień', icon: 'notifications', href: 'notifications', - enabled: this.ls.permChecker(4) && this.ls.capCheck(4), + enabled: this.ls.permChecker("notif") && this.ls.capCheck(4), }, { title: 'Grupy', icon: 'groups', href: 'groups', - enabled: this.ls.permChecker(8) && this.ls.capCheck(8), + enabled: this.ls.permChecker("groups") && this.ls.capCheck(8), }, { title: 'Zarządzanie kontami', icon: 'manage_accounts', href: 'accounts', - enabled: this.ls.permChecker(16), + enabled: this.ls.permChecker("accs"), }, { title: 'Klucze', icon: 'key', href: 'keys', - enabled: this.ls.permChecker(64) && this.ls.capCheck(32), + enabled: this.ls.permChecker("keys") && this.ls.capCheck(32), }, { title: 'Czystość', icon: 'cleaning_services', href: 'grades', - enabled: this.ls.permChecker(128) && this.ls.capCheck(16), + enabled: this.ls.permChecker("grades") && this.ls.capCheck(16), }, { title: 'Frekwencja', @@ -63,7 +63,7 @@ export class AdminViewComponent { title: 'Ustawienia', icon: 'settings_applications', href: 'settings', - enabled: this.ls.permChecker(32), + enabled: this.ls.permChecker("super"), }, ] public get LINKS(): Link[] { diff --git a/src/app/app-view/start/start.component.ts b/src/app/app-view/start/start.component.ts index 904c562..d9b20b1 100644 --- a/src/app/app-view/start/start.component.ts +++ b/src/app/app-view/start/start.component.ts @@ -45,7 +45,7 @@ export class StartComponent { title: 'Administracja', href: 'grades', icon: 'admin_panel_settings', - enabled: this.ls.admin != 0, + enabled: this.ls.isAdmin, }, ] public get LINKS(): Link[] { diff --git a/src/app/services/auth.client.ts b/src/app/services/auth.client.ts index 9307261..2ccbbcb 100644 --- a/src/app/services/auth.client.ts +++ b/src/app/services/auth.client.ts @@ -27,7 +27,7 @@ export class AuthClient { public login(uname: string, pass: string) { return this.http - .post( + .post( environment.apiEndpoint + '/auth/login', { username: uname, @@ -51,7 +51,7 @@ export class AuthClient { public check() { this.http .get<{ - admin?: number + admin?: string[] room?: string features: number menu: { diff --git a/src/app/services/local-storage.service.ts b/src/app/services/local-storage.service.ts index 7968466..a8f0556 100644 --- a/src/app/services/local-storage.service.ts +++ b/src/app/services/local-storage.service.ts @@ -7,11 +7,8 @@ import { News } from '../types/news' export class LocalStorageService { constructor() {} - permChecker(neededPermNumber: number) { - return ( - (Number.parseInt(localStorage.getItem('admin')!) & neededPermNumber) == - neededPermNumber - ) + permChecker(perm: string) { + return this.admin?.includes(perm) ?? false } logOut() { @@ -62,9 +59,9 @@ export class LocalStorageService { } } - set admin(newInt: number | undefined) { - if (newInt) { - localStorage.setItem('admin', newInt.toString()) + set admin(perms: string[] | undefined) { + if (perms) { + localStorage.setItem('admin', JSON.stringify(perms)) } else { localStorage.removeItem('admin') } @@ -72,22 +69,11 @@ export class LocalStorageService { get admin() { var lsa = localStorage.getItem('admin') - return lsa ? Number.parseInt(lsa) : undefined + return lsa ? JSON.parse(lsa) : undefined } - set amgreg(toggle: boolean) { - if (toggle) { - localStorage.setItem('amgrb', 'true') - } else { - localStorage.removeItem('amgrb') - } - } - - get amgreg() { - if (localStorage.getItem('amgrb') == 'true') { - return true - } - return false + get isAdmin(): boolean { + return this.admin ? true : false } set capFlag(n: number | null) {