mirror of
https://github.com/Kareadita/Kavita.git
synced 2026-02-20 18:20:05 -05:00
* Moved Collapse Series with relationships into a user preference rather than library setting. * Fixed bookmarks not converting to webp after initial save * Fixed a bug where when merging we'd print out a duplicate series error when we shouldn't have * Fixed a bug where clicking on a genre or tag from server stats wouldn't load all-series page in a filtered state. * Implemented the ability to have Login role and thus disable accounts. * Ensure first time flow gets the Login role * Refactored user management screen so that pending users can be edited or deleted before the end user accepts the invite. A side effect is old legacy users that were here before email was required can now be deleted. * Show a progress bar under the main series image on larger viewports to show whole series progress. * Removed code no longer needed * Cleanup tags, people, collections without connections after editing series metadata. * Moved the Entity Builders to the main project
58 lines
3.8 KiB
HTML
58 lines
3.8 KiB
HTML
|
|
|
|
<div class="container-fluid">
|
|
<div class="row mb-2">
|
|
<div class="col-8"><h3>Active Users</h3></div>
|
|
<div class="col-4"><button class="btn btn-primary float-end" (click)="inviteUser()"><i class="fa fa-plus" aria-hidden="true"></i><span class="phone-hidden"> Invite</span></button></div>
|
|
</div>
|
|
|
|
<ul class="list-group">
|
|
<li *ngFor="let member of members; let idx = index;" class="list-group-item no-hover">
|
|
<div>
|
|
<h4>
|
|
<i class="presence fa fa-circle" title="Active" aria-hidden="true" *ngIf="false && (messageHub.onlineUsers$ | async)?.includes(member.id)"></i>
|
|
<span id="member-name--{{idx}}">{{member.username | titlecase}} </span>
|
|
<span *ngIf="member.username === loggedInUsername">
|
|
<i class="fas fa-star" aria-hidden="true"></i>
|
|
<span class="visually-hidden">(You)</span>
|
|
</span>
|
|
<span class="badge bg-secondary text-dark" *ngIf="member.isPending">Pending</span>
|
|
<div class="float-end" *ngIf="canEditMember(member)">
|
|
<button class="btn btn-danger btn-sm me-2" (click)="deleteUser(member)" placement="top" ngbTooltip="Delete User" attr.aria-label="Delete User {{member.username | titlecase}}"><i class="fa fa-trash" aria-hidden="true"></i></button>
|
|
<button class="btn btn-primary btn-sm me-2" (click)="openEditUser(member)" placement="top" ngbTooltip="Edit" attr.aria-label="Edit {{member.username | titlecase}}"><i class="fa fa-pen" aria-hidden="true"></i></button>
|
|
|
|
<button *ngIf="member.isPending" class="btn btn-secondary btn-sm me-2" (click)="resendEmail(member)" placement="top" ngbTooltip="Resend Invite" attr.aria-label="Delete Invite {{member.username | titlecase}}">Resend</button>
|
|
<button *ngIf="member.isPending" class="btn btn-secondary btn-sm me-2" (click)="setup(member)" placement="top" ngbTooltip="Setup User" attr.aria-label="Setup User {{member.username | titlecase}}">Setup</button>
|
|
<button *ngIf="!member.isPending" class="btn btn-secondary btn-sm" (click)="updatePassword(member)" placement="top" ngbTooltip="Change Password" attr.aria-label="Change Password for {{member.username | titlecase}}"><i class="fa fa-key" aria-hidden="true"></i></button>
|
|
</div>
|
|
</h4>
|
|
<div class="user-info">
|
|
<div>Last Active:
|
|
<span *ngIf="member.lastActive === '0001-01-01T00:00:00'; else activeDate">Never</span>
|
|
<ng-template #activeDate>
|
|
{{member.lastActive | date: 'short'}}
|
|
</ng-template>
|
|
</div>
|
|
<div *ngIf="!hasAdminRole(member)">Sharing: {{formatLibraries(member)}}</div>
|
|
<div class="row g-0">
|
|
<div>
|
|
Roles: <span *ngIf="getRoles(member).length === 0; else showRoles">None</span>
|
|
<ng-template #showRoles>
|
|
<app-tag-badge *ngFor="let role of getRoles(member)" class="col-auto">{{role}}</app-tag-badge>
|
|
</ng-template>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
<li *ngIf="loadingMembers" class="list-group-item">
|
|
<div class="spinner-border text-secondary" role="status">
|
|
<span class="invisible">Loading...</span>
|
|
</div>
|
|
</li>
|
|
<li class="list-group-item" *ngIf="members.length === 0 && !loadingMembers">
|
|
There are no other users.
|
|
</li>
|
|
</ul>
|
|
</div>
|