diff --git a/jslib b/jslib index 1370006f..65584c64 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 1370006f6ea310cf85a12bcbd8213f74f9552c4d +Subproject commit 65584c64966a6624dd84df6a4d0e1a7155656c97 diff --git a/src/app/modules/loose-components.module.ts b/src/app/modules/loose-components.module.ts index 89c0cb56..9dc1a0d0 100644 --- a/src/app/modules/loose-components.module.ts +++ b/src/app/modules/loose-components.module.ts @@ -35,7 +35,6 @@ import { BulkStatusComponent as OrgBulkStatusComponent } from "../organizations/ import { CollectionAddEditComponent as OrgCollectionAddEditComponent } from "../organizations/manage/collection-add-edit.component"; import { CollectionsComponent as OrgManageCollectionsComponent } from "../organizations/manage/collections.component"; import { EntityEventsComponent as OrgEntityEventsComponent } from "../organizations/manage/entity-events.component"; -import { EntityUsersComponent as OrgEntityUsersComponent } from "../organizations/manage/entity-users.component"; import { EventsComponent as OrgEventsComponent } from "../organizations/manage/events.component"; import { GroupAddEditComponent as OrgGroupAddEditComponent } from "../organizations/manage/group-add-edit.component"; import { GroupsComponent as OrgGroupsComponent } from "../organizations/manage/groups.component"; @@ -245,7 +244,6 @@ import { OrganizationBadgeModule } from "./vault/modules/organization-badge/orga OrgCollectionAddEditComponent, OrgCollectionsComponent, OrgEntityEventsComponent, - OrgEntityUsersComponent, OrgEventsComponent, OrgExportComponent, OrgExposedPasswordsReportComponent, @@ -406,7 +404,6 @@ import { OrganizationBadgeModule } from "./vault/modules/organization-badge/orga OrgCollectionAddEditComponent, OrgCollectionsComponent, OrgEntityEventsComponent, - OrgEntityUsersComponent, OrgEventsComponent, OrgExportComponent, OrgExposedPasswordsReportComponent, diff --git a/src/app/organizations/manage/entity-users.component.html b/src/app/modules/organizations/manage/entity-users.component.html similarity index 74% rename from src/app/organizations/manage/entity-users.component.html rename to src/app/modules/organizations/manage/entity-users.component.html index beb9ff0a..f4c157a9 100644 --- a/src/app/organizations/manage/entity-users.component.html +++ b/src/app/modules/organizations/manage/entity-users.component.html @@ -29,52 +29,52 @@ > {{ "loading" | i18n }} - - + {{ trashCleanupWarning }} { if (params.cipherId) { - if ((await this.cipherService.get(params.cipherId)) != null) { + if ( + // Handle users with implicit collection access since they use the admin endpoint + this.organization.canEditAnyCollection || + (await this.cipherService.get(params.cipherId)) != null + ) { this.editCipherId(params.cipherId); } else { this.platformUtilsService.showToast( diff --git a/src/app/organizations/manage/collections.component.ts b/src/app/organizations/manage/collections.component.ts index ca7a9b07..f20a4cf5 100644 --- a/src/app/organizations/manage/collections.component.ts +++ b/src/app/organizations/manage/collections.component.ts @@ -20,8 +20,9 @@ import { import { ListResponse } from "jslib-common/models/response/listResponse"; import { CollectionView } from "jslib-common/models/view/collectionView"; +import { EntityUsersComponent } from "../../modules/organizations/manage/entity-users.component"; + import { CollectionAddEditComponent } from "./collection-add-edit.component"; -import { EntityUsersComponent } from "./entity-users.component"; @Component({ selector: "app-org-manage-collections", diff --git a/src/app/organizations/manage/groups.component.ts b/src/app/organizations/manage/groups.component.ts index a877540f..bc8bbd3c 100644 --- a/src/app/organizations/manage/groups.component.ts +++ b/src/app/organizations/manage/groups.component.ts @@ -12,7 +12,8 @@ import { SearchService } from "jslib-common/abstractions/search.service"; import { Utils } from "jslib-common/misc/utils"; import { GroupResponse } from "jslib-common/models/response/groupResponse"; -import { EntityUsersComponent } from "./entity-users.component"; +import { EntityUsersComponent } from "../../modules/organizations/manage/entity-users.component"; + import { GroupAddEditComponent } from "./group-add-edit.component"; @Component({ diff --git a/src/app/oss.module.ts b/src/app/oss.module.ts index 6f300b4e..88311f9d 100644 --- a/src/app/oss.module.ts +++ b/src/app/oss.module.ts @@ -1,6 +1,7 @@ import { NgModule } from "@angular/core"; import { LooseComponentsModule } from "./modules/loose-components.module"; +import { OrganizationManageModule } from "./modules/organizations/manage/organization-manage.module"; import { PipesModule } from "./modules/pipes/pipes.module"; import { SharedModule } from "./modules/shared.module"; import { VaultFilterModule } from "./modules/vault-filter/vault-filter.module"; @@ -13,6 +14,7 @@ import { OrganizationBadgeModule } from "./modules/vault/modules/organization-ba VaultFilterModule, OrganizationBadgeModule, PipesModule, + OrganizationManageModule, ], exports: [LooseComponentsModule, VaultFilterModule, OrganizationBadgeModule, PipesModule], bootstrap: [], diff --git a/src/app/settings/sponsoring-org-row.component.html b/src/app/settings/sponsoring-org-row.component.html index 1ed29c82..30abad44 100644 --- a/src/app/settings/sponsoring-org-row.component.html +++ b/src/app/settings/sponsoring-org-row.component.html @@ -8,6 +8,7 @@ -
- - -
diff --git a/src/locales/en/messages.json b/src/locales/en/messages.json index bb558461..26cc24d0 100644 --- a/src/locales/en/messages.json +++ b/src/locales/en/messages.json @@ -4669,7 +4669,7 @@ "message": "Email Sent" }, "revokeSponsorshipConfirmation": { - "message": "After removing this account, the Families organization owner will be responsible for this subscription and related invoices. Are you sure you want to continue?" + "message": "After removing this account, the Families plan sponsorship will expire at the end of the billing period. You will not be able to redeem a new sponsorship offer until the existing one expires. Are you sure you want to continue?" }, "removeSponsorshipSuccess": { "message": "Sponsorship Removed" diff --git a/src/scss/vault-filters.scss b/src/scss/vault-filters.scss index 552b0f75..292eff57 100644 --- a/src/scss/vault-filters.scss +++ b/src/scss/vault-filters.scss @@ -116,6 +116,7 @@ } text-decoration: none; } + max-width: 90%; } .edit-button { diff --git a/webpack.config.js b/webpack.config.js index fdebe061..4a81e4de 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -204,8 +204,60 @@ const devServer = return [ { key: "Content-Security-Policy", - value: - "default-src 'self'; script-src 'self' 'sha256-ryoU+5+IUZTuUyTElqkrQGBJXr1brEv6r2CA62WUw8w=' https://js.stripe.com https://js.braintreegateway.com https://www.paypalobjects.com; style-src 'self' https://assets.braintreegateway.com https://*.paypal.com 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' 'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4='; img-src 'self' data: https://icons.bitwarden.net https://*.paypal.com https://www.paypalobjects.com https://q.stripe.com https://haveibeenpwned.com https://www.gravatar.com; child-src 'self' https://js.stripe.com https://assets.braintreegateway.com https://*.paypal.com https://*.duosecurity.com; frame-src 'self' https://js.stripe.com https://assets.braintreegateway.com https://*.paypal.com https://*.duosecurity.com; connect-src 'self' wss://notifications.bitwarden.com https://notifications.bitwarden.com https://cdn.bitwarden.net https://api.pwnedpasswords.com https://2fa.directory/api/v3/totp.json https://api.stripe.com https://www.paypal.com https://api.braintreegateway.com https://client-analytics.braintreegateway.com https://*.braintree-api.com https://*.blob.core.windows.net https://app.simplelogin.io/api/alias/random/new https://app.anonaddy.com/api/v1/aliases; object-src 'self' blob:;", + value: ` + default-src 'self'; + script-src + 'self' + 'sha256-ryoU+5+IUZTuUyTElqkrQGBJXr1brEv6r2CA62WUw8w=' + https://js.stripe.com + https://js.braintreegateway.com + https://www.paypalobjects.com; + style-src + 'self' + https://assets.braintreegateway.com + https://*.paypal.com + 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=' + 'sha256-JVRXyYPueLWdwGwY9m/7u4QlZ1xeQdqUj2t8OVIzZE4='; + 'sha256-0xHKHIT3+e2Gknxsm/cpErSprhL+o254L/y5bljg74U=' + img-src + 'self' + data: + https://icons.bitwarden.net + https://*.paypal.com + https://www.paypalobjects.com + https://q.stripe.com + https://haveibeenpwned.com + https://www.gravatar.com; + child-src + 'self' + https://js.stripe.com + https://assets.braintreegateway.com + https://*.paypal.com + https://*.duosecurity.com; + frame-src + 'self' + https://js.stripe.com + https://assets.braintreegateway.com + https://*.paypal.com + https://*.duosecurity.com; + connect-src + 'self' + wss://notifications.bitwarden.com + https://notifications.bitwarden.com + https://cdn.bitwarden.net + https://api.pwnedpasswords.com + https://2fa.directory/api/v3/totp.json + https://api.stripe.com + https://www.paypal.com + https://api.braintreegateway.com + https://client-analytics.braintreegateway.com + https://*.braintree-api.com + https://*.blob.core.windows.net + https://app.simplelogin.io/api/alias/random/new + https://app.anonaddy.com/api/v1/aliases; + object-src + 'self' + blob:;`, }, ]; }