Fixed issue where role/user permissions could not be changed

pull/809/head
Tzahi12345 3 years ago
parent 964760a6a8
commit 0cf9f2de7a

@ -1,17 +1,15 @@
<h4 *ngIf="role" mat-dialog-title><ng-container i18n="Manage role dialog title">Manage role</ng-container>&nbsp;-&nbsp;{{role.name}}</h4> <h4 *ngIf="role" mat-dialog-title><ng-container i18n="Manage role dialog title">Manage role</ng-container>&nbsp;-&nbsp;{{role.key}}</h4>
<mat-dialog-content *ngIf="role"> <mat-dialog-content *ngIf="role">
<mat-list> <div *ngFor="let permission of available_permissions">
<mat-list-item role="listitem" *ngFor="let permission of available_permissions"> <div matListItemTitle>{{permissionToLabel[permission] ? permissionToLabel[permission] : permission}}</div>
<div matListItemTitle>{{permissionToLabel[permission] ? permissionToLabel[permission] : permission}}</div> <div matListItemLine>
<div matListItemLine> <mat-radio-group [disabled]="permission === 'settings' && role.key === 'admin'" (change)="changeRolePermissions($event, permission, permissions[permission])" [(ngModel)]="permissions[permission]" [attr.aria-label]="'Give role permission for ' + permission">
<mat-radio-group [disabled]="permission === 'settings' && role.key === 'admin'" (change)="changeRolePermissions($event, permission, permissions[permission])" [(ngModel)]="permissions[permission]" [attr.aria-label]="'Give role permission for ' + permission"> <mat-radio-button value="yes"><ng-container i18n="Yes">Yes</ng-container></mat-radio-button>
<mat-radio-button value="yes"><ng-container i18n="Yes">Yes</ng-container></mat-radio-button> <mat-radio-button value="no"><ng-container i18n="No">No</ng-container></mat-radio-button>
<mat-radio-button value="no"><ng-container i18n="No">No</ng-container></mat-radio-button> </mat-radio-group>
</mat-radio-group> </div>
</div> </div>
</mat-list-item>
</mat-list>
</mat-dialog-content> </mat-dialog-content>
<mat-dialog-actions> <mat-dialog-actions>

@ -1,4 +0,0 @@
.mat-mdc-radio-button {
margin-right: 10px;
margin-top: 5px;
}

@ -24,7 +24,7 @@ export class ManageRoleComponent implements OnInit {
} }
constructor(public postsService: PostsService, private dialogRef: MatDialogRef<ManageRoleComponent>, constructor(public postsService: PostsService, private dialogRef: MatDialogRef<ManageRoleComponent>,
@Inject(MAT_DIALOG_DATA) public data: any) { @Inject(MAT_DIALOG_DATA) public data: {role: string}) {
if (this.data) { if (this.data) {
this.role = this.data.role; this.role = this.data.role;
this.available_permissions = this.postsService.available_permissions; this.available_permissions = this.postsService.available_permissions;

@ -12,18 +12,16 @@
</div> </div>
<div> <div>
<mat-list> <div *ngFor="let permission of available_permissions">
<mat-list-item role="listitem" *ngFor="let permission of available_permissions"> <div matListItemTitle>{{permissionToLabel[permission] ? permissionToLabel[permission] : permission}}</div>
<div matListItemTitle>{{permissionToLabel[permission] ? permissionToLabel[permission] : permission}}</div> <div matListItemLine>
<div matListItemLine> <mat-radio-group [disabled]="permission === 'settings' && postsService.user.uid === user.uid" (change)="changeUserPermissions($event, permission)" [(ngModel)]="permissions[permission]" [attr.aria-label]="'Give user permission for ' + permission">
<mat-radio-group [disabled]="permission === 'settings' && postsService.user.uid === user.uid" (change)="changeUserPermissions($event, permission)" [(ngModel)]="permissions[permission]" [attr.aria-label]="'Give user permission for ' + permission"> <mat-radio-button value="default"><ng-container i18n="Use role default">Use role default</ng-container></mat-radio-button>
<mat-radio-button value="default"><ng-container i18n="Use role default">Use role default</ng-container></mat-radio-button> <mat-radio-button value="yes"><ng-container i18n="Yes">Yes</ng-container></mat-radio-button>
<mat-radio-button value="yes"><ng-container i18n="Yes">Yes</ng-container></mat-radio-button> <mat-radio-button value="no"><ng-container i18n="No">No</ng-container></mat-radio-button>
<mat-radio-button value="no"><ng-container i18n="No">No</ng-container></mat-radio-button> </mat-radio-group>
</mat-radio-group> </div>
</div> </div>
</mat-list-item>
</mat-list>
</div> </div>
</mat-dialog-content> </mat-dialog-content>

@ -1,6 +1,7 @@
import { Component, OnInit, Inject } from '@angular/core'; import { Component, OnInit, Inject } from '@angular/core';
import { PostsService } from 'app/posts.services'; import { PostsService } from 'app/posts.services';
import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MAT_DIALOG_DATA } from '@angular/material/dialog';
import { User } from 'api-types';
@Component({ @Component({
selector: 'app-manage-user', selector: 'app-manage-user',
@ -26,7 +27,7 @@ export class ManageUserComponent implements OnInit {
settingNewPassword = false; settingNewPassword = false;
constructor(public postsService: PostsService, @Inject(MAT_DIALOG_DATA) public data: any) { constructor(public postsService: PostsService, @Inject(MAT_DIALOG_DATA) public data: {user: User}) {
if (this.data) { if (this.data) {
this.user = this.data.user; this.user = this.data.user;
this.available_permissions = this.postsService.available_permissions; this.available_permissions = this.postsService.available_permissions;
@ -54,14 +55,14 @@ export class ManageUserComponent implements OnInit {
} }
changeUserPermissions(change, permission) { changeUserPermissions(change, permission) {
this.postsService.setUserPermission(this.user.uid, permission, change.value).subscribe(res => { this.postsService.setUserPermission(this.user.uid, permission, change.value).subscribe(() => {
// console.log(res); // console.log(res);
}); });
} }
setNewPassword() { setNewPassword() {
this.settingNewPassword = true; this.settingNewPassword = true;
this.postsService.changeUserPassword(this.user.uid, this.newPasswordInput).subscribe(res => { this.postsService.changeUserPassword(this.user.uid, this.newPasswordInput).subscribe(() => {
this.newPasswordInput = ''; this.newPasswordInput = '';
this.settingNewPassword = false; this.settingNewPassword = false;
}); });

@ -8,6 +8,7 @@ import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { AddUserDialogComponent } from 'app/dialogs/add-user-dialog/add-user-dialog.component'; import { AddUserDialogComponent } from 'app/dialogs/add-user-dialog/add-user-dialog.component';
import { ManageUserComponent } from '../manage-user/manage-user.component'; import { ManageUserComponent } from '../manage-user/manage-user.component';
import { ManageRoleComponent } from '../manage-role/manage-role.component'; import { ManageRoleComponent } from '../manage-role/manage-role.component';
import { User } from 'api-types';
@Component({ @Component({
selector: 'app-modify-users', selector: 'app-modify-users',
@ -31,7 +32,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
// MatPaginator Output // MatPaginator Output
pageEvent: PageEvent; pageEvent: PageEvent;
users: any; users: User[];
editObject = null; editObject = null;
constructedObject = {}; constructedObject = {};
roles = null; roles = null;
@ -94,11 +95,9 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
}); });
} }
finishEditing(user_uid) { finishEditing(user_uid: string) {
let has_finished = false;
if (this.constructedObject && this.constructedObject['name'] && this.constructedObject['role']) { if (this.constructedObject && this.constructedObject['name'] && this.constructedObject['role']) {
if (!isEmptyOrSpaces(this.constructedObject['name']) && !isEmptyOrSpaces(this.constructedObject['role'])) { if (!isEmptyOrSpaces(this.constructedObject['name']) && !isEmptyOrSpaces(this.constructedObject['role'])) {
has_finished = true;
const index_of_object = this.indexOfUser(user_uid); const index_of_object = this.indexOfUser(user_uid);
this.users[index_of_object] = this.constructedObject; this.users[index_of_object] = this.constructedObject;
this.constructedObject = {}; this.constructedObject = {};
@ -109,7 +108,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
} }
} }
enableEditMode(user_uid) { enableEditMode(user_uid: string) {
if (this.uidInUserList(user_uid) && this.indexOfUser(user_uid) > -1) { if (this.uidInUserList(user_uid) && this.indexOfUser(user_uid) > -1) {
const users_index = this.indexOfUser(user_uid); const users_index = this.indexOfUser(user_uid);
this.editObject = this.users[users_index]; this.editObject = this.users[users_index];
@ -124,7 +123,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
} }
// checks if user is in users array by name // checks if user is in users array by name
uidInUserList(user_uid) { uidInUserList(user_uid: string) {
for (let i = 0; i < this.users.length; i++) { for (let i = 0; i < this.users.length; i++) {
if (this.users[i].uid === user_uid) { if (this.users[i].uid === user_uid) {
return true; return true;
@ -134,7 +133,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
} }
// gets index of user in users array by name // gets index of user in users array by name
indexOfUser(user_uid) { indexOfUser(user_uid: string) {
for (let i = 0; i < this.users.length; i++) { for (let i = 0; i < this.users.length; i++) {
if (this.users[i].uid === user_uid) { if (this.users[i].uid === user_uid) {
return i; return i;
@ -144,12 +143,12 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
} }
setUser(change_obj) { setUser(change_obj) {
this.postsService.changeUser(change_obj).subscribe(res => { this.postsService.changeUser(change_obj).subscribe(() => {
this.getArray(); this.getArray();
}); });
} }
manageUser(user_uid) { manageUser(user_uid: string) {
const index_of_object = this.indexOfUser(user_uid); const index_of_object = this.indexOfUser(user_uid);
const user_obj = this.users[index_of_object]; const user_obj = this.users[index_of_object];
this.dialog.open(ManageUserComponent, { this.dialog.open(ManageUserComponent, {
@ -160,17 +159,17 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
}); });
} }
removeUser(user_uid) { removeUser(user_uid: string) {
this.postsService.deleteUser(user_uid).subscribe(res => { this.postsService.deleteUser(user_uid).subscribe(() => {
this.getArray(); this.getArray();
}, err => { }, () => {
this.getArray(); this.getArray();
}); });
} }
createAndSortData() { createAndSortData() {
// Sorts the data by last finished // Sorts the data by last finished
this.users.sort((a, b) => b.name > a.name); this.users.sort((a, b) => a.name.localeCompare(b.name));
const filteredData = []; const filteredData = [];
for (let i = 0; i < this.users.length; i++) { for (let i = 0; i < this.users.length; i++) {
@ -188,7 +187,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
} }
}); });
dialogRef.afterClosed().subscribe(success => { dialogRef.afterClosed().subscribe(() => {
this.getRoles(); this.getRoles();
}); });
} }
@ -197,7 +196,7 @@ export class ModifyUsersComponent implements OnInit, AfterViewInit {
this.dialogRef.close(); this.dialogRef.close();
} }
public openSnackBar(message: string, action: string = '') { public openSnackBar(message: string, action = '') {
this.snackBar.open(message, action, { this.snackBar.open(message, action, {
duration: 2000, duration: 2000,
}); });

Loading…
Cancel
Save