]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/ceph/rgw/rgw-user-details/rgw-user-details.component.html
2283f4c546f053982c7def5fbd5d9937c9abc555
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / ceph / rgw / rgw-user-details / rgw-user-details.component.html
1 <ng-container *ngIf="selection">
2 <ul ngbNav
3 #nav="ngbNav"
4 class="nav-tabs"
5 cdStatefulTab="rgw-user-details">
6 <li ngbNavItem="details">
7 <a ngbNavLink
8 i18n>Details</a>
9 <ng-template ngbNavContent>
10 <div *ngIf="user">
11 <table class="table table-striped table-bordered">
12 <tbody>
13 <tr>
14 <td i18n
15 class="bold w-25">Tenant</td>
16 <td class="w-75">{{ user.tenant }}</td>
17 </tr>
18 <tr>
19 <td i18n
20 class="bold w-25">User ID</td>
21 <td class="w-75">{{ user.user_id }}</td>
22 </tr>
23 <tr>
24 <td i18n
25 class="bold w-25">Username</td>
26 <td class="w-75">{{ user.uid }}</td>
27 </tr>
28 <tr>
29 <td i18n
30 class="bold">Full name</td>
31 <td>{{ user.display_name }}</td>
32 </tr>
33 <tr *ngIf="user.email?.length">
34 <td i18n
35 class="bold">Email address</td>
36 <td>{{ user.email }}</td>
37 </tr>
38 <tr>
39 <td i18n
40 class="bold">Suspended</td>
41 <td>{{ user.suspended | booleanText }}</td>
42 </tr>
43 <tr>
44 <td i18n
45 class="bold">System</td>
46 <td>{{ user.system === 'true' | booleanText }}</td>
47 </tr>
48 <tr>
49 <td i18n
50 class="bold">Maximum buckets</td>
51 <td>{{ user.max_buckets | map:maxBucketsMap }}</td>
52 </tr>
53 <tr *ngIf="user.subusers && user.subusers.length">
54 <td i18n
55 class="bold">Subusers</td>
56 <td>
57 <div *ngFor="let subuser of user.subusers">
58 {{ subuser.id }} ({{ subuser.permissions }})
59 </div>
60 </td>
61 </tr>
62 <tr *ngIf="user.caps && user.caps.length">
63 <td i18n
64 class="bold">Capabilities</td>
65 <td>
66 <div *ngFor="let cap of user.caps">
67 {{ cap.type }} ({{ cap.perm }})
68 </div>
69 </td>
70 </tr>
71 <tr *ngIf="user.mfa_ids?.length">
72 <td i18n
73 class="bold">MFAs(Id)</td>
74 <td>{{ user.mfa_ids | join}}</td>
75 </tr>
76 </tbody>
77 </table>
78
79 <!-- User quota -->
80 <div *ngIf="user.user_quota">
81 <legend i18n>User quota</legend>
82 <table class="table table-striped table-bordered">
83 <tbody>
84 <tr>
85 <td i18n
86 class="bold w-25">Enabled</td>
87 <td class="w-75">{{ user.user_quota.enabled | booleanText }}</td>
88 </tr>
89 <tr>
90 <td i18n
91 class="bold">Maximum size</td>
92 <td *ngIf="!user.user_quota.enabled">-</td>
93 <td *ngIf="user.user_quota.enabled && user.user_quota.max_size <= -1"
94 i18n>Unlimited</td>
95 <td *ngIf="user.user_quota.enabled && user.user_quota.max_size > -1">
96 {{ user.user_quota.max_size | dimlessBinary }}
97 </td>
98 </tr>
99 <tr>
100 <td i18n
101 class="bold">Maximum objects</td>
102 <td *ngIf="!user.user_quota.enabled">-</td>
103 <td *ngIf="user.user_quota.enabled && user.user_quota.max_objects <= -1"
104 i18n>Unlimited</td>
105 <td *ngIf="user.user_quota.enabled && user.user_quota.max_objects > -1">
106 {{ user.user_quota.max_objects }}
107 </td>
108 </tr>
109 </tbody>
110 </table>
111 </div>
112
113 <!-- Bucket quota -->
114 <div *ngIf="user.bucket_quota">
115 <legend i18n>Bucket quota</legend>
116 <table class="table table-striped table-bordered">
117 <tbody>
118 <tr>
119 <td i18n
120 class="bold w-25">Enabled</td>
121 <td class="w-75">{{ user.bucket_quota.enabled | booleanText }}</td>
122 </tr>
123 <tr>
124 <td i18n
125 class="bold">Maximum size</td>
126 <td *ngIf="!user.bucket_quota.enabled">-</td>
127 <td *ngIf="user.bucket_quota.enabled && user.bucket_quota.max_size <= -1"
128 i18n>Unlimited</td>
129 <td *ngIf="user.bucket_quota.enabled && user.bucket_quota.max_size > -1">
130 {{ user.bucket_quota.max_size | dimlessBinary }}
131 </td>
132 </tr>
133 <tr>
134 <td i18n
135 class="bold">Maximum objects</td>
136 <td *ngIf="!user.bucket_quota.enabled">-</td>
137 <td *ngIf="user.bucket_quota.enabled && user.bucket_quota.max_objects <= -1"
138 i18n>Unlimited</td>
139 <td *ngIf="user.bucket_quota.enabled && user.bucket_quota.max_objects > -1">
140 {{ user.bucket_quota.max_objects }}
141 </td>
142 </tr>
143 </tbody>
144 </table>
145 </div>
146 </div>
147 </ng-template>
148 </li>
149 <li ngbNavItem="keys"
150 *ngIf="keys.length">
151 <a ngbNavLink
152 i18n>Keys</a>
153 <ng-template ngbNavContent>
154 <cd-table [data]="keys"
155 [columns]="keysColumns"
156 columnMode="flex"
157 selectionType="multi"
158 forceIdentifier="true"
159 (updateSelection)="updateKeysSelection($event)">
160 <div class="table-actions">
161 <div class="btn-group"
162 dropdown>
163 <button type="button"
164 class="btn btn-accent"
165 [disabled]="!keysSelection.hasSingleSelection"
166 (click)="showKeyModal()">
167 <i [ngClass]="[icons.show]"></i>
168 <ng-container i18n>Show</ng-container>
169 </button>
170 </div>
171 </div>
172 </cd-table>
173 </ng-template>
174 </li>
175 </ul>
176
177 <div [ngbNavOutlet]="nav"></div>
178 </ng-container>