Implemented delete user. Removed ability to see yourself on members since you couldn't do anything anyways.
This commit is contained in:
parent
530e73fbea
commit
696f950f7a
4 changed files with 24 additions and 6 deletions
|
|
@ -24,8 +24,8 @@ export class MemberService {
|
||||||
// TODO: Implement update password (use JWT to assume role)
|
// TODO: Implement update password (use JWT to assume role)
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteMember(member: string) {
|
deleteMember(username: string) {
|
||||||
// TODO: Implement delete member (admin only)
|
return this.httpClient.delete(this.baseUrl + 'admin/delete-user?username=' + username);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,8 @@
|
||||||
<h4>
|
<h4>
|
||||||
{{member.username | titlecase}} <span *ngIf="member.isAdmin" class="badge badge-pill badge-secondary">Admin</span>
|
{{member.username | titlecase}} <span *ngIf="member.isAdmin" class="badge badge-pill badge-secondary">Admin</span>
|
||||||
<div class="pull-right" *ngIf="canEditMember(member)">
|
<div class="pull-right" *ngIf="canEditMember(member)">
|
||||||
<button class="btn btn-danger mr-2"><i class="fa fa-trash" title="Delete {{member.username | titlecase}}"></i></button>
|
<button class="btn btn-danger mr-2" (click)="deleteUser(member)"><i class="fa fa-trash" title="Delete {{member.username | titlecase}}"></i></button>
|
||||||
|
<!-- <button class="btn btn-primary" (click)="openChangeRole(member)"><i class="fa fa-pencil"></i>{{member.roles.includes('Admin') ? 'Demote' : 'Promote'}}</button> -->
|
||||||
<button class="btn btn-primary" (click)="openEditLibraryAccess(member)"><i class="fa fa-pencil" title="Edit {{member.username | titlecase}}"></i></button>
|
<button class="btn btn-primary" (click)="openEditLibraryAccess(member)"><i class="fa fa-pencil" title="Edit {{member.username | titlecase}}"></i></button>
|
||||||
</div>
|
</div>
|
||||||
</h4>
|
</h4>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { Member } from 'src/app/_models/member';
|
||||||
import { User } from 'src/app/_models/user';
|
import { User } from 'src/app/_models/user';
|
||||||
import { AccountService } from 'src/app/_services/account.service';
|
import { AccountService } from 'src/app/_services/account.service';
|
||||||
import { LibraryAccessModalComponent } from '../_modals/library-access-modal/library-access-modal.component';
|
import { LibraryAccessModalComponent } from '../_modals/library-access-modal/library-access-modal.component';
|
||||||
|
import { ToastrService } from 'ngx-toastr';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-manage-users',
|
selector: 'app-manage-users',
|
||||||
|
|
@ -20,7 +21,10 @@ export class ManageUsersComponent implements OnInit {
|
||||||
// Create User functionality
|
// Create User functionality
|
||||||
createMemberToggle = false;
|
createMemberToggle = false;
|
||||||
|
|
||||||
constructor(private memberService: MemberService, public accountService: AccountService, private modalService: NgbModal) {
|
constructor(private memberService: MemberService,
|
||||||
|
private accountService: AccountService,
|
||||||
|
private modalService: NgbModal,
|
||||||
|
private toastr: ToastrService) {
|
||||||
this.accountService.currentUser$.pipe(take(1)).subscribe((user: User) => {
|
this.accountService.currentUser$.pipe(take(1)).subscribe((user: User) => {
|
||||||
this.loggedInUsername = user.username;
|
this.loggedInUsername = user.username;
|
||||||
});
|
});
|
||||||
|
|
@ -32,7 +36,7 @@ export class ManageUsersComponent implements OnInit {
|
||||||
|
|
||||||
loadMembers() {
|
loadMembers() {
|
||||||
this.memberService.getMembers().subscribe(members => {
|
this.memberService.getMembers().subscribe(members => {
|
||||||
this.members = members;
|
this.members = members.filter(member => member.username !== this.loggedInUsername);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -57,6 +61,19 @@ export class ManageUsersComponent implements OnInit {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
openChangeRole(member: Member) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteUser(member: Member) {
|
||||||
|
if (confirm('Are you sure you want to delete this user?')) {
|
||||||
|
this.memberService.deleteMember(member.username).subscribe(() => {
|
||||||
|
this.loadMembers();
|
||||||
|
this.toastr.success(member.username + ' has been deleted.');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
formatLibraries(member: Member) {
|
formatLibraries(member: Member) {
|
||||||
if (member.libraries.length === 0) {
|
if (member.libraries.length === 0) {
|
||||||
return 'None';
|
return 'None';
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
<input id="password" class="form-control" formControlName="password" type="password">
|
<input id="password" class="form-control" formControlName="password" type="password">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-check" *ngIf="adminExists">
|
<div class="form-check" *ngIf="!firstTimeFlow">
|
||||||
<input id="admin" type="checkbox" aria-label="Admin" class="form-check-input" formControlName="isAdmin">
|
<input id="admin" type="checkbox" aria-label="Admin" class="form-check-input" formControlName="isAdmin">
|
||||||
<label for="admin" class="form-check-label">Admin</label>
|
<label for="admin" class="form-check-label">Admin</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue