mirror of
https://github.com/bitwarden/web
synced 2025-12-06 00:03:28 +00:00
Compare commits
13 Commits
license-do
...
beeep/deco
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f244f4ffde | ||
|
|
9d393224da | ||
|
|
ce1ae208d1 | ||
|
|
6996b06fa2 | ||
|
|
dc503d3461 | ||
|
|
d95db8fb74 | ||
|
|
1a219daa12 | ||
|
|
2ae98887b7 | ||
|
|
f0c47252e4 | ||
|
|
2ffe3bd6ad | ||
|
|
f387a4d469 | ||
|
|
a0f1b4dd0d | ||
|
|
84a65edc08 |
@@ -1,3 +1,4 @@
|
|||||||
*
|
*
|
||||||
|
!docker/*
|
||||||
!build/*
|
!build/*
|
||||||
!entrypoint.sh
|
!entrypoint.sh
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ jslib
|
|||||||
# External libraries / auto synced locales
|
# External libraries / auto synced locales
|
||||||
src/locales
|
src/locales
|
||||||
src/404/*.min.css
|
src/404/*.min.css
|
||||||
src/scripts/u2f.js
|
|
||||||
|
|
||||||
# Github Workflows
|
# Github Workflows
|
||||||
.github/workflows
|
.github/workflows
|
||||||
|
|||||||
28
Dockerfile
28
Dockerfile
@@ -1,4 +1,4 @@
|
|||||||
FROM bitwarden/server
|
FROM nginx:stable
|
||||||
|
|
||||||
LABEL com.bitwarden.product="bitwarden"
|
LABEL com.bitwarden.product="bitwarden"
|
||||||
|
|
||||||
@@ -8,13 +8,29 @@ RUN apt-get update \
|
|||||||
curl \
|
curl \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV ASPNETCORE_URLS http://+:5000
|
COPY docker/nginx.conf /etc/nginx
|
||||||
|
COPY docker/nginx-web.conf /etc/nginx
|
||||||
|
COPY docker/mime.types /etc/nginx
|
||||||
|
COPY docker/security-headers.conf /etc/nginx
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
EXPOSE 5000
|
|
||||||
COPY ./build .
|
COPY ./build .
|
||||||
COPY entrypoint.sh /
|
COPY docker/entrypoint.sh /
|
||||||
RUN chmod +x /entrypoint.sh
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
HEALTHCHECK CMD curl -f http://localhost:5000 || exit 1
|
RUN bash /entrypoint.sh
|
||||||
|
RUN chown -R bitwarden:bitwarden /app && chmod -R 755 /app && \
|
||||||
|
chown -R bitwarden:bitwarden /var/cache/nginx && \
|
||||||
|
chown -R bitwarden:bitwarden /var/log/nginx && \
|
||||||
|
chown -R bitwarden:bitwarden /etc/nginx/conf.d
|
||||||
|
RUN touch /var/run/nginx.pid && \
|
||||||
|
chown -R bitwarden:bitwarden /var/run/nginx.pid
|
||||||
|
|
||||||
ENTRYPOINT ["/entrypoint.sh"]
|
USER bitwarden
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
HEALTHCHECK CMD curl -f http://localhost:8080 || exit 1
|
||||||
|
|
||||||
|
#ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
#CMD ["tail", "-f", "/dev/null"]
|
||||||
|
CMD nginx -g 'daemon off;'
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
@@ -69,7 +73,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/about-key-connector/"
|
href="https://bitwarden.com/help/article/about-key-connector/"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<small>{{ "memberDecryptionKeyConnectorDesc" | i18n }}</small>
|
<small>{{ "memberDecryptionKeyConnectorDesc" | i18n }}</small>
|
||||||
</label>
|
</label>
|
||||||
@@ -98,7 +102,7 @@
|
|||||||
[disabled]="!enableTestKeyConnector"
|
[disabled]="!enableTestKeyConnector"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
*ngIf="keyConnectorUrl.pending"
|
*ngIf="keyConnectorUrl.pending"
|
||||||
@@ -111,11 +115,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="keyConnectorUrl.pristine && !keyConnectorUrl.pending">
|
<ng-container *ngIf="keyConnectorUrl.pristine && !keyConnectorUrl.pending">
|
||||||
<div class="text-danger" *ngIf="keyConnectorUrl.hasError('invalidUrl')" role="alert">
|
<div class="text-danger" *ngIf="keyConnectorUrl.hasError('invalidUrl')" role="alert">
|
||||||
<i class="fa fa-exclamation-circle" aria-hidden="true"></i>
|
<i class="bwi bwi-exclamation-circle" aria-hidden="true"></i>
|
||||||
{{ "keyConnectorTestFail" | i18n }}
|
{{ "keyConnectorTestFail" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-success" *ngIf="!keyConnectorUrl.hasError('invalidUrl')" role="alert">
|
<div class="text-success" *ngIf="!keyConnectorUrl.hasError('invalidUrl')" role="alert">
|
||||||
<i class="fa fa-check-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-check-circle" aria-hidden="true"></i>
|
||||||
{{ "keyConnectorTestSuccess" | i18n }}
|
{{ "keyConnectorTestSuccess" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
@@ -146,7 +150,7 @@
|
|||||||
appA11yTitle="{{ 'copyValue' | i18n }}"
|
appA11yTitle="{{ 'copyValue' | i18n }}"
|
||||||
(click)="copy(callbackPath)"
|
(click)="copy(callbackPath)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -162,7 +166,7 @@
|
|||||||
appA11yTitle="{{ 'copyValue' | i18n }}"
|
appA11yTitle="{{ 'copyValue' | i18n }}"
|
||||||
(click)="copy(signedOutCallbackPath)"
|
(click)="copy(signedOutCallbackPath)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -261,7 +265,7 @@
|
|||||||
appA11yTitle="{{ 'copyValue' | i18n }}"
|
appA11yTitle="{{ 'copyValue' | i18n }}"
|
||||||
(click)="copy(spEntityId)"
|
(click)="copy(spEntityId)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -277,7 +281,7 @@
|
|||||||
appA11yTitle="{{ 'launch' | i18n }}"
|
appA11yTitle="{{ 'launch' | i18n }}"
|
||||||
(click)="launchUri(spMetadataUrl)"
|
(click)="launchUri(spMetadataUrl)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-external-link" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-external-link" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@@ -285,7 +289,7 @@
|
|||||||
appA11yTitle="{{ 'copyValue' | i18n }}"
|
appA11yTitle="{{ 'copyValue' | i18n }}"
|
||||||
(click)="copy(spMetadataUrl)"
|
(click)="copy(spMetadataUrl)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -301,7 +305,7 @@
|
|||||||
appA11yTitle="{{ 'copyValue' | i18n }}"
|
appA11yTitle="{{ 'copyValue' | i18n }}"
|
||||||
(click)="copy(spAcsUrl)"
|
(click)="copy(spAcsUrl)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -482,7 +486,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="card-body text-center" *ngIf="loading">
|
<div class="card-body text-center" *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
{{ "loading" | i18n }}
|
{{ "loading" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="!loading">
|
<ng-container *ngIf="!loading">
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<a class="btn btn-sm btn-outline-primary ml-3" routerLink="create" *ngIf="manageOrganizations">
|
<a class="btn btn-sm btn-outline-primary ml-3" routerLink="create" *ngIf="manageOrganizations">
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "newClientOrganization" | i18n }}
|
{{ "newClientOrganization" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<button
|
<button
|
||||||
@@ -21,14 +21,18 @@
|
|||||||
(click)="addExistingOrganization()"
|
(click)="addExistingOrganization()"
|
||||||
*ngIf="manageOrganizations && showAddExisting"
|
*ngIf="manageOrganizations && showAddExisting"
|
||||||
>
|
>
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "addExistingOrganization" | i18n }}
|
{{ "addExistingOrganization" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
@@ -67,11 +71,11 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(o)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(o)">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
[disabled]="loaded && refreshForm.loading"
|
[disabled]="loaded && refreshForm.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-refresh fa-fw"
|
class="bwi bwi-refresh bwi-fw"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-spin': loaded && refreshForm.loading }"
|
[ngClass]="{ 'bwi-spin': loaded && refreshForm.loading }"
|
||||||
></i>
|
></i>
|
||||||
{{ "refresh" | i18n }}
|
{{ "refresh" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
@@ -47,14 +47,18 @@
|
|||||||
(click)="exportEvents()"
|
(click)="exportEvents()"
|
||||||
[disabled]="(loaded && exportForm.loading) || dirtyDates"
|
[disabled]="(loaded && exportForm.loading) || dirtyDates"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" aria-hidden="true"></i>
|
||||||
<span>{{ "export" | i18n }}</span>
|
<span>{{ "export" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="!loaded">
|
<ng-container *ngIf="!loaded">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
@@ -75,7 +79,7 @@
|
|||||||
<td>{{ e.date | date: "medium" }}</td>
|
<td>{{ e.date | date: "medium" }}</td>
|
||||||
<td>
|
<td>
|
||||||
<i
|
<i
|
||||||
class="text-muted fa fa-lg {{ e.appIcon }}"
|
class="text-muted bwi bwi-lg {{ e.appIcon }}"
|
||||||
title="{{ e.appName }}, {{ e.ip }}"
|
title="{{ e.appName }}, {{ e.ip }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -97,7 +101,7 @@
|
|||||||
[disabled]="loaded && moreBtn.loading"
|
[disabled]="loaded && moreBtn.loading"
|
||||||
*ngIf="continuationToken"
|
*ngIf="continuationToken"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "loadMore" | i18n }}</span>
|
<span>{{ "loadMore" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|||||||
@@ -52,11 +52,11 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog" aria-hidden="true"></i>
|
<i class="bwi bwi-cog" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bulkActionsButton">
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bulkActionsButton">
|
||||||
<button class="dropdown-item" appStopClick (click)="bulkReinvite()">
|
<button class="dropdown-item" appStopClick (click)="bulkReinvite()">
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "reinviteSelected" | i18n }}
|
{{ "reinviteSelected" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -65,32 +65,36 @@
|
|||||||
(click)="bulkConfirm()"
|
(click)="bulkConfirm()"
|
||||||
*ngIf="showBulkConfirmUsers"
|
*ngIf="showBulkConfirmUsers"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "confirmSelected" | i18n }}
|
{{ "confirmSelected" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button class="dropdown-item text-danger" appStopClick (click)="bulkRemove()">
|
<button class="dropdown-item text-danger" appStopClick (click)="bulkRemove()">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
||||||
<i class="fa fa-fw fa-check-square-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check-square" aria-hidden="true"></i>
|
||||||
{{ "selectAll" | i18n }}
|
{{ "selectAll" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button class="dropdown-item" appStopClick (click)="selectAll(false)">
|
<button class="dropdown-item" appStopClick (click)="selectAll(false)">
|
||||||
<i class="fa fa-fw fa-minus-square-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-minus-square" aria-hidden="true"></i>
|
||||||
{{ "unselectAll" | i18n }}
|
{{ "unselectAll" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="invite()">
|
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="invite()">
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "inviteUser" | i18n }}
|
{{ "inviteUser" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
@@ -104,7 +108,7 @@
|
|||||||
<app-callout
|
<app-callout
|
||||||
type="info"
|
type="info"
|
||||||
title="{{ 'confirmUsers' | i18n }}"
|
title="{{ 'confirmUsers' | i18n }}"
|
||||||
icon="fa-check-circle"
|
icon="bwi bwi-check-circle"
|
||||||
*ngIf="showConfirmUsers"
|
*ngIf="showConfirmUsers"
|
||||||
>
|
>
|
||||||
{{ "providerUsersNeedConfirmed" | i18n }}
|
{{ "providerUsersNeedConfirmed" | i18n }}
|
||||||
@@ -128,7 +132,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" appStopClick (click)="edit(u)">{{ u.email }}</a>
|
<a href="#" appStopClick (click)="edit(u)">{{ u.email }}</a>
|
||||||
@@ -142,7 +147,11 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<ng-container *ngIf="u.twoFactorEnabled">
|
<ng-container *ngIf="u.twoFactorEnabled">
|
||||||
<i class="fa fa-lock" title="{{ 'userUsingTwoStep' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-lock"
|
||||||
|
title="{{ 'userUsingTwoStep' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "userUsingTwoStep" | i18n }}</span>
|
<span class="sr-only">{{ "userUsingTwoStep" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</td>
|
</td>
|
||||||
@@ -161,7 +170,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -171,7 +180,7 @@
|
|||||||
(click)="reinvite(u)"
|
(click)="reinvite(u)"
|
||||||
*ngIf="u.status === userStatusType.Invited"
|
*ngIf="u.status === userStatusType.Invited"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "resendInvitation" | i18n }}
|
{{ "resendInvitation" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -181,7 +190,7 @@
|
|||||||
(click)="confirm(u)"
|
(click)="confirm(u)"
|
||||||
*ngIf="u.status === userStatusType.Accepted"
|
*ngIf="u.status === userStatusType.Accepted"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "confirm" | i18n }}
|
{{ "confirm" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -191,7 +200,7 @@
|
|||||||
(click)="groups(u)"
|
(click)="groups(u)"
|
||||||
*ngIf="accessGroups"
|
*ngIf="accessGroups"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-sitemap" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-sitemap" aria-hidden="true"></i>
|
||||||
{{ "groups" | i18n }}
|
{{ "groups" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -201,11 +210,11 @@
|
|||||||
(click)="events(u)"
|
(click)="events(u)"
|
||||||
*ngIf="accessEvents && u.status === userStatusType.Confirmed"
|
*ngIf="accessEvents && u.status === userStatusType.Confirmed"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-file-text-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-file-text" aria-hidden="true"></i>
|
||||||
{{ "eventLogs" | i18n }}
|
{{ "eventLogs" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(u)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(u)">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-remove" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/user-types-access-control/#user-types"
|
href="https://bitwarden.com/help/article/user-types-access-control/#user-types"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="form-check mt-2 form-check-block">
|
<div class="form-check mt-2 form-check-block">
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
@@ -106,12 +106,12 @@
|
|||||||
[appApiAction]="deletePromise"
|
[appApiAction]="deletePromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="ml-3 card border-danger text-danger bg-transparent" *ngIf="!provider.enabled">
|
<div class="ml-3 card border-danger text-danger bg-transparent" *ngIf="!provider.enabled">
|
||||||
<div class="card-body py-2">
|
<div class="card-body py-2">
|
||||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
|
||||||
{{ "providerIsDisabled" | i18n }}
|
{{ "providerIsDisabled" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -18,19 +18,19 @@
|
|||||||
<ul class="nav nav-tabs" *ngIf="showMenuBar">
|
<ul class="nav nav-tabs" *ngIf="showMenuBar">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" routerLink="clients" routerLinkActive="active">
|
<a class="nav-link" routerLink="clients" routerLinkActive="active">
|
||||||
<i class="fa fa-university" aria-hidden="true"></i>
|
<i class="bwi bwi-bank" aria-hidden="true"></i>
|
||||||
{{ "clients" | i18n }}
|
{{ "clients" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" *ngIf="showManageTab">
|
<li class="nav-item" *ngIf="showManageTab">
|
||||||
<a class="nav-link" [routerLink]="manageRoute" routerLinkActive="active">
|
<a class="nav-link" [routerLink]="manageRoute" routerLinkActive="active">
|
||||||
<i class="fa fa-sliders" aria-hidden="true"></i>
|
<i class="bwi bwi-sliders" aria-hidden="true"></i>
|
||||||
{{ "manage" | i18n }}
|
{{ "manage" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" *ngIf="showSettingsTab">
|
<li class="nav-item" *ngIf="showSettingsTab">
|
||||||
<a class="nav-link" routerLink="settings" routerLinkActive="active">
|
<a class="nav-link" routerLink="settings" routerLinkActive="active">
|
||||||
<i class="fa fa-cogs" aria-hidden="true"></i>
|
<i class="bwi bwi-cogs" aria-hidden="true"></i>
|
||||||
{{ "settings" | i18n }}
|
{{ "settings" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
<h1>{{ "myProvider" | i18n }}</h1>
|
<h1>{{ "myProvider" | i18n }}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="loading">
|
<div *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</div>
|
</div>
|
||||||
<form
|
<form
|
||||||
@@ -42,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
<div class="mt-4">
|
<div class="mt-4">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" (click)="cancel()" *ngIf="showCancel">
|
<button type="button" class="btn btn-outline-secondary" (click)="cancel()" *ngIf="showCancel">
|
||||||
|
|||||||
@@ -48,9 +48,7 @@ export class SetupComponent implements OnInit {
|
|||||||
"error",
|
"error",
|
||||||
null,
|
null,
|
||||||
this.i18nService.t("emergencyInviteAcceptFailed"),
|
this.i18nService.t("emergencyInviteAcceptFailed"),
|
||||||
{
|
{ timeout: 10000 }
|
||||||
timeout: 10000,
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
this.router.navigate(["/"]);
|
this.router.navigate(["/"]);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ mkhomedir_helper $USERNAME
|
|||||||
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
|
chown -R $USERNAME:$GROUPNAME /etc/bitwarden
|
||||||
cp /etc/bitwarden/web/app-id.json /app/app-id.json
|
cp /etc/bitwarden/web/app-id.json /app/app-id.json
|
||||||
chown -R $USERNAME:$GROUPNAME /app
|
chown -R $USERNAME:$GROUPNAME /app
|
||||||
chown -R $USERNAME:$GROUPNAME /bitwarden_server
|
#chown -R $USERNAME:$GROUPNAME /bitwarden_server
|
||||||
|
|
||||||
exec gosu $USERNAME:$GROUPNAME dotnet /bitwarden_server/Server.dll \
|
#exec nginx -g 'daemon off;'
|
||||||
/contentRoot=/app /webRoot=. /serveUnknown=false /webVault=true
|
|
||||||
138
docker/mime.types
Normal file
138
docker/mime.types
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
types {
|
||||||
|
|
||||||
|
# Data interchange
|
||||||
|
|
||||||
|
application/atom+xml atom;
|
||||||
|
application/json json map topojson;
|
||||||
|
application/ld+json jsonld;
|
||||||
|
application/rss+xml rss;
|
||||||
|
application/vnd.geo+json geojson;
|
||||||
|
application/xml rdf xml;
|
||||||
|
|
||||||
|
|
||||||
|
# JavaScript
|
||||||
|
|
||||||
|
# Normalize to standard type.
|
||||||
|
# https://tools.ietf.org/html/rfc4329#section-7.2
|
||||||
|
application/javascript js;
|
||||||
|
|
||||||
|
|
||||||
|
# Manifest files
|
||||||
|
|
||||||
|
application/manifest+json webmanifest;
|
||||||
|
application/x-web-app-manifest+json webapp;
|
||||||
|
text/cache-manifest appcache;
|
||||||
|
|
||||||
|
|
||||||
|
# Media files
|
||||||
|
|
||||||
|
audio/midi mid midi kar;
|
||||||
|
audio/mp4 aac f4a f4b m4a;
|
||||||
|
audio/mpeg mp3;
|
||||||
|
audio/ogg oga ogg opus;
|
||||||
|
audio/x-realaudio ra;
|
||||||
|
audio/x-wav wav;
|
||||||
|
image/bmp bmp;
|
||||||
|
image/gif gif;
|
||||||
|
image/jpeg jpeg jpg;
|
||||||
|
image/jxr jxr hdp wdp;
|
||||||
|
image/png png;
|
||||||
|
image/svg+xml svg svgz;
|
||||||
|
image/tiff tif tiff;
|
||||||
|
image/vnd.wap.wbmp wbmp;
|
||||||
|
image/webp webp;
|
||||||
|
image/x-jng jng;
|
||||||
|
video/3gpp 3gp 3gpp;
|
||||||
|
video/mp4 f4p f4v m4v mp4;
|
||||||
|
video/mpeg mpeg mpg;
|
||||||
|
video/ogg ogv;
|
||||||
|
video/quicktime mov;
|
||||||
|
video/webm webm;
|
||||||
|
video/x-flv flv;
|
||||||
|
video/x-mng mng;
|
||||||
|
video/x-ms-asf asf asx;
|
||||||
|
video/x-ms-wmv wmv;
|
||||||
|
video/x-msvideo avi;
|
||||||
|
|
||||||
|
# Serving `.ico` image files with a different media type
|
||||||
|
# prevents Internet Explorer from displaying then as images:
|
||||||
|
# https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee
|
||||||
|
|
||||||
|
image/x-icon cur ico;
|
||||||
|
|
||||||
|
|
||||||
|
# Microsoft Office
|
||||||
|
|
||||||
|
application/msword doc;
|
||||||
|
application/vnd.ms-excel xls;
|
||||||
|
application/vnd.ms-powerpoint ppt;
|
||||||
|
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
|
||||||
|
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
|
||||||
|
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
|
||||||
|
|
||||||
|
|
||||||
|
# Web fonts
|
||||||
|
|
||||||
|
application/font-woff woff;
|
||||||
|
application/font-woff2 woff2;
|
||||||
|
application/vnd.ms-fontobject eot;
|
||||||
|
|
||||||
|
# Browsers usually ignore the font media types and simply sniff
|
||||||
|
# the bytes to figure out the font type.
|
||||||
|
# https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern
|
||||||
|
#
|
||||||
|
# However, Blink and WebKit based browsers will show a warning
|
||||||
|
# in the console if the following font types are served with any
|
||||||
|
# other media types.
|
||||||
|
|
||||||
|
application/x-font-ttf ttc ttf;
|
||||||
|
font/opentype otf;
|
||||||
|
|
||||||
|
|
||||||
|
# Other
|
||||||
|
|
||||||
|
application/java-archive ear jar war;
|
||||||
|
application/mac-binhex40 hqx;
|
||||||
|
application/octet-stream bin deb dll dmg exe img iso msi msm msp safariextz;
|
||||||
|
application/pdf pdf;
|
||||||
|
application/postscript ai eps ps;
|
||||||
|
application/rtf rtf;
|
||||||
|
application/vnd.google-earth.kml+xml kml;
|
||||||
|
application/vnd.google-earth.kmz kmz;
|
||||||
|
application/vnd.wap.wmlc wmlc;
|
||||||
|
application/x-7z-compressed 7z;
|
||||||
|
application/x-bb-appworld bbaw;
|
||||||
|
application/x-bittorrent torrent;
|
||||||
|
application/x-chrome-extension crx;
|
||||||
|
application/x-cocoa cco;
|
||||||
|
application/x-java-archive-diff jardiff;
|
||||||
|
application/x-java-jnlp-file jnlp;
|
||||||
|
application/x-makeself run;
|
||||||
|
application/x-opera-extension oex;
|
||||||
|
application/x-perl pl pm;
|
||||||
|
application/x-pilot pdb prc;
|
||||||
|
application/x-rar-compressed rar;
|
||||||
|
application/x-redhat-package-manager rpm;
|
||||||
|
application/x-sea sea;
|
||||||
|
application/x-shockwave-flash swf;
|
||||||
|
application/x-stuffit sit;
|
||||||
|
application/x-tcl tcl tk;
|
||||||
|
application/x-x509-ca-cert crt der pem;
|
||||||
|
application/x-xpinstall xpi;
|
||||||
|
application/xhtml+xml xhtml;
|
||||||
|
application/xslt+xml xsl;
|
||||||
|
application/zip zip;
|
||||||
|
text/css css;
|
||||||
|
text/csv csv;
|
||||||
|
text/html htm html shtml;
|
||||||
|
text/markdown md;
|
||||||
|
text/mathml mml;
|
||||||
|
text/plain txt;
|
||||||
|
text/vcard vcard vcf;
|
||||||
|
text/vnd.rim.location.xloc xloc;
|
||||||
|
text/vnd.sun.j2me.app-descriptor jad;
|
||||||
|
text/vnd.wap.wml wml;
|
||||||
|
text/vtt vtt;
|
||||||
|
text/x-component htc;
|
||||||
|
|
||||||
|
}
|
||||||
25
docker/nginx-web.conf
Normal file
25
docker/nginx-web.conf
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#######################################################################
|
||||||
|
# WARNING: This file is generated. Do not make changes to this file. #
|
||||||
|
# They will be overwritten on update. You can manage various settings #
|
||||||
|
# used in this file from the ./bwdata/config.yml file for your #
|
||||||
|
# installation. #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 8080 default_server;
|
||||||
|
listen [::]:8080 default_server;
|
||||||
|
include /etc/nginx/security-headers.conf;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
root /app;
|
||||||
|
index index.html index.htm;
|
||||||
|
include /etc/nginx/security-headers.conf;
|
||||||
|
add_header X-Frame-Options SAMEORIGIN;
|
||||||
|
add_header X-Robots-Tag "noindex, nofollow";
|
||||||
|
}
|
||||||
|
|
||||||
|
location /alive {
|
||||||
|
return 200 'alive';
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
}
|
||||||
|
}
|
||||||
147
docker/nginx.conf
Normal file
147
docker/nginx.conf
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
# nginx Configuration File
|
||||||
|
# http://wiki.nginx.org/Configuration
|
||||||
|
|
||||||
|
# Run as a less privileged user for security reasons.
|
||||||
|
# user www www;
|
||||||
|
|
||||||
|
# How many worker threads to run;
|
||||||
|
# "auto" sets it to the number of CPU cores available in the system, and
|
||||||
|
# offers the best performance. Don't set it higher than the number of CPU
|
||||||
|
# cores if changing this parameter.
|
||||||
|
|
||||||
|
# The maximum number of connections for Nginx is calculated by:
|
||||||
|
# max_clients = worker_processes * worker_connections
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
# Maximum open file descriptors per process;
|
||||||
|
# should be > worker_connections.
|
||||||
|
worker_rlimit_nofile 8192;
|
||||||
|
|
||||||
|
events {
|
||||||
|
# When you need > 8000 * cpu_cores connections, you start optimizing your OS,
|
||||||
|
# and this is probably the point at which you hire people who are smarter than
|
||||||
|
# you, as this is *a lot* of requests.
|
||||||
|
worker_connections 8000;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Default error log file
|
||||||
|
# (this is only used when you don't override error_log on a server{} level)
|
||||||
|
error_log /var/log/nginx/error.log warn;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
http {
|
||||||
|
# Hide nginx version information.
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
# Define the MIME types for files.
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
# Update charset_types to match updated mime.types.
|
||||||
|
# text/html is always included by charset module.
|
||||||
|
# Default: text/html text/xml text/plain text/vnd.wap.wml application/javascript application/rss+xml
|
||||||
|
charset_types
|
||||||
|
text/css
|
||||||
|
text/plain
|
||||||
|
text/vnd.wap.wml
|
||||||
|
application/javascript
|
||||||
|
application/json
|
||||||
|
application/rss+xml
|
||||||
|
application/xml;
|
||||||
|
|
||||||
|
# Format to use in log files
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
# Default log file
|
||||||
|
# (this is only used when you don't override access_log on a server{} level)
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
# How long to allow each connection to stay idle; longer values are better
|
||||||
|
# for each individual client, particularly for SSL, but means that worker
|
||||||
|
# connections are tied up longer. (Default: 65)
|
||||||
|
keepalive_timeout 20;
|
||||||
|
|
||||||
|
# Speed up file transfers by using sendfile() to copy directly
|
||||||
|
# between descriptors rather than using read()/write().
|
||||||
|
# For performance reasons, on FreeBSD systems w/ ZFS
|
||||||
|
# this option should be disabled as ZFS's ARC caches
|
||||||
|
# frequently used files in RAM by default.
|
||||||
|
sendfile on;
|
||||||
|
|
||||||
|
# Tell Nginx not to send out partial frames; this increases throughput
|
||||||
|
# since TCP frames are filled up before being sent out. (adds TCP_CORK)
|
||||||
|
tcp_nopush on;
|
||||||
|
|
||||||
|
|
||||||
|
# Compression
|
||||||
|
|
||||||
|
# Enable Gzip compressed.
|
||||||
|
gzip on;
|
||||||
|
|
||||||
|
# Compression level (1-9).
|
||||||
|
# 5 is a perfect compromise between size and cpu usage, offering about
|
||||||
|
# 75% reduction for most ascii files (almost identical to level 9).
|
||||||
|
gzip_comp_level 5;
|
||||||
|
|
||||||
|
# Don't compress anything that's already small and unlikely to shrink much
|
||||||
|
# if at all (the default is 20 bytes, which is bad as that usually leads to
|
||||||
|
# larger files after gzipping).
|
||||||
|
gzip_min_length 256;
|
||||||
|
|
||||||
|
# Compress data even for clients that are connecting to us via proxies,
|
||||||
|
# identified by the "Via" header (required for CloudFront).
|
||||||
|
gzip_proxied any;
|
||||||
|
|
||||||
|
# Tell proxies to cache both the gzipped and regular version of a resource
|
||||||
|
# whenever the client's Accept-Encoding capabilities header varies;
|
||||||
|
# Avoids the issue where a non-gzip capable client (which is extremely rare
|
||||||
|
# today) would display gibberish if their proxy gave them the gzipped version.
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
# Compress all output labeled with one of the following MIME-types.
|
||||||
|
gzip_types
|
||||||
|
application/atom+xml
|
||||||
|
application/javascript
|
||||||
|
application/json
|
||||||
|
application/ld+json
|
||||||
|
application/manifest+json
|
||||||
|
application/rss+xml
|
||||||
|
application/vnd.geo+json
|
||||||
|
application/vnd.ms-fontobject
|
||||||
|
application/x-font-ttf
|
||||||
|
application/x-web-app-manifest+json
|
||||||
|
application/xhtml+xml
|
||||||
|
application/xml
|
||||||
|
font/opentype
|
||||||
|
image/bmp
|
||||||
|
image/svg+xml
|
||||||
|
image/x-icon
|
||||||
|
text/cache-manifest
|
||||||
|
text/css
|
||||||
|
text/plain
|
||||||
|
text/vcard
|
||||||
|
text/vnd.rim.location.xloc
|
||||||
|
text/vtt
|
||||||
|
text/x-component
|
||||||
|
text/x-cross-domain-policy;
|
||||||
|
# text/html is always compressed by HttpGzipModule
|
||||||
|
|
||||||
|
# This should be turned on if you are going to have pre-compressed copies (.gz) of
|
||||||
|
# static files available. If not it should be left off as it will cause extra I/O
|
||||||
|
# for the check. It is best if you enable this in a location{} block for
|
||||||
|
# a specific directory, or on an individual server{} level.
|
||||||
|
# gzip_static on;
|
||||||
|
|
||||||
|
# Content type for FIDO U2F facets
|
||||||
|
map $uri $fido_content_type {
|
||||||
|
default "application/fido.trusted-apps+json";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Include files in the sites-enabled folder. server{} configuration files should be
|
||||||
|
# placed in the sites-available folder, and then the configuration should be enabled
|
||||||
|
# by creating a symlink to it in the sites-enabled folder.
|
||||||
|
# See doc/sites-enabled.md for more info.
|
||||||
|
include conf.d/*.conf;
|
||||||
|
}
|
||||||
3
docker/security-headers.conf
Normal file
3
docker/security-headers.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
add_header Referrer-Policy same-origin;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
2
jslib
2
jslib
Submodule jslib updated: 54c6a4b3c3...e372bf242b
12
src/404.html
12
src/404.html
@@ -9,13 +9,7 @@
|
|||||||
href="/404/bootstrap.min.css"
|
href="/404/bootstrap.min.css"
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
type="text/css"
|
type="text/css"
|
||||||
integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l"
|
integrity="sha384-hA/ESrxp2b05ywLtD9YwM6m+pNyLRY4+ruk6dWK00SM4k6SQs0bfrITJVSf6uZyH"
|
||||||
/>
|
|
||||||
<link
|
|
||||||
href="/404/font-awesome.min.css"
|
|
||||||
rel="stylesheet"
|
|
||||||
type="text/css"
|
|
||||||
integrity="sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw=="
|
|
||||||
/>
|
/>
|
||||||
<link href="/404/styles.css" rel="stylesheet" type="text/css" />
|
<link href="/404/styles.css" rel="stylesheet" type="text/css" />
|
||||||
|
|
||||||
@@ -33,7 +27,9 @@
|
|||||||
<div class="banner">
|
<div class="banner">
|
||||||
<div class="container inner banner">
|
<div class="container inner banner">
|
||||||
<div class="row align-items-center">
|
<div class="row align-items-center">
|
||||||
<div class="col brand"><i class="fa fa-shield"></i> <strong>bit</strong>warden</div>
|
<div class="col brand">
|
||||||
|
<i class="bwi bwi-shield"></i> <strong>bit</strong>warden
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
4
src/404/font-awesome.min.css
vendored
4
src/404/font-awesome.min.css
vendored
File diff suppressed because one or more lines are too long
@@ -119,3 +119,33 @@ h2 {
|
|||||||
padding: 40px 0 40px 0;
|
padding: 40px 0 40px 0;
|
||||||
border-top: 1px solid #dee2e6;
|
border-top: 1px solid #dee2e6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Bitwarden icons, manually copied */
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: "bwi-font";
|
||||||
|
src: url(../images/bwi-font.svg) format("svg"), url(../fonts/bwi-font.ttf) format("truetype"),
|
||||||
|
url(../fonts/bwi-font.woff) format("woff"), url(../fonts/bwi-font.woff2) format("woff2");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bwi {
|
||||||
|
/* use !important to prevent issues with browser extensions that change fonts */
|
||||||
|
font-family: "bwi-font" !important;
|
||||||
|
speak: never;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
text-transform: none;
|
||||||
|
line-height: 1;
|
||||||
|
display: inline-block;
|
||||||
|
/* Better Font Rendering */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bwi-shield:before {
|
||||||
|
content: "\e932";
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img src="../../images/logo-dark@2x.png" class="mb-4 logo" alt="Bitwarden" />
|
<img src="../../images/logo-dark@2x.png" class="mb-4 logo" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
>
|
>
|
||||||
<span [hidden]="form.loading">{{ "submit" | i18n }}</span>
|
<span [hidden]="form.loading">{{ "submit" | i18n }}</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="row justify-content-md-center mt-5">
|
<div class="row justify-content-md-center mt-5">
|
||||||
<div class="col-5">
|
<div class="col-5">
|
||||||
<p class="text-center mb-4">
|
<p class="text-center mb-4">
|
||||||
<i class="fa fa-lock fa-4x text-muted" aria-hidden="true"></i>
|
<i class="bwi bwi-lock bwi-4x text-muted" aria-hidden="true"></i>
|
||||||
</p>
|
</p>
|
||||||
<p class="lead text-center mx-4 mb-4">{{ "yourVaultIsLocked" | i18n }}</p>
|
<p class="lead text-center mx-4 mb-4">{{ "yourVaultIsLocked" | i18n }}</p>
|
||||||
<div class="card d-block">
|
<div class="card d-block">
|
||||||
@@ -27,9 +27,9 @@
|
|||||||
(click)="togglePassword()"
|
(click)="togglePassword()"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -44,11 +44,9 @@
|
|||||||
class="btn btn-primary btn-block btn-submit"
|
class="btn btn-primary btn-block btn-submit"
|
||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<span>
|
<span> <i class="bwi bwi-unlock" aria-hidden="true"></i> {{ "unlock" | i18n }} </span>
|
||||||
<i class="fa fa-unlock-alt" aria-hidden="true"></i> {{ "unlock" | i18n }}
|
|
||||||
</span>
|
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -44,9 +44,9 @@
|
|||||||
(click)="togglePassword()"
|
(click)="togglePassword()"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -74,9 +74,9 @@
|
|||||||
class="btn btn-primary btn-block btn-submit"
|
class="btn btn-primary btn-block btn-submit"
|
||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<span> <i class="fa fa-sign-in" aria-hidden="true"></i> {{ "logIn" | i18n }} </span>
|
<span> <i class="bwi bwi-sign-in" aria-hidden="true"></i> {{ "logIn" | i18n }} </span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -86,12 +86,13 @@
|
|||||||
[queryParams]="{ email: email }"
|
[queryParams]="{ email: email }"
|
||||||
class="btn btn-outline-secondary btn-block ml-2 mt-0"
|
class="btn btn-outline-secondary btn-block ml-2 mt-0"
|
||||||
>
|
>
|
||||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i> {{ "createAccount" | i18n }}
|
<i class="bwi bwi-pencil-square-o" aria-hidden="true"></i>
|
||||||
|
{{ "createAccount" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex">
|
<div class="d-flex">
|
||||||
<a routerLink="/sso" class="btn btn-outline-secondary btn-block mt-2">
|
<a routerLink="/sso" class="btn btn-outline-secondary btn-block mt-2">
|
||||||
<i class="fa fa-bank" aria-hidden="true"></i> {{ "enterpriseSingleSignOn" | i18n }}
|
<i class="bwi bwi-bank" aria-hidden="true"></i> {{ "enterpriseSingleSignOn" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
>
|
>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
>
|
>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
<app-callout
|
<app-callout
|
||||||
title="{{ 'createOrganizationStep1' | i18n }}"
|
title="{{ 'createOrganizationStep1' | i18n }}"
|
||||||
type="info"
|
type="info"
|
||||||
icon="fa-thumb-tack"
|
icon="bwi bwi-thumb-tack"
|
||||||
*ngIf="showCreateOrgMessage"
|
*ngIf="showCreateOrgMessage"
|
||||||
>
|
>
|
||||||
{{ "createOrganizationCreatePersonalAccount" | i18n }}
|
{{ "createOrganizationCreatePersonalAccount" | i18n }}
|
||||||
@@ -114,11 +114,11 @@
|
|||||||
(click)="togglePassword(false)"
|
(click)="togglePassword(false)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{
|
[ngClass]="{
|
||||||
'fa-eye': !showPassword,
|
'bwi-eye': !showPassword,
|
||||||
'fa-eye-slash': showPassword
|
'bwi-eye-slash': showPassword
|
||||||
}"
|
}"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
@@ -146,9 +146,9 @@
|
|||||||
(click)="togglePassword(true)"
|
(click)="togglePassword(true)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -197,7 +197,7 @@
|
|||||||
>
|
>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
[disabled]="actionPromise"
|
[disabled]="actionPromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
*ngIf="continuing"
|
*ngIf="continuing"
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
[disabled]="actionPromise"
|
[disabled]="actionPromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
*ngIf="leaving"
|
*ngIf="leaving"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<p class="lead text-center mb-4">{{ "setMasterPassword" | i18n }}</p>
|
<p class="lead text-center mb-4">{{ "setMasterPassword" | i18n }}</p>
|
||||||
<div class="card d-block">
|
<div class="card d-block">
|
||||||
<div class="card-body text-center" *ngIf="syncLoading">
|
<div class="card-body text-center" *ngIf="syncLoading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
{{ "loading" | i18n }}
|
{{ "loading" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body" *ngIf="!syncLoading">
|
<div class="card-body" *ngIf="!syncLoading">
|
||||||
@@ -47,9 +47,9 @@
|
|||||||
(click)="togglePassword(false)"
|
(click)="togglePassword(false)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="progress-bar invisible"></div>
|
<div class="progress-bar invisible"></div>
|
||||||
@@ -76,9 +76,9 @@
|
|||||||
(click)="togglePassword(true)"
|
(click)="togglePassword(true)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<img class="logo mb-2 logo-themed" alt="Bitwarden" />
|
<img class="logo mb-2 logo-themed" alt="Bitwarden" />
|
||||||
<div class="card d-block mt-4">
|
<div class="card d-block mt-4">
|
||||||
<div class="card-body" *ngIf="loggingIn">
|
<div class="card-body" *ngIf="loggingIn">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
{{ "loading" | i18n }}
|
{{ "loading" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body" *ngIf="!loggingIn">
|
<div class="card-body" *ngIf="!loggingIn">
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
class="btn btn-primary btn-block btn-submit"
|
class="btn btn-primary btn-block btn-submit"
|
||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<span> <i class="fa fa-sign-in" aria-hidden="true"></i> {{ "logIn" | i18n }} </span>
|
<span> <i class="bwi bwi-sign-in" aria-hidden="true"></i> {{ "logIn" | i18n }} </span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner text-muted fa-spin pull-right"
|
class="bwi bwi-spinner text-muted bwi-spin pull-right"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
*ngIf="form.loading && selectedProviderType === providerType.WebAuthn"
|
*ngIf="form.loading && selectedProviderType === providerType.WebAuthn"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -127,10 +127,10 @@
|
|||||||
"
|
"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
<i class="fa fa-sign-in" aria-hidden="true"></i> {{ "continue" | i18n }}
|
<i class="bwi bwi-sign-in" aria-hidden="true"></i> {{ "continue" | i18n }}
|
||||||
</span>
|
</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -36,9 +36,9 @@
|
|||||||
(click)="togglePassword(false)"
|
(click)="togglePassword(false)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="progress-bar invisible"></div>
|
<div class="progress-bar invisible"></div>
|
||||||
@@ -64,9 +64,9 @@
|
|||||||
(click)="togglePassword(true)"
|
(click)="togglePassword(true)"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
<img class="mb-4 logo logo-themed" alt="Bitwarden" />
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
>
|
>
|
||||||
<span>{{ "deleteAccount" | i18n }}</span>
|
<span>{{ "deleteAccount" | i18n }}</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -164,7 +164,6 @@ export class AppComponent implements OnDestroy, OnInit {
|
|||||||
this.setFullWidth();
|
this.setFullWidth();
|
||||||
break;
|
break;
|
||||||
case "convertAccountToKeyConnector":
|
case "convertAccountToKeyConnector":
|
||||||
this.keyConnectorService.setConvertAccountRequired(true);
|
|
||||||
this.router.navigate(["/remove-password"]);
|
this.router.navigate(["/remove-password"]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -60,9 +60,7 @@ export abstract class BaseAcceptComponent implements OnInit {
|
|||||||
errorMessage != null
|
errorMessage != null
|
||||||
? this.i18nService.t(this.failedShortMessage, errorMessage)
|
? this.i18nService.t(this.failedShortMessage, errorMessage)
|
||||||
: this.i18nService.t(this.failedMessage);
|
: this.i18nService.t(this.failedMessage);
|
||||||
this.platformUtilService.showToast("error", null, message, {
|
this.platformUtilService.showToast("error", null, message, { timeout: 10000 });
|
||||||
timeout: 10000,
|
|
||||||
});
|
|
||||||
this.router.navigate(["/"]);
|
this.router.navigate(["/"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -110,13 +110,7 @@ export abstract class BaseEventsComponent {
|
|||||||
endDate: string,
|
endDate: string,
|
||||||
continuationToken: string
|
continuationToken: string
|
||||||
): Promise<ListResponse<EventResponse>>;
|
): Promise<ListResponse<EventResponse>>;
|
||||||
protected abstract getUserName(
|
protected abstract getUserName(r: EventResponse, userId: string): { name: string; email: string };
|
||||||
r: EventResponse,
|
|
||||||
userId: string
|
|
||||||
): {
|
|
||||||
name: string;
|
|
||||||
email: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
protected async loadAndParseEvents(
|
protected async loadAndParseEvents(
|
||||||
startDate: string,
|
startDate: string,
|
||||||
@@ -144,10 +138,7 @@ export abstract class BaseEventsComponent {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
return {
|
return { continuationToken: response.continuationToken, events: events };
|
||||||
continuationToken: response.continuationToken,
|
|
||||||
events: events,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected parseDates() {
|
protected parseDates() {
|
||||||
@@ -181,13 +172,6 @@ export abstract class BaseEventsComponent {
|
|||||||
|
|
||||||
const data = await this.exportService.getEventExport(events);
|
const data = await this.exportService.getEventExport(events);
|
||||||
const fileName = this.exportService.getFileName(this.exportFileName, "csv");
|
const fileName = this.exportService.getFileName(this.exportFileName, "csv");
|
||||||
this.platformUtilsService.saveFile(
|
this.platformUtilsService.saveFile(window, data, { type: "text/plain" }, fileName);
|
||||||
window,
|
|
||||||
data,
|
|
||||||
{
|
|
||||||
type: "text/plain",
|
|
||||||
},
|
|
||||||
fileName
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,10 +35,7 @@ const MaxCheckedCount = 500;
|
|||||||
export abstract class BasePeopleComponent<
|
export abstract class BasePeopleComponent<
|
||||||
UserType extends ProviderUserUserDetailsResponse | OrganizationUserUserDetailsResponse
|
UserType extends ProviderUserUserDetailsResponse | OrganizationUserUserDetailsResponse
|
||||||
> {
|
> {
|
||||||
@ViewChild("confirmTemplate", {
|
@ViewChild("confirmTemplate", { read: ViewContainerRef, static: true })
|
||||||
read: ViewContainerRef,
|
|
||||||
static: true,
|
|
||||||
})
|
|
||||||
confirmModalRef: ViewContainerRef;
|
confirmModalRef: ViewContainerRef;
|
||||||
|
|
||||||
get allCount() {
|
get allCount() {
|
||||||
|
|||||||
@@ -6,18 +6,10 @@ import { Utils } from "jslib-common/misc/utils";
|
|||||||
templateUrl: "nested-checkbox.component.html",
|
templateUrl: "nested-checkbox.component.html",
|
||||||
})
|
})
|
||||||
export class NestedCheckboxComponent {
|
export class NestedCheckboxComponent {
|
||||||
@Input()
|
@Input() parentId: string;
|
||||||
parentId: string;
|
@Input() checkboxes: { id: string; get: () => boolean; set: (v: boolean) => void }[];
|
||||||
@Input()
|
@Output() onSavedUser = new EventEmitter();
|
||||||
checkboxes: {
|
@Output() onDeletedUser = new EventEmitter();
|
||||||
id: string;
|
|
||||||
get: () => boolean;
|
|
||||||
set: (v: boolean) => void;
|
|
||||||
}[];
|
|
||||||
@Output()
|
|
||||||
onSavedUser = new EventEmitter();
|
|
||||||
@Output()
|
|
||||||
onDeletedUser = new EventEmitter();
|
|
||||||
|
|
||||||
get parentIndeterminate() {
|
get parentIndeterminate() {
|
||||||
return !this.parentChecked && this.checkboxes.some((c) => c.get());
|
return !this.parentChecked && this.checkboxes.some((c) => c.get());
|
||||||
|
|||||||
@@ -32,12 +32,9 @@
|
|||||||
(click)="togglePassword()"
|
(click)="togglePassword()"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
'fa-eye': !showPassword,
|
|
||||||
'fa-eye-slash': showPassword
|
|
||||||
}"
|
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,9 +2,7 @@
|
|||||||
<div
|
<div
|
||||||
class="progress-bar {{ color }}"
|
class="progress-bar {{ color }}"
|
||||||
role="progressbar"
|
role="progressbar"
|
||||||
[ngStyle]="{
|
[ngStyle]="{ width: scoreWidth + '%' }"
|
||||||
width: scoreWidth + '%'
|
|
||||||
}"
|
|
||||||
attr.aria-valuenow="{{ scoreWidth }}"
|
attr.aria-valuenow="{{ scoreWidth }}"
|
||||||
aria-valuemin="0"
|
aria-valuemin="0"
|
||||||
aria-valuemax="100"
|
aria-valuemax="100"
|
||||||
|
|||||||
@@ -7,10 +7,8 @@ import { I18nService } from "jslib-common/abstractions/i18n.service";
|
|||||||
templateUrl: "password-strength.component.html",
|
templateUrl: "password-strength.component.html",
|
||||||
})
|
})
|
||||||
export class PasswordStrengthComponent implements OnChanges {
|
export class PasswordStrengthComponent implements OnChanges {
|
||||||
@Input()
|
@Input() score?: number;
|
||||||
score?: number;
|
@Input() showText = false;
|
||||||
@Input()
|
|
||||||
showText = false;
|
|
||||||
|
|
||||||
scoreWidth = 0;
|
scoreWidth = 0;
|
||||||
color = "bg-danger";
|
color = "bg-danger";
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
<div class="container footer text-muted">
|
<div class="container footer text-muted">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">© {{ year }}, Bitwarden Inc.</div>
|
||||||
©
|
|
||||||
{{ year }}, Bitwarden Inc.
|
|
||||||
</div>
|
|
||||||
<div class="col text-center"></div>
|
<div class="col text-center"></div>
|
||||||
<div class="col text-right">
|
<div class="col text-right">
|
||||||
{{ "versionNumber" | i18n: version }}
|
{{ "versionNumber" | i18n: version }}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
<div class="container my-5 text-muted text-center">
|
<div class="container my-5 text-muted text-center">
|
||||||
©
|
© {{ year }}, Bitwarden Inc. <br />
|
||||||
{{ year }}, Bitwarden Inc.
|
|
||||||
<br />
|
|
||||||
{{ "versionNumber" | i18n: version }}
|
{{ "versionNumber" | i18n: version }}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
<nav
|
<nav class="navbar navbar-expand navbar-dark" [ngClass]="{ 'nav-background-alt': selfHosted }">
|
||||||
class="navbar navbar-expand navbar-dark"
|
|
||||||
[ngClass]="{
|
|
||||||
'nav-background-alt': selfHosted
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a class="navbar-brand" routerLink="/" appA11yTitle="{{ 'pageTitle' | i18n: 'Bitwarden' }}">
|
<a class="navbar-brand" routerLink="/" appA11yTitle="{{ 'pageTitle' | i18n: 'Bitwarden' }}">
|
||||||
<i class="fa fa-shield" aria-hidden="true"></i>
|
<i class="bwi bwi-shield" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<div class="collapse navbar-collapse">
|
<div class="collapse navbar-collapse">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
@@ -44,7 +39,7 @@
|
|||||||
aria-haspopup="true"
|
aria-haspopup="true"
|
||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
>
|
>
|
||||||
<i class="fa fa-user-circle fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-user-circle bwi-lg" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="nav-profile">
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="nav-profile">
|
||||||
<div class="dropdown-item-text d-flex align-items-center" *ngIf="name" appStopProp>
|
<div class="dropdown-item-text d-flex align-items-center" *ngIf="name" appStopProp>
|
||||||
@@ -62,11 +57,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<a class="dropdown-item" href="#" routerLink="/settings/account">
|
<a class="dropdown-item" href="#" routerLink="/settings/account">
|
||||||
<i class="fa fa-fw fa-user" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-user" aria-hidden="true"></i>
|
||||||
{{ "myAccount" | i18n }}
|
{{ "myAccount" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item" href="https://help.bitwarden.com" target="_blank" rel="noopener">
|
<a class="dropdown-item" href="https://help.bitwarden.com" target="_blank" rel="noopener">
|
||||||
<i class="fa fa-fw fa-question-circle" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-question-circle" aria-hidden="true"></i>
|
||||||
{{ "getHelp" | i18n }}
|
{{ "getHelp" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -75,16 +70,16 @@
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener"
|
rel="noopener"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-download" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-download" aria-hidden="true"></i>
|
||||||
{{ "getApps" | i18n }}
|
{{ "getApps" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<button type="button" class="dropdown-item" (click)="lock()">
|
<button type="button" class="dropdown-item" (click)="lock()">
|
||||||
<i class="fa fa-fw fa-lock" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-lock" aria-hidden="true"></i>
|
||||||
{{ "lockNow" | i18n }}
|
{{ "lockNow" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="dropdown-item" (click)="logOut()">
|
<button type="button" class="dropdown-item" (click)="logOut()">
|
||||||
<i class="fa fa-fw fa-sign-out" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-sign-out" aria-hidden="true"></i>
|
||||||
{{ "logOut" | i18n }}
|
{{ "logOut" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
*ngIf="!organization.enabled"
|
*ngIf="!organization.enabled"
|
||||||
>
|
>
|
||||||
<div class="card-body py-2">
|
<div class="card-body py-2">
|
||||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
|
||||||
{{ "organizationIsDisabled" | i18n }}
|
{{ "organizationIsDisabled" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
*ngIf="organization.isProviderUser"
|
*ngIf="organization.isProviderUser"
|
||||||
>
|
>
|
||||||
<div class="card-body py-2">
|
<div class="card-body py-2">
|
||||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
|
||||||
{{ "accessingUsingProvider" | i18n: organization.providerName }}
|
{{ "accessingUsingProvider" | i18n: organization.providerName }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -30,25 +30,25 @@
|
|||||||
<ul class="nav nav-tabs" *ngIf="showMenuBar">
|
<ul class="nav nav-tabs" *ngIf="showMenuBar">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" routerLink="vault" routerLinkActive="active">
|
<a class="nav-link" routerLink="vault" routerLinkActive="active">
|
||||||
<i class="fa fa-lock" aria-hidden="true"></i>
|
<i class="bwi bwi-lock" aria-hidden="true"></i>
|
||||||
{{ "vault" | i18n }}
|
{{ "vault" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" *ngIf="showManageTab">
|
<li class="nav-item" *ngIf="showManageTab">
|
||||||
<a class="nav-link" [routerLink]="manageRoute" routerLinkActive="active">
|
<a class="nav-link" [routerLink]="manageRoute" routerLinkActive="active">
|
||||||
<i class="fa fa-sliders" aria-hidden="true"></i>
|
<i class="bwi bwi-sliders" aria-hidden="true"></i>
|
||||||
{{ "manage" | i18n }}
|
{{ "manage" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" *ngIf="showToolsTab">
|
<li class="nav-item" *ngIf="showToolsTab">
|
||||||
<a class="nav-link" [routerLink]="toolsRoute" routerLinkActive="active">
|
<a class="nav-link" [routerLink]="toolsRoute" routerLinkActive="active">
|
||||||
<i class="fa fa-wrench" aria-hidden="true"></i>
|
<i class="bwi bwi-wrench" aria-hidden="true"></i>
|
||||||
{{ "tools" | i18n }}
|
{{ "tools" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" *ngIf="organization.isOwner">
|
<li class="nav-item" *ngIf="organization.isOwner">
|
||||||
<a class="nav-link" routerLink="settings" routerLinkActive="active">
|
<a class="nav-link" routerLink="settings" routerLinkActive="active">
|
||||||
<i class="fa fa-cogs" aria-hidden="true"></i>
|
<i class="bwi bwi-cogs" aria-hidden="true"></i>
|
||||||
{{ "settings" | i18n }}
|
{{ "settings" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="card-body text-center" *ngIf="loading">
|
<div class="card-body text-center" *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
{{ "loading" | i18n }}
|
{{ "loading" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<app-callout type="danger" *ngIf="filteredUsers.length <= 0">
|
<app-callout type="danger" *ngIf="filteredUsers.length <= 0">
|
||||||
@@ -51,7 +51,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
@@ -69,7 +70,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
@@ -97,7 +99,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
@@ -121,7 +124,7 @@
|
|||||||
[disabled]="loading"
|
[disabled]="loading"
|
||||||
(click)="submit()"
|
(click)="submit()"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "confirm" | i18n }}</span>
|
<span>{{ "confirm" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -39,7 +39,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
@@ -64,7 +65,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ user.email }}
|
{{ user.email }}
|
||||||
@@ -88,7 +90,7 @@
|
|||||||
[disabled]="loading"
|
[disabled]="loading"
|
||||||
(click)="submit()"
|
(click)="submit()"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "removeUsers" | i18n }}</span>
|
<span>{{ "removeUsers" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="card-body text-center" *ngIf="loading">
|
<div class="card-body text-center" *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
{{ "loading" | i18n }}
|
{{ "loading" | i18n }}
|
||||||
</div>
|
</div>
|
||||||
<table class="table table-hover table-list" *ngIf="!loading">
|
<table class="table table-hover table-list" *ngIf="!loading">
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
{{ g.name }}
|
{{ g.name }}
|
||||||
<ng-container *ngIf="g.accessAll">
|
<ng-container *ngIf="g.accessAll">
|
||||||
<i
|
<i
|
||||||
class="fa fa-th text-muted fa-fw"
|
class="bwi bwi-filter text-muted bwi-fw"
|
||||||
title="{{ 'groupAccessAllItems' | i18n }}"
|
title="{{ 'groupAccessAllItems' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
*ngIf="this.canSave"
|
*ngIf="this.canSave"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
@@ -144,12 +144,12 @@
|
|||||||
[appApiAction]="deletePromise"
|
[appApiAction]="deletePromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@@ -17,13 +17,17 @@
|
|||||||
class="btn btn-sm btn-outline-primary ml-3"
|
class="btn btn-sm btn-outline-primary ml-3"
|
||||||
(click)="add()"
|
(click)="add()"
|
||||||
>
|
>
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "newCollection" | i18n }}
|
{{ "newCollection" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
@@ -58,7 +62,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -68,7 +72,7 @@
|
|||||||
*ngIf="this.canEdit(c)"
|
*ngIf="this.canEdit(c)"
|
||||||
(click)="users(c)"
|
(click)="users(c)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-users" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-users" aria-hidden="true"></i>
|
||||||
{{ "users" | i18n }}
|
{{ "users" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -78,7 +82,7 @@
|
|||||||
*ngIf="this.canDelete(c)"
|
*ngIf="this.canDelete(c)"
|
||||||
(click)="delete(c)"
|
(click)="delete(c)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-trash-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-trash" aria-hidden="true"></i>
|
||||||
{{ "delete" | i18n }}
|
{{ "delete" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="!loaded">
|
<div class="modal-body" *ngIf="!loaded">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -55,8 +55,8 @@
|
|||||||
[disabled]="loaded && refreshBtn.loading"
|
[disabled]="loaded && refreshBtn.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-refresh fa-fw"
|
class="bwi bwi-refresh bwi-fw"
|
||||||
[ngClass]="{ 'fa-spin': loaded && refreshBtn.loading }"
|
[ngClass]="{ 'bwi-spin': loaded && refreshBtn.loading }"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
{{ "refresh" | i18n }}
|
{{ "refresh" | i18n }}
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
<td>{{ e.date | date: "medium" }}</td>
|
<td>{{ e.date | date: "medium" }}</td>
|
||||||
<td>
|
<td>
|
||||||
<i
|
<i
|
||||||
class="text-muted fa fa-lg {{ e.appIcon }}"
|
class="text-muted bwi bwi-lg {{ e.appIcon }}"
|
||||||
title="{{ e.appName }}, {{ e.ip }}"
|
title="{{ e.appName }}, {{ e.ip }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
[disabled]="loaded && moreBtn.loading"
|
[disabled]="loaded && moreBtn.loading"
|
||||||
*ngIf="continuationToken"
|
*ngIf="continuationToken"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "loadMore" | i18n }}</span>
|
<span>{{ "loadMore" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading || !users">
|
<div class="modal-body" *ngIf="loading || !users">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -109,7 +109,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ u.email }}
|
{{ u.email }}
|
||||||
@@ -128,7 +129,7 @@
|
|||||||
<td *ngIf="entity === 'collection'">
|
<td *ngIf="entity === 'collection'">
|
||||||
<ng-container *ngIf="u.accessAll">
|
<ng-container *ngIf="u.accessAll">
|
||||||
<i
|
<i
|
||||||
class="fa fa-th"
|
class="bwi bwi-filter"
|
||||||
title="{{ 'userAccessAllItems' | i18n }}"
|
title="{{ 'userAccessAllItems' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -167,7 +168,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -32,9 +32,9 @@
|
|||||||
[disabled]="loaded && refreshForm.loading"
|
[disabled]="loaded && refreshForm.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-refresh fa-fw"
|
class="bwi bwi-refresh bwi-fw"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-spin': loaded && refreshForm.loading }"
|
[ngClass]="{ 'bwi-spin': loaded && refreshForm.loading }"
|
||||||
></i>
|
></i>
|
||||||
{{ "refresh" | i18n }}
|
{{ "refresh" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
@@ -47,14 +47,18 @@
|
|||||||
(click)="exportEvents()"
|
(click)="exportEvents()"
|
||||||
[disabled]="(loaded && exportForm.loading) || dirtyDates"
|
[disabled]="(loaded && exportForm.loading) || dirtyDates"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" aria-hidden="true"></i>
|
||||||
<span>{{ "export" | i18n }}</span>
|
<span>{{ "export" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="!loaded">
|
<ng-container *ngIf="!loaded">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
@@ -75,7 +79,7 @@
|
|||||||
<td>{{ e.date | date: "medium" }}</td>
|
<td>{{ e.date | date: "medium" }}</td>
|
||||||
<td>
|
<td>
|
||||||
<i
|
<i
|
||||||
class="text-muted fa fa-lg {{ e.appIcon }}"
|
class="text-muted bwi bwi-lg {{ e.appIcon }}"
|
||||||
title="{{ e.appName }}, {{ e.ip }}"
|
title="{{ e.appName }}, {{ e.ip }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -97,7 +101,7 @@
|
|||||||
[disabled]="loaded && moreBtn.loading"
|
[disabled]="loaded && moreBtn.loading"
|
||||||
*ngIf="continuationToken"
|
*ngIf="continuationToken"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "loadMore" | i18n }}</span>
|
<span>{{ "loadMore" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/user-types-access-control/#access-control"
|
href="https://bitwarden.com/help/article/user-types-access-control/#access-control"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="ml-auto" *ngIf="access === 'selected' && collections && collections.length">
|
<div class="ml-auto" *ngIf="access === 'selected' && collections && collections.length">
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
@@ -168,12 +168,12 @@
|
|||||||
[appApiAction]="deletePromise"
|
[appApiAction]="deletePromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
|
|||||||
@@ -12,13 +12,17 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="add()">
|
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="add()">
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "newGroup" | i18n }}
|
{{ "newGroup" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
@@ -51,15 +55,15 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a class="dropdown-item" href="#" appStopClick (click)="users(g)">
|
<a class="dropdown-item" href="#" appStopClick (click)="users(g)">
|
||||||
<i class="fa fa-fw fa-users" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-users" aria-hidden="true"></i>
|
||||||
{{ "users" | i18n }}
|
{{ "users" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="delete(g)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="delete(g)">
|
||||||
<i class="fa fa-fw fa-trash-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-trash" aria-hidden="true"></i>
|
||||||
{{ "delete" | i18n }}
|
{{ "delete" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -52,11 +52,11 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog" aria-hidden="true"></i>
|
<i class="bwi bwi-cog" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bulkActionsButton">
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="bulkActionsButton">
|
||||||
<button class="dropdown-item" appStopClick (click)="bulkReinvite()">
|
<button class="dropdown-item" appStopClick (click)="bulkReinvite()">
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "reinviteSelected" | i18n }}
|
{{ "reinviteSelected" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -65,32 +65,36 @@
|
|||||||
(click)="bulkConfirm()"
|
(click)="bulkConfirm()"
|
||||||
*ngIf="showBulkConfirmUsers"
|
*ngIf="showBulkConfirmUsers"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "confirmSelected" | i18n }}
|
{{ "confirmSelected" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button class="dropdown-item text-danger" appStopClick (click)="bulkRemove()">
|
<button class="dropdown-item text-danger" appStopClick (click)="bulkRemove()">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
<button class="dropdown-item" appStopClick (click)="selectAll(true)">
|
||||||
<i class="fa fa-fw fa-check-square-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check-square" aria-hidden="true"></i>
|
||||||
{{ "selectAll" | i18n }}
|
{{ "selectAll" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button class="dropdown-item" appStopClick (click)="selectAll(false)">
|
<button class="dropdown-item" appStopClick (click)="selectAll(false)">
|
||||||
<i class="fa fa-fw fa-minus-square-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-minus-square" aria-hidden="true"></i>
|
||||||
{{ "unselectAll" | i18n }}
|
{{ "unselectAll" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="invite()">
|
<button type="button" class="btn btn-sm btn-outline-primary ml-3" (click)="invite()">
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
|
||||||
{{ "inviteUser" | i18n }}
|
{{ "inviteUser" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-container
|
||||||
@@ -104,7 +108,7 @@
|
|||||||
<app-callout
|
<app-callout
|
||||||
type="info"
|
type="info"
|
||||||
title="{{ 'confirmUsers' | i18n }}"
|
title="{{ 'confirmUsers' | i18n }}"
|
||||||
icon="fa-check-circle"
|
icon="bwi bwi-check-circle"
|
||||||
*ngIf="showConfirmUsers"
|
*ngIf="showConfirmUsers"
|
||||||
>
|
>
|
||||||
{{ "usersNeedConfirmed" | i18n }}
|
{{ "usersNeedConfirmed" | i18n }}
|
||||||
@@ -128,7 +132,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" appStopClick (click)="edit(u)">{{ u.email }}</a>
|
<a href="#" appStopClick (click)="edit(u)">{{ u.email }}</a>
|
||||||
@@ -142,12 +147,16 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<ng-container *ngIf="u.twoFactorEnabled">
|
<ng-container *ngIf="u.twoFactorEnabled">
|
||||||
<i class="fa fa-lock" title="{{ 'userUsingTwoStep' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-lock"
|
||||||
|
title="{{ 'userUsingTwoStep' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "userUsingTwoStep" | i18n }}</span>
|
<span class="sr-only">{{ "userUsingTwoStep" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="showEnrolledStatus(u)">
|
<ng-container *ngIf="showEnrolledStatus(u)">
|
||||||
<i
|
<i
|
||||||
class="fa fa-key"
|
class="bwi bwi-key"
|
||||||
title="{{ 'enrolledPasswordReset' | i18n }}"
|
title="{{ 'enrolledPasswordReset' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -171,7 +180,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -181,7 +190,7 @@
|
|||||||
(click)="reinvite(u)"
|
(click)="reinvite(u)"
|
||||||
*ngIf="u.status === userStatusType.Invited"
|
*ngIf="u.status === userStatusType.Invited"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "resendInvitation" | i18n }}
|
{{ "resendInvitation" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -191,7 +200,7 @@
|
|||||||
(click)="confirm(u)"
|
(click)="confirm(u)"
|
||||||
*ngIf="u.status === userStatusType.Accepted"
|
*ngIf="u.status === userStatusType.Accepted"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "confirm" | i18n }}
|
{{ "confirm" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -201,7 +210,7 @@
|
|||||||
(click)="groups(u)"
|
(click)="groups(u)"
|
||||||
*ngIf="accessGroups"
|
*ngIf="accessGroups"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-sitemap" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-sitemap" aria-hidden="true"></i>
|
||||||
{{ "groups" | i18n }}
|
{{ "groups" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -211,7 +220,7 @@
|
|||||||
(click)="events(u)"
|
(click)="events(u)"
|
||||||
*ngIf="accessEvents && u.status === userStatusType.Confirmed"
|
*ngIf="accessEvents && u.status === userStatusType.Confirmed"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-file-text-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-file-text" aria-hidden="true"></i>
|
||||||
{{ "eventLogs" | i18n }}
|
{{ "eventLogs" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -221,11 +230,11 @@
|
|||||||
(click)="resetPassword(u)"
|
(click)="resetPassword(u)"
|
||||||
*ngIf="allowResetPassword(u)"
|
*ngIf="allowResetPassword(u)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-key" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-key" aria-hidden="true"></i>
|
||||||
{{ "resetPassword" | i18n }}
|
{{ "resetPassword" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(u)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(u)">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
<h1>{{ "policies" | i18n }}</h1>
|
<h1>{{ "policies" | i18n }}</h1>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<table class="table table-hover table-list" *ngIf="!loading">
|
<table class="table table-hover table-list" *ngIf="!loading">
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -33,12 +33,12 @@
|
|||||||
<div class="ml-auto d-flex">
|
<div class="ml-auto d-flex">
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
class="d-block mr-2 fa-icon-above-input"
|
class="d-block mr-2 bwi-icon-above-input"
|
||||||
appStopClick
|
appStopClick
|
||||||
appA11yTitle="{{ 'generatePassword' | i18n }}"
|
appA11yTitle="{{ 'generatePassword' | i18n }}"
|
||||||
(click)="generatePassword()"
|
(click)="generatePassword()"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-fw fa-refresh" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-fw bwi-refresh" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,9 +63,9 @@
|
|||||||
(click)="togglePassword()"
|
(click)="togglePassword()"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
appA11yTitle="{{ 'copyPassword' | i18n }}"
|
appA11yTitle="{{ 'copyPassword' | i18n }}"
|
||||||
(click)="copy(newPassword)"
|
(click)="copy(newPassword)"
|
||||||
>
|
>
|
||||||
<i class="fa fa-lg fa-clone" aria-hidden="true"></i>
|
<i class="bwi bwi-lg bwi-clone" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/user-types-access-control/#user-types"
|
href="https://bitwarden.com/help/article/user-types-access-control/#user-types"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="form-check mt-2 form-check-block">
|
<div class="form-check mt-2 form-check-block">
|
||||||
@@ -279,7 +279,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/user-types-access-control/#access-control"
|
href="https://bitwarden.com/help/article/user-types-access-control/#access-control"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="ml-auto" *ngIf="access === 'selected' && collections && collections.length">
|
<div class="ml-auto" *ngIf="access === 'selected' && collections && collections.length">
|
||||||
@@ -371,7 +371,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
@@ -389,12 +389,12 @@
|
|||||||
[appApiAction]="deletePromise"
|
[appApiAction]="deletePromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "confirm" | i18n }}</span>
|
<span>{{ "confirm" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
<h1>{{ "myOrganization" | i18n }}</h1>
|
<h1>{{ "myOrganization" | i18n }}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="loading">
|
<div *ngIf="loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</div>
|
</div>
|
||||||
<form
|
<form
|
||||||
@@ -63,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
@@ -89,7 +93,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<p>{{ "taxInformationDesc" | i18n }}</p>
|
<p>{{ "taxInformationDesc" | i18n }}</p>
|
||||||
<div *ngIf="!org || loading">
|
<div *ngIf="!org || loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i
|
||||||
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
|
title="{{ 'loading' | i18n }}"
|
||||||
|
aria-hidden="true"
|
||||||
|
></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</div>
|
</div>
|
||||||
<form
|
<form
|
||||||
@@ -101,7 +109,7 @@
|
|||||||
>
|
>
|
||||||
<app-tax-info></app-tax-info>
|
<app-tax-info></app-tax-info>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="formTax.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="formTax.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "deleteOrganization" | i18n }}</span>
|
<span>{{ "deleteOrganization" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://help.bitwarden.com/article/licensing-on-premise/#organization-account-sharing"
|
href="https://help.bitwarden.com/article/licensing-on-premise/#organization-account-sharing"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<input
|
<input
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{{ "subscription" | i18n }}
|
{{ "subscription" | i18n }}
|
||||||
<small *ngIf="firstLoaded && loading">
|
<small *ngIf="firstLoaded && loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<ng-container *ngIf="!firstLoaded && loading">
|
<ng-container *ngIf="!firstLoaded && loading">
|
||||||
<i class="fa fa-spinner fa-spin text-muted" title="{{ 'loading' | i18n }}"></i>
|
<i class="bwi bwi-spinner bwi-spin text-muted" title="{{ 'loading' | i18n }}"></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
[appApiAction]="reinstatePromise"
|
[appApiAction]="reinstatePromise"
|
||||||
[disabled]="reinstateBtn.loading"
|
[disabled]="reinstateBtn.loading"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "reinstateSubscription" | i18n }}</span>
|
<span>{{ "reinstateSubscription" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</app-callout>
|
</app-callout>
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
[disabled]="removeSponsorshipBtn.loading"
|
[disabled]="removeSponsorshipBtn.loading"
|
||||||
*ngIf="isSponsoredSubscription"
|
*ngIf="isSponsoredSubscription"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "removeSponsorship" | i18n }}</span>
|
<span>{{ "removeSponsorship" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<h2 class="spaced-header">{{ "storage" | i18n }}</h2>
|
<h2 class="spaced-header">{{ "storage" | i18n }}</h2>
|
||||||
@@ -204,7 +204,7 @@
|
|||||||
[disabled]="cancelBtn.loading"
|
[disabled]="cancelBtn.loading"
|
||||||
*ngIf="subscription && !subscription.cancelled && !subscriptionMarkedForCancel"
|
*ngIf="subscription && !subscription.cancelled && !subscriptionMarkedForCancel"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "cancelSubscription" | i18n }}</span>
|
<span>{{ "cancelSubscription" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
<dd *ngIf="sub.expiration">
|
<dd *ngIf="sub.expiration">
|
||||||
{{ sub.expiration | date: "mediumDate" }}
|
{{ sub.expiration | date: "mediumDate" }}
|
||||||
<span *ngIf="isExpired" class="text-danger ml-2">
|
<span *ngIf="isExpired" class="text-danger ml-2">
|
||||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
|
||||||
{{ "licenseIsExpired" | i18n }}
|
{{ "licenseIsExpired" | i18n }}
|
||||||
</span>
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div *ngIf="loading" class="mt-5 d-flex justify-content-center">
|
<div *ngIf="loading" class="mt-5 d-flex justify-content-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group col-6" *ngIf="!showNewOrganization">
|
<div class="form-group col-6" *ngIf="!showNewOrganization">
|
||||||
<button class="btn btn-primary mt-2 btn-submit" [disabled]="form.loading" type="submit">
|
<button class="btn btn-primary mt-2 btn-submit" [disabled]="form.loading" type="submit">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "acceptOffer" | i18n }}</span>
|
<span>{{ "acceptOffer" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="container page-content">
|
<div class="container page-content">
|
||||||
<ng-container *ngIf="loading">
|
<ng-container *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<small #actionSpinner [appApiAction]="ciphersComponent.actionPromise">
|
<small #actionSpinner [appApiAction]="ciphersComponent.actionPromise">
|
||||||
<ng-container *ngIf="actionSpinner.loading">
|
<ng-container *ngIf="actionSpinner.loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
(click)="addCipher()"
|
(click)="addCipher()"
|
||||||
*ngIf="!deleted"
|
*ngIf="!deleted"
|
||||||
>
|
>
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>{{ "addItem" | i18n }}
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>{{ "addItem" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<app-callout type="warning" *ngIf="deleted" icon="fa-warning">
|
<app-callout type="warning" *ngIf="deleted" icon="bwi bwi-exclamation-triangle">
|
||||||
{{ trashCleanupWarning }}
|
{{ trashCleanupWarning }}
|
||||||
</app-callout>
|
</app-callout>
|
||||||
<app-org-vault-ciphers
|
<app-org-vault-ciphers
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
<ng-container *ngIf="vault">
|
<ng-container *ngIf="vault">
|
||||||
<p *ngIf="!loaded" class="text-muted">
|
<p *ngIf="!loaded" class="text-muted">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</p>
|
</p>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
<ul class="fa-ul card-ul carets" *ngIf="providers && providers.length">
|
<ul class="bwi-ul card-ul carets" *ngIf="providers && providers.length">
|
||||||
<li *ngFor="let p of providers">
|
<li *ngFor="let p of providers">
|
||||||
<a [routerLink]="['/providers', p.id]" class="text-body">
|
<a [routerLink]="['/providers', p.id]" class="text-body">
|
||||||
<i class="fa-li fa fa-caret-right" aria-hidden="true"></i> {{ p.name }}
|
<i class="bwi bwi-li bwi-caret-right" aria-hidden="true"></i> {{ p.name }}
|
||||||
<ng-container *ngIf="!p.enabled">
|
<ng-container *ngIf="!p.enabled">
|
||||||
<i
|
<i
|
||||||
class="fa fa-exclamation-triangle text-danger"
|
class="bwi bwi-exclamation-triangle text-danger"
|
||||||
title="{{ 'providerIsDisabled' | i18n }}"
|
title="{{ 'providerIsDisabled' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
<h1>{{ "providers" | i18n }}</h1>
|
<h1>{{ "providers" | i18n }}</h1>
|
||||||
</div>
|
</div>
|
||||||
<p *ngIf="!loaded" class="text-muted">
|
<p *ngIf="!loaded" class="text-muted">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span class="sr-only">{{ "loading" | i18n }}</span>
|
<span class="sr-only">{{ "loading" | i18n }}</span>
|
||||||
</p>
|
</p>
|
||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
<a href="#" [routerLink]="['/providers', p.id]">{{ p.name }}</a>
|
<a href="#" [routerLink]="['/providers', p.id]">{{ p.name }}</a>
|
||||||
<ng-container *ngIf="!p.enabled">
|
<ng-container *ngIf="!p.enabled">
|
||||||
<i
|
<i
|
||||||
class="fa fa-exclamation-triangle text-danger"
|
class="bwi bwi-exclamation-triangle text-danger"
|
||||||
title="{{ 'providerIsDisabled' | i18n }}"
|
title="{{ 'providerIsDisabled' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
<div class="card d-block">
|
<div class="card d-block">
|
||||||
<div class="card-body" *ngIf="loading" class="text-center">
|
<div class="card-body" *ngIf="loading" class="text-center">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-2x text-muted"
|
class="bwi bwi-spinner bwi-spin bwi-2x text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -50,10 +50,10 @@
|
|||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
>
|
>
|
||||||
<span>
|
<span>
|
||||||
<i class="fa fa-sign-in" aria-hidden="true"></i> {{ "continue" | i18n }}
|
<i class="bwi bwi-sign-in" aria-hidden="true"></i> {{ "continue" | i18n }}
|
||||||
</span>
|
</span>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -93,14 +93,14 @@
|
|||||||
*ngIf="send.text.hidden"
|
*ngIf="send.text.hidden"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showText, 'fa-eye-slash': showText }"
|
[ngClass]="{ 'bwi-eye': !showText, 'bwi-eye-slash': showText }"
|
||||||
></i>
|
></i>
|
||||||
{{ "toggleVisibility" | i18n }}
|
{{ "toggleVisibility" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<button class="btn btn-block btn-link" type="button" (click)="copyText()">
|
<button class="btn btn-block btn-link" type="button" (click)="copyText()">
|
||||||
<i class="fa fa-copy" aria-hidden="true"></i> {{ "copyValue" | i18n }}
|
<i class="bwi bwi-copy" aria-hidden="true"></i> {{ "copyValue" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<!-- File -->
|
<!-- File -->
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
(click)="download()"
|
(click)="download()"
|
||||||
*ngIf="!downloading"
|
*ngIf="!downloading"
|
||||||
>
|
>
|
||||||
<i class="fa fa-download" aria-hidden="true"></i>
|
<i class="bwi bwi-download" aria-hidden="true"></i>
|
||||||
{{ "downloadFile" | i18n }} ({{ send.file.sizeName }})
|
{{ "downloadFile" | i18n }} ({{ send.file.sizeName }})
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -122,7 +122,7 @@
|
|||||||
disabled="true"
|
disabled="true"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -151,9 +151,9 @@
|
|||||||
<h3 class="mb-0 mr-2">{{ "options" | i18n }}</h3>
|
<h3 class="mb-0 mr-2">{{ "options" | i18n }}</h3>
|
||||||
<a class="mb-1" href="#" appStopClick role="button">
|
<a class="mb-1" href="#" appStopClick role="button">
|
||||||
<i
|
<i
|
||||||
class="fa"
|
class="bwi"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-chevron-down': !showOptions, 'fa-chevron-up': showOptions }"
|
[ngClass]="{ 'bwi-angle-down': !showOptions, 'bwi-chevron-up': showOptions }"
|
||||||
></i>
|
></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,9 +213,9 @@
|
|||||||
(click)="togglePasswordVisible()"
|
(click)="togglePasswordVisible()"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-lg"
|
class="bwi bwi-lg"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
[ngClass]="{ 'fa-eye': !showPassword, 'fa-eye-slash': showPassword }"
|
[ngClass]="{ 'bwi-eye': !showPassword, 'bwi-eye-slash': showPassword }"
|
||||||
></i>
|
></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
[ngClass]="{ loading: form.loading }"
|
[ngClass]="{ loading: form.loading }"
|
||||||
[disabled]="form.loading || disableSend"
|
[disabled]="form.loading || disableSend"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
@@ -290,12 +290,12 @@
|
|||||||
[appApiAction]="deletePromise"
|
[appApiAction]="deletePromise"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@@ -19,23 +19,23 @@
|
|||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
appAutofocus
|
appAutofocus
|
||||||
/>
|
/>
|
||||||
<ul class="fa-ul card-ul">
|
<ul class="bwi-ul card-ul">
|
||||||
<li [ngClass]="{ active: selectedAll }">
|
<li [ngClass]="{ active: selectedAll }">
|
||||||
<a href="#" appStopClick (click)="selectAll()">
|
<a href="#" appStopClick (click)="selectAll()">
|
||||||
<i class="fa-li fa fa-fw fa-th"></i>{{ "allSends" | i18n }}
|
<i class="bwi bwi-li bwi-fw bwi-filter"></i>{{ "allSends" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>{{ "types" | i18n }}</h3>
|
<h3>{{ "types" | i18n }}</h3>
|
||||||
<ul class="fa-ul card-ul">
|
<ul class="bwi-ul card-ul">
|
||||||
<li [ngClass]="{ active: selectedType === sendType.Text }">
|
<li [ngClass]="{ active: selectedType === sendType.Text }">
|
||||||
<a href="#" appStopClick (click)="selectType(sendType.Text)">
|
<a href="#" appStopClick (click)="selectType(sendType.Text)">
|
||||||
<i class="fa-li fa fa-fw fa-file-text-o"></i>{{ "sendTypeText" | i18n }}
|
<i class="bwi bwi-li bwi-fw bwi-file-text"></i>{{ "sendTypeText" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li [ngClass]="{ active: selectedType === sendType.File }">
|
<li [ngClass]="{ active: selectedType === sendType.File }">
|
||||||
<a href="#" appStopClick (click)="selectType(sendType.File)">
|
<a href="#" appStopClick (click)="selectType(sendType.File)">
|
||||||
<i class="fa-li fa fa-fw fa-file-o"></i>{{ "sendTypeFile" | i18n }}
|
<i class="bwi bwi-li bwi-fw bwi-file"></i>{{ "sendTypeFile" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<small #actionSpinner [appApiAction]="actionPromise">
|
<small #actionSpinner [appApiAction]="actionPromise">
|
||||||
<ng-container *ngIf="actionSpinner.loading">
|
<ng-container *ngIf="actionSpinner.loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
(click)="addSend()"
|
(click)="addSend()"
|
||||||
[disabled]="disableSend"
|
[disabled]="disableSend"
|
||||||
>
|
>
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i>{{ "createSend" | i18n }}
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>{{ "createSend" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -74,15 +74,15 @@
|
|||||||
<tr *ngFor="let s of filteredSends">
|
<tr *ngFor="let s of filteredSends">
|
||||||
<td class="table-list-icon">
|
<td class="table-list-icon">
|
||||||
<div class="icon" aria-hidden="true">
|
<div class="icon" aria-hidden="true">
|
||||||
<i class="fa fa-fw fa-lg fa-file-o" *ngIf="s.type == sendType.File"></i>
|
<i class="bwi bwi-fw bwi-lg bwi-file" *ngIf="s.type == sendType.File"></i>
|
||||||
<i class="fa fa-fw fa-lg fa-file-text-o" *ngIf="s.type == sendType.Text"></i>
|
<i class="bwi bwi-fw bwi-lg bwi-file-text" *ngIf="s.type == sendType.Text"></i>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="reduced-lh wrap">
|
<td class="reduced-lh wrap">
|
||||||
<a href="#" appStopClick appStopProp (click)="editSend(s)">{{ s.name }}</a>
|
<a href="#" appStopClick appStopProp (click)="editSend(s)">{{ s.name }}</a>
|
||||||
<ng-container *ngIf="s.disabled">
|
<ng-container *ngIf="s.disabled">
|
||||||
<i
|
<i
|
||||||
class="fa fa-warning"
|
class="bwi bwi-exclamation-triangle"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'disabled' | i18n }}"
|
title="{{ 'disabled' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -91,7 +91,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="s.password">
|
<ng-container *ngIf="s.password">
|
||||||
<i
|
<i
|
||||||
class="fa fa-key"
|
class="bwi bwi-key"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'password' | i18n }}"
|
title="{{ 'password' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="s.maxAccessCountReached">
|
<ng-container *ngIf="s.maxAccessCountReached">
|
||||||
<i
|
<i
|
||||||
class="fa fa-ban"
|
class="bwi bwi-ban"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'maxAccessCountReached' | i18n }}"
|
title="{{ 'maxAccessCountReached' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="s.expired">
|
<ng-container *ngIf="s.expired">
|
||||||
<i
|
<i
|
||||||
class="fa fa-clock-o"
|
class="bwi bwi-clock"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'expired' | i18n }}"
|
title="{{ 'expired' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -118,7 +118,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="s.pendingDelete">
|
<ng-container *ngIf="s.pendingDelete">
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash"
|
class="bwi bwi-trash"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'pendingDeletion' | i18n }}"
|
title="{{ 'pendingDeletion' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -139,11 +139,11 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||||
<a class="dropdown-item" href="#" appStopClick (click)="copy(s)">
|
<a class="dropdown-item" href="#" appStopClick (click)="copy(s)">
|
||||||
<i class="fa fa-fw fa-copy" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-clone" aria-hidden="true"></i>
|
||||||
{{ "copySendLink" | i18n }}
|
{{ "copySendLink" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -153,11 +153,11 @@
|
|||||||
(click)="removePassword(s)"
|
(click)="removePassword(s)"
|
||||||
*ngIf="s.password && !disableSend"
|
*ngIf="s.password && !disableSend"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-undo" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "removePassword" | i18n }}
|
{{ "removePassword" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="delete(s)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="delete(s)">
|
||||||
<i class="fa fa-fw fa-trash-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-trash" aria-hidden="true"></i>
|
||||||
{{ "delete" | i18n }}
|
{{ "delete" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
<div class="no-items" *ngIf="filteredSends && !filteredSends.length">
|
<div class="no-items" *ngIf="filteredSends && !filteredSends.length">
|
||||||
<ng-container *ngIf="!loaded">
|
<ng-container *ngIf="!loaded">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
<ng-container *ngIf="loaded">
|
<ng-container *ngIf="loaded">
|
||||||
<p>{{ "noSendsInList" | i18n }}</p>
|
<p>{{ "noSendsInList" | i18n }}</p>
|
||||||
<button (click)="addSend()" class="btn btn-outline-primary" [disabled]="disableSend">
|
<button (click)="addSend()" class="btn btn-outline-primary" [disabled]="disableSend">
|
||||||
<i class="fa fa-plus fa-fw"></i>{{ "createSend" | i18n }}
|
<i class="bwi bwi-plus bwi-fw"></i>{{ "createSend" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -382,47 +382,50 @@ export class EventService {
|
|||||||
private getAppInfo(deviceType: DeviceType): [string, string] {
|
private getAppInfo(deviceType: DeviceType): [string, string] {
|
||||||
switch (deviceType) {
|
switch (deviceType) {
|
||||||
case DeviceType.Android:
|
case DeviceType.Android:
|
||||||
return ["fa-android", this.i18nService.t("mobile") + " - Android"];
|
return ["bwi-android", this.i18nService.t("mobile") + " - Android"];
|
||||||
case DeviceType.iOS:
|
case DeviceType.iOS:
|
||||||
return ["fa-apple", this.i18nService.t("mobile") + " - iOS"];
|
return ["bwi-apple", this.i18nService.t("mobile") + " - iOS"];
|
||||||
case DeviceType.UWP:
|
case DeviceType.UWP:
|
||||||
return ["fa-windows", this.i18nService.t("mobile") + " - Windows"];
|
return ["bwi-windows", this.i18nService.t("mobile") + " - Windows"];
|
||||||
case DeviceType.ChromeExtension:
|
case DeviceType.ChromeExtension:
|
||||||
return ["fa-chrome", this.i18nService.t("extension") + " - Chrome"];
|
return ["bwi-chrome", this.i18nService.t("extension") + " - Chrome"];
|
||||||
case DeviceType.FirefoxExtension:
|
case DeviceType.FirefoxExtension:
|
||||||
return ["fa-firefox", this.i18nService.t("extension") + " - Firefox"];
|
return ["bwi-firefox", this.i18nService.t("extension") + " - Firefox"];
|
||||||
case DeviceType.OperaExtension:
|
case DeviceType.OperaExtension:
|
||||||
return ["fa-opera", this.i18nService.t("extension") + " - Opera"];
|
return ["bwi-opera", this.i18nService.t("extension") + " - Opera"];
|
||||||
case DeviceType.EdgeExtension:
|
case DeviceType.EdgeExtension:
|
||||||
return ["fa-edge", this.i18nService.t("extension") + " - Edge"];
|
return ["bwi-edge", this.i18nService.t("extension") + " - Edge"];
|
||||||
case DeviceType.VivaldiExtension:
|
case DeviceType.VivaldiExtension:
|
||||||
return ["fa-puzzle-piece", this.i18nService.t("extension") + " - Vivaldi"];
|
return ["bwi-puzzle", this.i18nService.t("extension") + " - Vivaldi"];
|
||||||
case DeviceType.SafariExtension:
|
case DeviceType.SafariExtension:
|
||||||
return ["fa-safari", this.i18nService.t("extension") + " - Safari"];
|
return ["bwi-safari", this.i18nService.t("extension") + " - Safari"];
|
||||||
case DeviceType.WindowsDesktop:
|
case DeviceType.WindowsDesktop:
|
||||||
return ["fa-windows", this.i18nService.t("desktop") + " - Windows"];
|
return ["bwi-windows", this.i18nService.t("desktop") + " - Windows"];
|
||||||
case DeviceType.MacOsDesktop:
|
case DeviceType.MacOsDesktop:
|
||||||
return ["fa-apple", this.i18nService.t("desktop") + " - macOS"];
|
return ["bwi-apple", this.i18nService.t("desktop") + " - macOS"];
|
||||||
case DeviceType.LinuxDesktop:
|
case DeviceType.LinuxDesktop:
|
||||||
return ["fa-linux", this.i18nService.t("desktop") + " - Linux"];
|
return ["bwi-linux", this.i18nService.t("desktop") + " - Linux"];
|
||||||
case DeviceType.ChromeBrowser:
|
case DeviceType.ChromeBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Chrome"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Chrome"];
|
||||||
case DeviceType.FirefoxBrowser:
|
case DeviceType.FirefoxBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Firefox"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Firefox"];
|
||||||
case DeviceType.OperaBrowser:
|
case DeviceType.OperaBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Opera"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Opera"];
|
||||||
case DeviceType.SafariBrowser:
|
case DeviceType.SafariBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Safari"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Safari"];
|
||||||
case DeviceType.VivaldiBrowser:
|
case DeviceType.VivaldiBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Vivaldi"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Vivaldi"];
|
||||||
case DeviceType.EdgeBrowser:
|
case DeviceType.EdgeBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - Edge"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - Edge"];
|
||||||
case DeviceType.IEBrowser:
|
case DeviceType.IEBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - IE"];
|
return ["bwi-globe", this.i18nService.t("webVault") + " - IE"];
|
||||||
case DeviceType.UnknownBrowser:
|
case DeviceType.UnknownBrowser:
|
||||||
return ["fa-globe", this.i18nService.t("webVault") + " - " + this.i18nService.t("unknown")];
|
return [
|
||||||
|
"bwi-globe",
|
||||||
|
this.i18nService.t("webVault") + " - " + this.i18nService.t("unknown"),
|
||||||
|
];
|
||||||
default:
|
default:
|
||||||
return ["fa-globe", this.i18nService.t("unknown")];
|
return ["bwi-globe", this.i18nService.t("unknown")];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ export function initFactory(
|
|||||||
|
|
||||||
const urls = process.env.URLS as Urls;
|
const urls = process.env.URLS as Urls;
|
||||||
urls.base ??= window.location.origin;
|
urls.base ??= window.location.origin;
|
||||||
environmentService.setUrls(urls, false);
|
environmentService.setUrls(urls);
|
||||||
|
|
||||||
setTimeout(() => notificationsService.init(), 3000);
|
setTimeout(() => notificationsService.init(), 3000);
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
[(ngModel)]="method"
|
[(ngModel)]="method"
|
||||||
/>
|
/>
|
||||||
<label class="form-check-label" for="credit-method-paypal">
|
<label class="form-check-label" for="credit-method-paypal">
|
||||||
<i class="fa fa-fw fa-paypal" aria-hidden="true"></i> PayPal</label
|
<i class="bwi bwi-fw bwi-paypal" aria-hidden="true"></i> PayPal</label
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check form-check-inline">
|
<div class="form-check form-check-inline">
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
[(ngModel)]="method"
|
[(ngModel)]="method"
|
||||||
/>
|
/>
|
||||||
<label class="form-check-label" for="credit-method-bitcoin">
|
<label class="form-check-label" for="credit-method-bitcoin">
|
||||||
<i class="fa fa-fw fa-bitcoin" aria-hidden="true"></i> Bitcoin</label
|
<i class="bwi bwi-fw bwi-bitcoin" aria-hidden="true"></i> Bitcoin</label
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
<small class="form-text text-muted">{{ "creditDelayed" | i18n }}</small>
|
<small class="form-text text-muted">{{ "creditDelayed" | i18n }}</small>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading || ppLoading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading || ppLoading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
<app-payment [hideBank]="!organizationId" [hideCredit]="true"></app-payment>
|
<app-payment [hideBank]="!organizationId" [hideCredit]="true"></app-payment>
|
||||||
<app-tax-info (onCountryChanged)="changeCountry()"></app-tax-info>
|
<app-tax-info (onCountryChanged)="changeCountry()"></app-tax-info>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "submit" | i18n }}</span>
|
<span>{{ "submit" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
<button type="button" class="btn btn-outline-secondary" (click)="cancel()">
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<app-callout
|
<app-callout
|
||||||
type="info"
|
type="info"
|
||||||
title="{{ 'oauth2ClientCredentials' | i18n }}"
|
title="{{ 'oauth2ClientCredentials' | i18n }}"
|
||||||
icon="fa-key"
|
icon="bwi bwi-key"
|
||||||
*ngIf="clientSecret"
|
*ngIf="clientSecret"
|
||||||
>
|
>
|
||||||
<p class="mb-1">
|
<p class="mb-1">
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
[disabled]="form.loading"
|
[disabled]="form.loading"
|
||||||
*ngIf="!clientSecret"
|
*ngIf="!clientSecret"
|
||||||
>
|
>
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ (isRotation ? "rotateApiKey" : "viewApiKey") | i18n }}</span>
|
<span>{{ (isRotation ? "rotateApiKey" : "viewApiKey") | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span *ngIf="!tokenSent">{{ "continue" | i18n }}</span>
|
<span *ngIf="!tokenSent">{{ "continue" | i18n }}</span>
|
||||||
<span *ngIf="tokenSent">{{ "changeEmail" | i18n }}</span>
|
<span *ngIf="tokenSent">{{ "changeEmail" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<select id="kdf" name="Kdf" [(ngModel)]="kdf" class="form-control" required>
|
<select id="kdf" name="Kdf" [(ngModel)]="kdf" class="form-control" required>
|
||||||
<option *ngFor="let o of kdfOptions" [ngValue]="o.value">{{ o.name }}</option>
|
<option *ngFor="let o of kdfOptions" [ngValue]="o.value">{{ o.name }}</option>
|
||||||
@@ -44,7 +44,7 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
<input
|
<input
|
||||||
id="kdfIterations"
|
id="kdfIterations"
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "changeKdf" | i18n }}</span>
|
<span>{{ "changeKdf" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -79,12 +79,12 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "changeMasterPassword" | i18n }}</span>
|
<span>{{ "changeMasterPassword" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "deauthorizeSessions" | i18n }}</span>
|
<span>{{ "deauthorizeSessions" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-danger btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "deleteAccount" | i18n }}</span>
|
<span>{{ "deleteAccount" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
<h2>{{ "customEqDomains" | i18n }}</h2>
|
<h2>{{ "customEqDomains" | i18n }}</h2>
|
||||||
<p *ngIf="loading">
|
<p *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -33,22 +33,22 @@
|
|||||||
(click)="remove(i)"
|
(click)="remove(i)"
|
||||||
appA11yTitle="{{ 'remove' | i18n }}"
|
appA11yTitle="{{ 'remove' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-minus-circle fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" (click)="add()" class="btn btn-outline-secondary btn-sm mb-2">
|
<button type="button" (click)="add()" class="btn btn-outline-secondary btn-sm mb-2">
|
||||||
<i class="fa fa-plus fa-fw" aria-hidden="true"></i> {{ "newCustomDomain" | i18n }}
|
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i> {{ "newCustomDomain" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
<small class="text-muted d-block mb-3">{{ "newCustomDomainDesc" | i18n }}</small>
|
<small class="text-muted d-block mb-3">{{ "newCustomDomainDesc" | i18n }}</small>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<h2 class="spaced-header">{{ "globalEqDomains" | i18n }}</h2>
|
<h2 class="spaced-header">{{ "globalEqDomains" | i18n }}</h2>
|
||||||
<p *ngIf="loading">
|
<p *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
(click)="toggleExcluded(d)"
|
(click)="toggleExcluded(d)"
|
||||||
*ngIf="!d.excluded"
|
*ngIf="!d.excluded"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-close" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "exclude" | i18n }}
|
{{ "exclude" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -88,11 +88,11 @@
|
|||||||
(click)="toggleExcluded(d)"
|
(click)="toggleExcluded(d)"
|
||||||
*ngIf="d.excluded"
|
*ngIf="d.excluded"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-plus" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-plus" aria-hidden="true"></i>
|
||||||
{{ "include" | i18n }}
|
{{ "include" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item" href="#" appStopClick (click)="customize(d)">
|
<a class="dropdown-item" href="#" appStopClick (click)="customize(d)">
|
||||||
<i class="fa fa-fw fa-scissors" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-cut" aria-hidden="true"></i>
|
||||||
{{ "customize" | i18n }}
|
{{ "customize" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -102,7 +102,7 @@
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-body" *ngIf="loading">
|
<div class="modal-body" *ngIf="loading">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
href="https://bitwarden.com/help/article/emergency-access/#user-access"
|
href="https://bitwarden.com/help/article/emergency-access/#user-access"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="form-check mt-2 form-check-block">
|
<div class="form-check mt-2 form-check-block">
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
[disabled]="loading || submitBtn.loading || readOnly"
|
[disabled]="loading || submitBtn.loading || readOnly"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin"
|
class="bwi bwi-spinner bwi-spin"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
*ngIf="loading || submitBtn.loading"
|
*ngIf="loading || submitBtn.loading"
|
||||||
@@ -128,12 +128,12 @@
|
|||||||
[disabled]="deleteBtn.loading"
|
[disabled]="deleteBtn.loading"
|
||||||
>
|
>
|
||||||
<i
|
<i
|
||||||
class="fa fa-trash-o fa-lg fa-fw"
|
class="bwi bwi-trash bwi-lg bwi-fw"
|
||||||
[hidden]="deleteBtn.loading"
|
[hidden]="deleteBtn.loading"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin fa-lg fa-fw"
|
class="bwi bwi-spinner bwi-spin bwi-lg bwi-fw"
|
||||||
[hidden]="!deleteBtn.loading"
|
[hidden]="!deleteBtn.loading"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "confirm" | i18n }}</span>
|
<span>{{ "confirm" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -67,7 +67,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
|
||||||
<i class="fa fa-spinner fa-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
|
||||||
<span>{{ "save" | i18n }}</span>
|
<span>{{ "save" | i18n }}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
}}</a>
|
}}</a>
|
||||||
<ng-container *ngIf="!organization && c.organizationId">
|
<ng-container *ngIf="!organization && c.organizationId">
|
||||||
<i
|
<i
|
||||||
class="fa fa-cube"
|
class="bwi bwi-collection"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'shared' | i18n }}"
|
title="{{ 'shared' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="c.hasAttachments">
|
<ng-container *ngIf="c.hasAttachments">
|
||||||
<i
|
<i
|
||||||
class="fa fa-paperclip"
|
class="bwi bwi-paperclip"
|
||||||
appStopProp
|
appStopProp
|
||||||
title="{{ 'attachments' | i18n }}"
|
title="{{ 'attachments' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
@@ -45,11 +45,11 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
|
||||||
<a class="dropdown-item" href="#" appStopClick (click)="viewAttachments(c)">
|
<a class="dropdown-item" href="#" appStopClick (click)="viewAttachments(c)">
|
||||||
<i class="fa fa-fw fa-paperclip" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-paperclip" aria-hidden="true"></i>
|
||||||
{{ "attachments" | i18n }}
|
{{ "attachments" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container *ngIf="!loaded">
|
<ng-container *ngIf="!loaded">
|
||||||
<i
|
<i
|
||||||
class="fa fa-spinner fa-spin text-muted"
|
class="bwi bwi-spinner bwi-spin text-muted"
|
||||||
title="{{ 'loading' | i18n }}"
|
title="{{ 'loading' | i18n }}"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
></i>
|
></i>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
(click)="invite()"
|
(click)="invite()"
|
||||||
[disabled]="!canAccessPremium"
|
[disabled]="!canAccessPremium"
|
||||||
>
|
>
|
||||||
<i aria-hidden="true" class="fa fa-plus fa-fw"></i>
|
<i aria-hidden="true" class="bwi bwi-plus bwi-fw"></i>
|
||||||
{{ "addEmergencyContact" | i18n }}
|
{{ "addEmergencyContact" | i18n }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -48,7 +48,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" appStopClick (click)="edit(c)">{{ c.email }}</a>
|
<a href="#" appStopClick (click)="edit(c)">{{ c.email }}</a>
|
||||||
@@ -90,7 +91,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -100,7 +101,7 @@
|
|||||||
(click)="reinvite(c)"
|
(click)="reinvite(c)"
|
||||||
*ngIf="c.status === emergencyAccessStatusType.Invited"
|
*ngIf="c.status === emergencyAccessStatusType.Invited"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "resendInvitation" | i18n }}
|
{{ "resendInvitation" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -110,7 +111,7 @@
|
|||||||
(click)="confirm(c)"
|
(click)="confirm(c)"
|
||||||
*ngIf="c.status === emergencyAccessStatusType.Accepted"
|
*ngIf="c.status === emergencyAccessStatusType.Accepted"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "confirm" | i18n }}
|
{{ "confirm" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -120,7 +121,7 @@
|
|||||||
(click)="approve(c)"
|
(click)="approve(c)"
|
||||||
*ngIf="c.status === emergencyAccessStatusType.RecoveryInitiated"
|
*ngIf="c.status === emergencyAccessStatusType.RecoveryInitiated"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-check" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-check" aria-hidden="true"></i>
|
||||||
{{ "approve" | i18n }}
|
{{ "approve" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -133,11 +134,11 @@
|
|||||||
c.status === emergencyAccessStatusType.RecoveryApproved
|
c.status === emergencyAccessStatusType.RecoveryApproved
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "reject" | i18n }}
|
{{ "reject" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(c)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(c)">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-remove" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,7 +164,8 @@
|
|||||||
size="25"
|
size="25"
|
||||||
[circle]="true"
|
[circle]="true"
|
||||||
[fontSize]="14"
|
[fontSize]="14"
|
||||||
></app-avatar>
|
>
|
||||||
|
</app-avatar>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span>{{ c.email }}</span>
|
<span>{{ c.email }}</span>
|
||||||
@@ -205,7 +207,7 @@
|
|||||||
aria-expanded="false"
|
aria-expanded="false"
|
||||||
appA11yTitle="{{ 'options' | i18n }}"
|
appA11yTitle="{{ 'options' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-cog fa-lg" aria-hidden="true"></i>
|
<i class="bwi bwi-cog bwi-lg" aria-hidden="true"></i>
|
||||||
</button>
|
</button>
|
||||||
<div class="dropdown-menu dropdown-menu-right">
|
<div class="dropdown-menu dropdown-menu-right">
|
||||||
<a
|
<a
|
||||||
@@ -215,7 +217,7 @@
|
|||||||
(click)="requestAccess(c)"
|
(click)="requestAccess(c)"
|
||||||
*ngIf="c.status === emergencyAccessStatusType.Confirmed"
|
*ngIf="c.status === emergencyAccessStatusType.Confirmed"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-envelope-o" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-envelope" aria-hidden="true"></i>
|
||||||
{{ "requestAccess" | i18n }}
|
{{ "requestAccess" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -228,7 +230,7 @@
|
|||||||
c.type === emergencyAccessType.Takeover
|
c.type === emergencyAccessType.Takeover
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-key" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-key" aria-hidden="true"></i>
|
||||||
{{ "takeover" | i18n }}
|
{{ "takeover" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@@ -239,11 +241,11 @@
|
|||||||
c.type === emergencyAccessType.View
|
c.type === emergencyAccessType.View
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<i class="fa fa-fw fa-eye" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-eye" aria-hidden="true"></i>
|
||||||
{{ "view" | i18n }}
|
{{ "view" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(c)">
|
<a class="dropdown-item text-danger" href="#" appStopClick (click)="remove(c)">
|
||||||
<i class="fa fa-fw fa-remove" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-close" aria-hidden="true"></i>
|
||||||
{{ "remove" | i18n }}
|
{{ "remove" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<a class="dropdown-item" href="#" appStopClick (click)="submit(returnUri, true)">
|
<a class="dropdown-item" href="#" appStopClick (click)="submit(returnUri, true)">
|
||||||
<i class="fa fa-fw fa-link" aria-hidden="true"></i>
|
<i class="bwi bwi-fw bwi-link" aria-hidden="true"></i>
|
||||||
{{ "linkSso" | i18n }}
|
{{ "linkSso" | i18n }}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<select id="locale" name="Locale" [(ngModel)]="locale" class="form-control">
|
<select id="locale" name="Locale" [(ngModel)]="locale" class="form-control">
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<small class="form-text text-muted">{{ "disableIconsDesc" | i18n }}</small>
|
<small class="form-text text-muted">{{ "disableIconsDesc" | i18n }}</small>
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
rel="noopener"
|
rel="noopener"
|
||||||
appA11yTitle="{{ 'learnMore' | i18n }}"
|
appA11yTitle="{{ 'learnMore' | i18n }}"
|
||||||
>
|
>
|
||||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
<i class="bwi bwi-question-circle" aria-hidden="true"></i>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<small class="form-text text-muted">{{ "enableGravatarsDesc" | i18n }}</small>
|
<small class="form-text text-muted">{{ "enableGravatarsDesc" | i18n }}</small>
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ export class OptionsComponent implements OnInit {
|
|||||||
disableIcons: boolean;
|
disableIcons: boolean;
|
||||||
enableGravatars: boolean;
|
enableGravatars: boolean;
|
||||||
enableFullWidth: boolean;
|
enableFullWidth: boolean;
|
||||||
theme: string = null;
|
theme: ThemeType;
|
||||||
locale: string;
|
locale: string;
|
||||||
vaultTimeouts: { name: string; value: number }[];
|
vaultTimeouts: { name: string; value: number }[];
|
||||||
localeOptions: any[];
|
localeOptions: any[];
|
||||||
@@ -28,7 +28,7 @@ export class OptionsComponent implements OnInit {
|
|||||||
vaultTimeout: FormControl = new FormControl(null);
|
vaultTimeout: FormControl = new FormControl(null);
|
||||||
|
|
||||||
private startingLocale: string;
|
private startingLocale: string;
|
||||||
private startingTheme: string;
|
private startingTheme: ThemeType;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private stateService: StateService,
|
private stateService: StateService,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user