@ -0,0 +1,33 @@ |
|||
FROM debian:trixie-slim |
|||
|
|||
ENV ROCKET_PROFILE="release" \ |
|||
ROCKET_ADDRESS=0.0.0.0 \ |
|||
ROCKET_PORT=80 \ |
|||
DEBIAN_FRONTEND=noninteractive |
|||
|
|||
RUN mkdir /data && \ |
|||
apt-get update && apt-get install -y \ |
|||
--no-install-recommends \ |
|||
ca-certificates \ |
|||
curl \ |
|||
libmariadb3 \ |
|||
libpq5 \ |
|||
sqlite3 \ |
|||
openssl && \ |
|||
apt-get clean && \ |
|||
rm -rf /var/lib/apt/lists/* |
|||
|
|||
VOLUME /data |
|||
EXPOSE 80 |
|||
|
|||
WORKDIR / |
|||
|
|||
COPY docker/healthcheck.sh docker/start.sh / |
|||
RUN chmod +x /healthcheck.sh /start.sh |
|||
|
|||
COPY web-vault ./web-vault |
|||
COPY target/release/vaultwarden . |
|||
|
|||
HEALTHCHECK --interval=60s --timeout=10s CMD ["/healthcheck.sh"] |
|||
|
|||
CMD ["/start.sh"] |
|||
@ -0,0 +1,2 @@ |
|||
"use strict";(self.webpackChunk_bitwarden_web_vault=self.webpackChunk_bitwarden_web_vault||[]).push([[677],{47677(n,t,o){o.d(t,{ExportWebComponent:()=>b});var e=o(16040),r=o(72932),i=o(25065),u=o(14041),s=o(26983),c=o(26657),a=o(56898),d=o(10672),l=o(49112),f=o(25740),p=function(n,t,o,e){return new(o||(o=Promise))(function(r,i){function u(n){try{c(e.next(n))}catch(t){i(t)}}function s(n){try{c(e.throw(n))}catch(t){i(t)}}function c(n){var t;n.done?r(n.value):(t=n.value,t instanceof o?t:new o(function(n){n(t)})).then(u,s)}c((e=e.apply(n,t||[])).next())})};class b{constructor(n){this.router=n,this.loading=!1,this.disabled=!1}onSuccessfulExport(n){return p(this,void 0,void 0,function*(){})}}b.ɵfac=function(n){return new(n||b)(u.rXU(s.Ix))},b.ɵcmp=u.VBU({type:b,selectors:[["ng-component"]],decls:6,vars:5,consts:[[3,"formDisabled","formLoading","onSuccessfulExport"],["form","export_form_exportForm","bitButton","","type","submit","bitFormButton","","buttonType","primary",3,"disabled","loading"]],template:function(n,t){1&n&&(u.nrm(0,"app-header"),u.j41(1,"bit-container")(2,"tools-export",0),u.bIt("formDisabled",function(n){return t.disabled=n})("formLoading",function(n){return t.loading=n})("onSuccessfulExport",function(n){return t.onSuccessfulExport(n)}),u.k0s(),u.j41(3,"button",1),u.EFF(4),u.nI1(5,"i18n"),u.k0s()()),2&n&&(u.R7$(3),u.Y8G("disabled",t.disabled)("loading",t.loading),u.R7$(),u.SpI(" ",u.bMT(5,3,"exportVerb")," "))},dependencies:[i.G,c.$,a.Q,d.H,e.i,r.G,l.f,f.$],encapsulation:2})}}]); |
|||
//# sourceMappingURL=677.c700d752d82440a05a97.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"677.c700d752d82440a05a97.js","mappings":"+iBAcO,MAAMA,EAIX,WAAAC,CAAoBC,GAAA,KAAAA,OAAAA,EAHV,KAAAC,SAAU,EACV,KAAAC,UAAW,CAEgB,CAKrB,kBAAAC,CAAmBC,G,wCAAwC,E,mCAThEN,GAAkB,c,mBAAlBA,EAAkB,0QCd/B,sBAGE,yBADa,oBAIX,uDAFuC,8CAEvC,CADqC,wCACf,uBAA+B,GACtD,QACD,oBASE,S,gBAEJ,W,MAVI,SACA,6BADqB,qBAQrB,+C,gBDLQ,IAAc,gBAAiB,IAAY,0B","sources":["webpack://@bitwarden/web-vault/./src/app/tools/vault-export/export-web.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/vault-export/export-web.component.html"],"sourcesContent":["import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport { ExportComponent } from \"@bitwarden/vault-export-ui\";\n\nimport { HeaderModule } from \"../../layouts/header/header.module\";\nimport { SharedModule } from \"../../shared\";\n\n// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush\n// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n@Component({\n templateUrl: \"export-web.component.html\",\n imports: [SharedModule, ExportComponent, HeaderModule],\n})\nexport class ExportWebComponent {\n protected loading = false;\n protected disabled = false;\n\n constructor(private router: Router) {}\n\n /**\n * Callback that is called after a successful export.\n */\n protected async onSuccessfulExport(organizationId: string): Promise<void> {}\n}\n","<app-header></app-header>\n\n<bit-container>\n <tools-export\n (formDisabled)=\"this.disabled = $event\"\n (formLoading)=\"this.loading = $event\"\n (onSuccessfulExport)=\"this.onSuccessfulExport($event)\"\n ></tools-export>\n <button\n [disabled]=\"disabled\"\n [loading]=\"loading\"\n form=\"export_form_exportForm\"\n bitButton\n type=\"submit\"\n bitFormButton\n buttonType=\"primary\"\n >\n {{ \"exportVerb\" | i18n }}\n </button>\n</bit-container>\n"],"names":["ExportWebComponent","constructor","router","loading","disabled","onSuccessfulExport","organizationId"],"sourceRoot":""} |
|||
@ -0,0 +1,2 @@ |
|||
"use strict";(self.webpackChunk_bitwarden_web_vault=self.webpackChunk_bitwarden_web_vault||[]).push([[712],{21712(n,t,o){o.d(t,{OrganizationVaultExportComponent:()=>g});var r=o(5076),e=o(16040),i=o(72932),a=o(25065),u=o(14041),s=o(26983),d=o(26657),c=o(56898),p=o(10672),l=o(49112),f=o(25740),b=function(n,t,o,r){return new(o||(o=Promise))(function(e,i){function a(n){try{s(r.next(n))}catch(t){i(t)}}function u(n){try{s(r.throw(n))}catch(t){i(t)}}function s(n){var t;n.done?e(n.value):(t=n.value,t instanceof o?t:new o(function(n){n(t)})).then(a,u)}s((r=r.apply(n,t||[])).next())})};class g{constructor(n){this.route=n,this.routeOrgId=void 0,this.loading=!1,this.disabled=!1}ngOnInit(){return b(this,void 0,void 0,function*(){const n=this.route.snapshot.paramMap.get("organizationId");if(void 0===n)throw new Error("`organizationId` is a required route parameter");if(!(0,r.e)(n))throw new Error("Invalid OrganizationId provided in route parameter `organizationId`");this.routeOrgId=n})}onSuccessfulExport(n){return b(this,void 0,void 0,function*(){})}}g.ɵfac=function(n){return new(n||g)(u.rXU(s.nX))},g.ɵcmp=u.VBU({type:g,selectors:[["ng-component"]],decls:6,vars:7,consts:[[3,"formDisabled","formLoading","onSuccessfulExport","organizationId"],["form","export_form_exportForm","bitButton","","type","submit","bitFormButton","","buttonType","primary",3,"disabled","loading"]],template:function(n,t){1&n&&(u.nrm(0,"app-header"),u.j41(1,"bit-container")(2,"tools-export",0),u.bIt("formDisabled",function(n){return t.disabled=n})("formLoading",function(n){return t.loading=n})("onSuccessfulExport",function(n){return t.onSuccessfulExport(n)}),u.k0s(),u.j41(3,"button",1),u.EFF(4),u.nI1(5,"i18n"),u.k0s()()),2&n&&(u.R7$(2),u.Y8G("organizationId",u.mNQ(t.routeOrgId)),u.R7$(),u.Y8G("disabled",t.disabled)("loading",t.loading),u.R7$(),u.SpI(" ",u.bMT(5,5,"exportVerb")," "))},dependencies:[a.G,d.$,c.Q,p.H,e.i,i.G,l.f,f.$],encapsulation:2})}}]); |
|||
//# sourceMappingURL=712.bdaf453f9231e32b4fe5.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"712.bdaf453f9231e32b4fe5.js","mappings":"ukBAeO,MAAMA,EAKX,WAAAC,CAAoBC,GAAA,KAAAA,MAAAA,EAJV,KAAAC,gBAAyCC,EACzC,KAAAC,SAAU,EACV,KAAAC,UAAW,CAEuB,CAEtC,QAAAC,G,wCACJ,MAAMC,EAAaC,KAAKP,MAAMQ,SAASC,SAASC,IAAI,kBACpD,QAAmBR,IAAfI,EACF,MAAM,IAAIK,MAAM,kDAGlB,KAAK,OAAqBL,GACxB,MAAM,IAAIK,MAAM,uEAGlBJ,KAAKN,WAAaK,CACpB,E,CAKgB,kBAAAM,CAAmBC,G,wCAAgD,E,mCAvBxEf,GAAgC,c,mBAAhCA,EAAgC,2RCf7C,sBAGE,yBADa,oBAIX,uDAFuC,8CAEvC,CADqC,wCACf,uBAA+B,GAEtD,QACD,oBASE,S,gBAEJ,W,MAbI,qDAGA,QACA,6BADqB,qBAQrB,+C,gBDLQ,IAAc,gBAAiB,IAAY,0B","sources":["webpack://@bitwarden/web-vault/./src/app/tools/vault-export/org-vault-export.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/vault-export/org-vault-export.component.html"],"sourcesContent":["import { Component, OnInit } from \"@angular/core\";\nimport { ActivatedRoute } from \"@angular/router\";\n\nimport { isId, OrganizationId } from \"@bitwarden/common/types/guid\";\nimport { ExportComponent } from \"@bitwarden/vault-export-ui\";\n\nimport { HeaderModule } from \"../../layouts/header/header.module\";\nimport { SharedModule } from \"../../shared\";\n\n// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush\n// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n@Component({\n templateUrl: \"org-vault-export.component.html\",\n imports: [SharedModule, ExportComponent, HeaderModule],\n})\nexport class OrganizationVaultExportComponent implements OnInit {\n protected routeOrgId: OrganizationId | undefined = undefined;\n protected loading = false;\n protected disabled = false;\n\n constructor(private route: ActivatedRoute) {}\n\n async ngOnInit() {\n const orgIdParam = this.route.snapshot.paramMap.get(\"organizationId\");\n if (orgIdParam === undefined) {\n throw new Error(\"`organizationId` is a required route parameter\");\n }\n\n if (!isId<OrganizationId>(orgIdParam)) {\n throw new Error(\"Invalid OrganizationId provided in route parameter `organizationId`\");\n }\n\n this.routeOrgId = orgIdParam;\n }\n\n /**\n * Callback that is called after a successful export.\n */\n protected async onSuccessfulExport(organizationId: OrganizationId): Promise<void> {}\n}\n","<app-header></app-header>\n\n<bit-container>\n <tools-export\n (formDisabled)=\"this.disabled = $event\"\n (formLoading)=\"this.loading = $event\"\n (onSuccessfulExport)=\"this.onSuccessfulExport($event)\"\n organizationId=\"{{ routeOrgId }}\"\n ></tools-export>\n <button\n [disabled]=\"disabled\"\n [loading]=\"loading\"\n form=\"export_form_exportForm\"\n bitButton\n type=\"submit\"\n bitFormButton\n buttonType=\"primary\"\n >\n {{ \"exportVerb\" | i18n }}\n </button>\n</bit-container>\n"],"names":["OrganizationVaultExportComponent","constructor","route","routeOrgId","undefined","loading","disabled","ngOnInit","orgIdParam","this","snapshot","paramMap","get","Error","onSuccessfulExport","organizationId"],"sourceRoot":""} |
|||
@ -0,0 +1,2 @@ |
|||
"use strict";(self.webpackChunk_bitwarden_web_vault=self.webpackChunk_bitwarden_web_vault||[]).push([[782],{28020(t,n,e){e.d(n,{H7:()=>o.H7,UN:()=>o.UN,bf:()=>o.bf});e(74043),e(83586);var o=e(69196)},74782(t,n,e){e.d(n,{ImportWebComponent:()=>v});var o=e(28020),r=e(95713),i=e(36801),s=e(72932),u=e(25065),a=e(14041),c=e(26983),d=e(26657),l=e(56898),f=e(10672),p=e(49112),b=e(25740),m=function(t,n,e,o){return new(e||(e=Promise))(function(r,i){function s(t){try{a(o.next(t))}catch(n){i(n)}}function u(t){try{a(o.throw(t))}catch(n){i(n)}}function a(t){var n;t.done?r(t.value):(n=t.value,n instanceof e?n:new e(function(t){t(n)})).then(s,u)}a((o=o.apply(t,n||[])).next())})};class v{constructor(t){this.router=t,this.loading=!1,this.disabled=!1}onSuccessfulImport(t){return m(this,void 0,void 0,function*(){yield this.router.navigate(["vault"])})}}v.ɵfac=function(t){return new(t||v)(a.rXU(c.Ix))},v.ɵcmp=a.VBU({type:v,selectors:[["ng-component"]],features:[a.Jv_([...r.F3,(0,i.F)({provide:o.UN,useClass:o.bf,deps:[r.Uz]})])],decls:6,vars:5,consts:[[3,"formDisabled","formLoading","onSuccessfulImport"],["form","import_form_importForm","bitButton","","type","submit","bitFormButton","","buttonType","primary",3,"disabled","loading"]],template:function(t,n){1&t&&(a.nrm(0,"app-header"),a.j41(1,"bit-container")(2,"tools-import",0),a.bIt("formDisabled",function(t){return n.disabled=t})("formLoading",function(t){return n.loading=t})("onSuccessfulImport",function(t){return n.onSuccessfulImport(t)}),a.k0s(),a.j41(3,"button",1),a.EFF(4),a.nI1(5,"i18n"),a.k0s()()),2&t&&(a.R7$(3),a.Y8G("disabled",n.disabled)("loading",n.loading),a.R7$(),a.SpI(" ",a.bMT(5,3,"importVerb")," "))},dependencies:[u.G,d.$,l.Q,f.H,r.Pi,s.G,p.f,b.$],encapsulation:2})}}]); |
|||
//# sourceMappingURL=782.ecb0878b527b2995b5d8.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"782.ecb0878b527b2995b5d8.js","mappings":"iqBA+BO,MAAMA,EAIX,WAAAC,CAAoBC,GAAA,KAAAA,OAAAA,EAHV,KAAAC,SAAU,EACV,KAAAC,UAAW,CAEgB,CAKrB,kBAAAC,CAAmBC,G,8CAC3BC,KAAKL,OAAOM,SAAS,CAAC,SAC9B,E,mCAXWR,GAAkB,c,mBAAlBA,EAAkB,6CATlB,IACN,MACH,OAAa,CACXS,QAAS,KACTC,SAAU,KACVC,KAAM,CAAC,WAEV,6OC7BH,sBAGE,yBADa,oBAIX,uDAFuC,8CAEvC,CADqC,wCACf,uBAA+B,GACtD,QACD,oBASE,S,gBAEJ,W,MAVI,SACA,6BADqB,qBAQrB,+C,gBDIQ,IAAc,iBAAiB,IAAY,0B","sources":["webpack://@bitwarden/web-vault/./src/app/tools/import/import-web.component.ts","webpack://@bitwarden/web-vault/./src/app/tools/import/import-web.component.html"],"sourcesContent":["import { Component } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\n\nimport {\n DefaultImportMetadataService,\n ImportMetadataServiceAbstraction,\n} from \"@bitwarden/importer-core\";\nimport {\n ImportComponent,\n ImporterProviders,\n SYSTEM_SERVICE_PROVIDER,\n} from \"@bitwarden/importer-ui\";\nimport { safeProvider } from \"@bitwarden/ui-common\";\n\nimport { HeaderModule } from \"../../layouts/header/header.module\";\nimport { SharedModule } from \"../../shared\";\n\n// FIXME(https://bitwarden.atlassian.net/browse/CL-764): Migrate to OnPush\n// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection\n@Component({\n templateUrl: \"import-web.component.html\",\n imports: [SharedModule, ImportComponent, HeaderModule],\n providers: [\n ...ImporterProviders,\n safeProvider({\n provide: ImportMetadataServiceAbstraction,\n useClass: DefaultImportMetadataService,\n deps: [SYSTEM_SERVICE_PROVIDER],\n }),\n ],\n})\nexport class ImportWebComponent {\n protected loading = false;\n protected disabled = false;\n\n constructor(private router: Router) {}\n\n /**\n * Callback that is called after a successful import.\n */\n protected async onSuccessfulImport(organizationId: string): Promise<void> {\n await this.router.navigate([\"vault\"]);\n }\n}\n","<app-header></app-header>\n\n<bit-container>\n <tools-import\n (formDisabled)=\"this.disabled = $event\"\n (formLoading)=\"this.loading = $event\"\n (onSuccessfulImport)=\"this.onSuccessfulImport($event)\"\n ></tools-import>\n <button\n [disabled]=\"disabled\"\n [loading]=\"loading\"\n form=\"import_form_importForm\"\n bitButton\n type=\"submit\"\n bitFormButton\n buttonType=\"primary\"\n >\n {{ \"importVerb\" | i18n }}\n </button>\n</bit-container>\n"],"names":["ImportWebComponent","constructor","router","loading","disabled","onSuccessfulImport","organizationId","this","navigate","provide","useClass","deps"],"sourceRoot":""} |
|||
@ -0,0 +1,2 @@ |
|||
"use strict";(self.webpackChunk_bitwarden_web_vault=self.webpackChunk_bitwarden_web_vault||[]).push([[825],{33825(e,t,i){i.d(t,{AcceptEmergencyComponent:()=>T});var n=i(5076),c=i(80885),s=i(25065),a=i(9413),r=i(80755),o=i(14041),d=i(11217),u=i(26983),l=i(84522),h=i(37115),m=i(50700),v=i(68455),p=i(69855),y=i(46758),g=i(56898),f=i(58384),b=i(58806),I=i(25740),w=function(e,t,i,n){return new(i||(i=Promise))(function(c,s){function a(e){try{o(n.next(e))}catch(t){s(t)}}function r(e){try{o(n.throw(e))}catch(t){s(t)}}function o(e){var t;e.done?c(e.value):(t=e.value,t instanceof i?t:new i(function(e){e(t)})).then(a,r)}o((n=n.apply(e,t||[])).next())})};const k=e=>({email:e});function A(e,t){1&e&&(o.j41(0,"div",2)(1,"div")(2,"p",3),o.nrm(3,"bit-icon",4),o.nI1(4,"i18n"),o.k0s()()()),2&e&&(o.R7$(3),o.Y8G("ariaLabel",o.bMT(4,1,"loading")))}function S(e,t){if(1&e){const e=o.RV6();o.j41(0,"div")(1,"p",5),o.EFF(2),o.k0s(),o.j41(3,"p",6),o.EFF(4),o.nI1(5,"i18n"),o.k0s(),o.nrm(6,"hr"),o.j41(7,"div",7)(8,"a",8),o.EFF(9),o.nI1(10,"i18n"),o.k0s(),o.j41(11,"button",9),o.bIt("click",function(){d.eBV(e);const t=o.XpG();return d.Njj(t.register())}),o.EFF(12),o.nI1(13,"i18n"),o.k0s()()()}if(2&e){const e=o.XpG();o.R7$(2),o.SpI(" ",e.name," "),o.R7$(2),o.JRh(o.bMT(5,7,"acceptEmergencyAccess")),o.R7$(4),o.Y8G("queryParams",o.eq3(13,k,e.email))("block",!0),o.R7$(),o.SpI(" ",o.bMT(10,9,"logIn")," "),o.R7$(2),o.Y8G("block",!0),o.R7$(),o.SpI(" ",o.bMT(13,11,"createAccount")," ")}}class T extends c.X{constructor(e,t,i,n,c,s,a){super(e,t,i,n,c),this.emergencyAccessService=s,this.toastService=a,this.requiredParameters=["id","name","email","token"],this.failedShortMessage="emergencyInviteAcceptFailedShort",this.failedMessage="emergencyInviteAcceptFailed"}authedHandler(e){return w(this,void 0,void 0,function*(){this.validateIdParam(e)?(this.actionPromise=this.emergencyAccessService.accept(e.id,e.token),yield this.actionPromise,this.toastService.showToast({variant:"success",title:this.i18nService.t("inviteAccepted"),message:this.i18nService.t("emergencyInviteAcceptedDesc"),timeout:1e4}),this.router.navigate(["/vault"])):yield this.handleInvalidInvite()})}unauthedHandler(e){return w(this,void 0,void 0,function*(){this.validateIdParam(e)?(this.name=e.name,null!=this.name&&(this.name=this.name.replace(/\+/g," ")),this.emergencyAccessId=e.id,this.acceptEmergencyAccessInviteToken=e.token):yield this.handleInvalidInvite()})}register(){return w(this,void 0,void 0,function*(){yield this.router.navigate(["/finish-signup"],{queryParams:{email:this.email,acceptEmergencyAccessInviteToken:this.acceptEmergencyAccessInviteToken,emergencyAccessId:this.emergencyAccessId}})})}validateIdParam(e){return(0,n.e)(e.id)}handleInvalidInvite(){return w(this,void 0,void 0,function*(){this.toastService.showToast({message:this.i18nService.t(this.failedMessage),variant:"error",timeout:1e4}),yield this.router.navigate(["/"])})}}T.ɵfac=function(e){return new(e||T)(o.rXU(u.Ix),o.rXU(h.y),o.rXU(m.W),o.rXU(u.nX),o.rXU(v.u),o.rXU(r.p),o.rXU(p.f))},T.ɵcmp=o.VBU({type:T,selectors:[["ng-component"]],features:[o.Vt3],decls:2,vars:2,consts:[["class","tw-mt-5 tw-flex tw-justify-center",4,"ngIf"],[4,"ngIf"],[1,"tw-mt-5","tw-flex","tw-justify-center"],[1,"tw-text-center"],["name","bwi-spinner",1,"bwi-spin","bwi-2x","tw-text-muted",3,"ariaLabel"],["bitTypography","body1",1,"tw-text-center"],["bitTypography","body1"],[1,"tw-flex","tw-gap-2"],["bitButton","","buttonType","primary","routerLink","/login",3,"queryParams","block"],["type","button","bitButton","","buttonType","primary",3,"click","block"]],template:function(e,t){1&e&&o.DNE(0,A,5,3,"div",0)(1,S,14,15,"div",1),2&e&&(o.Y8G("ngIf",t.loading),o.R7$(),o.Y8G("ngIf",!t.loading&&!t.authed))},dependencies:[s.G,y.bT,l.Wk,g.Q,f.R,b.r,a.S,I.$],encapsulation:2})}}]); |
|||
//# sourceMappingURL=825.a77cba01e3c01f59739e.js.map
|
|||
@ -0,0 +1,2 @@ |
|||
"use strict";(self.webpackChunk_bitwarden_web_vault=self.webpackChunk_bitwarden_web_vault||[]).push([[922],{28020(t,n,o){o.d(n,{H7:()=>i.H7,UN:()=>i.UN,bf:()=>i.bf});o(74043),o(83586);var i=o(69196)},6922(t,n,o){o.d(n,{OrgImportComponent:()=>U});var i=o(68108),r=o(69783),e=o(21571),a=o(67553),u=o(3633),c=o(5076),s=o(28020),d=o(95713),l=o(36801),f=o(72932),p=o(25065),v=o(11217),h=function(t,n,o,i){return new(o||(o=Promise))(function(r,e){function a(t){try{c(i.next(t))}catch(n){e(n)}}function u(t){try{c(i.throw(t))}catch(n){e(n)}}function c(t){var n;t.done?r(t.value):(n=t.value,n instanceof o?n:new o(function(t){t(n)})).then(a,u)}c((i=i.apply(t,n||[])).next())})};class m{constructor(t){this.collectionAdminService=t}getAllAdminCollections(t,n){return h(this,void 0,void 0,function*(){return yield(0,i._)(this.collectionAdminService.collectionAdminViews$(t,n))})}}m.ɵfac=function(t){return new(t||m)(v.KVO(e.vE))},m.ɵprov=v.jDH({token:m,factory:m.ɵfac});var g=o(14041),b=o(26983),I=o(35500),w=o(26657),y=o(56898),_=o(10672),z=o(49112),S=o(25740),T=function(t,n,o,i){return new(o||(o=Promise))(function(r,e){function a(t){try{c(i.next(t))}catch(n){e(n)}}function u(t){try{c(i.throw(t))}catch(n){e(n)}}function c(t){var n;t.done?r(t.value):(n=t.value,n instanceof o?n:new o(function(t){t(n)})).then(a,u)}c((i=i.apply(t,n||[])).next())})};class U{constructor(t,n,o,i){this.route=t,this.organizationService=n,this.router=o,this.accountService=i,this.routeOrgId=void 0,this.loading=!1,this.disabled=!1,this.returnTo=void 0}ngOnInit(){var t;const n=this.route.snapshot.paramMap.get("organizationId");if(void 0===n)throw new Error("`organizationId` is a required route parameter");if(!(0,c.e)(n))throw new Error("Invalid OrganizationId provided in route parameter `organizationId`");this.routeOrgId=n,this.returnTo=null!==(t=this.route.snapshot.queryParamMap.get("returnTo"))&&void 0!==t?t:void 0}onSuccessfulImport(t){return T(this,void 0,void 0,function*(){const n=yield(0,i._)((0,u.F6)(this.accountService.activeAccount$)),o=yield(0,i._)(this.organizationService.organizations$(n).pipe((0,r.T)(n=>n.find(n=>n.id===t))));null!=o&&(0,a.of)(o)&&(yield this.router.navigate(["organizations",t,"vault"]))})}}U.ɵfac=function(t){return new(t||U)(g.rXU(b.nX),g.rXU(a.PV),g.rXU(b.Ix),g.rXU(I.D))},U.ɵcmp=g.VBU({type:U,selectors:[["ng-component"]],features:[g.Jv_([...d.F3,(0,l.F)({provide:s.UN,useClass:s.bf,deps:[d.Uz]}),{provide:s.H7,useClass:m,deps:[e.vE]}])],decls:6,vars:8,consts:[[3,"formDisabled","formLoading","onSuccessfulImport","organizationId","returnTo"],["form","import_form_importForm","bitButton","","type","submit","bitFormButton","","buttonType","primary",3,"disabled","loading"]],template:function(t,n){1&t&&(g.nrm(0,"app-header"),g.j41(1,"bit-container")(2,"tools-import",0),g.bIt("formDisabled",function(t){return n.disabled=t})("formLoading",function(t){return n.loading=t})("onSuccessfulImport",function(t){return n.onSuccessfulImport(t)}),g.k0s(),g.j41(3,"button",1),g.EFF(4),g.nI1(5,"i18n"),g.k0s()()),2&t&&(g.R7$(2),g.Y8G("organizationId",g.mNQ(n.routeOrgId))("returnTo",n.returnTo),g.R7$(),g.Y8G("disabled",n.disabled)("loading",n.loading),g.R7$(),g.SpI(" ",g.bMT(5,6,"importVerb")," "))},dependencies:[p.G,w.$,y.Q,_.H,d.Pi,f.G,z.f,S.$],encapsulation:2})}}]); |
|||
//# sourceMappingURL=922.e5c11039e5e4c1258f68.js.map
|
|||
@ -0,0 +1,15 @@ |
|||
{ |
|||
"trustedFacets": [ |
|||
{ |
|||
"version": { |
|||
"major": 1, |
|||
"minor": 0 |
|||
}, |
|||
"ids": [ |
|||
"https://vault.bitwarden.com", |
|||
"ios:bundle-id:com.8bit.bitwarden", |
|||
"android:apk-key-hash:dUGFzUzf3lmHSLBDBIv+WaFyZMI" |
|||
] |
|||
} |
|||
] |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
/** |
|||
* @license Angular v<unknown> |
|||
* (c) 2010-2025 Google LLC. https://angular.io/ |
|||
* License: MIT |
|||
*/ |
|||
@ -0,0 +1,103 @@ |
|||
/* @license |
|||
Papa Parse |
|||
v5.5.3 |
|||
https://github.com/mholt/PapaParse |
|||
License: MIT |
|||
*/ |
|||
|
|||
/*! |
|||
|
|||
JSZip v3.10.1 - A JavaScript class for generating and reading zip files |
|||
<http://stuartk.com/jszip> |
|||
|
|||
(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com> |
|||
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown. |
|||
|
|||
JSZip uses the library pako released under the MIT license : |
|||
https://github.com/nodeca/pako/blob/main/LICENSE |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.Builder |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.Index |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.Pipeline |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.Set |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.TokenSet |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.Vector |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.stemmer |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
* Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.stopWordFilter |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.tokenizer |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.trimmer |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* lunr.utils |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
*/ |
|||
|
|||
/*! |
|||
* The buffer module from node.js, for the browser. |
|||
* |
|||
* @author Feross Aboukhadijeh <https://feross.org> |
|||
* @license MIT |
|||
*/ |
|||
|
|||
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */ |
|||
|
|||
/** |
|||
* @license |
|||
* Copyright Google LLC All Rights Reserved. |
|||
* |
|||
* Use of this source code is governed by an MIT-style license that can be |
|||
* found in the LICENSE file at https://angular.dev/license |
|||
*/ |
|||
|
|||
/** |
|||
* @license Angular v21.2.17 |
|||
* (c) 2010-2026 Google LLC. https://angular.dev/ |
|||
* License: MIT |
|||
*/ |
|||
|
|||
/** |
|||
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 |
|||
* Copyright (C) 2020 Oliver Nightingale |
|||
* @license MIT |
|||
*/ |
|||
@ -0,0 +1,9 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<browserconfig> |
|||
<msapplication> |
|||
<tile> |
|||
<square150x150logo src="images/icons/mstile-150x150.png"/> |
|||
<TileColor>#175DDC</TileColor> |
|||
</tile> |
|||
</msapplication> |
|||
</browserconfig> |
|||
@ -0,0 +1,17 @@ |
|||
{ |
|||
"name": "Vaultwarden Web", |
|||
"icons": [ |
|||
{ |
|||
"src": "images/icons/android-chrome-192x192.png", |
|||
"sizes": "192x192", |
|||
"type": "image/png" |
|||
}, |
|||
{ |
|||
"src": "images/icons/android-chrome-512x512.png", |
|||
"sizes": "512x512", |
|||
"type": "image/png" |
|||
} |
|||
], |
|||
"theme_color": "#FFFFFF", |
|||
"background_color": "#FFFFFF" |
|||
} |
|||
@ -0,0 +1,2 @@ |
|||
window.addEventListener("DOMContentLoaded",()=>{window.location.href=`${window.location.origin}/api/sso-cookie-vendor`}); |
|||
//# sourceMappingURL=proxy-cookie-redirect.f8a762697454a7fc5a5b.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"connectors/platform/proxy-cookie-redirect.f8a762697454a7fc5a5b.js","mappings":"AAQAA,OAAOC,iBAAiB,mBAAoB,KAC1CD,OAAOE,SAASC,KAAO,GAAGH,OAAOE,SAASE","sources":["webpack://@bitwarden/web-vault/./src/connectors/platform/proxy-cookie-redirect.ts"],"sourcesContent":["/**\n * ONLY FOR SELF-HOSTED SETUPS\n * Redirects the user to the SSO cookie vendor endpoint when the window finishes loading.\n *\n * This script listens for the window's load event and automatically redirects the browser\n * to the `api/sso-cookie-vendor` path on the current origin. This is used as part\n * of an authentication flow where cookies need to be set or validated through a vendor endpoint.\n */\nwindow.addEventListener(\"DOMContentLoaded\", () => {\n window.location.href = `${window.location.origin}/api/sso-cookie-vendor`;\n});\n"],"names":["window","addEventListener","location","href","origin"],"sourceRoot":""} |
|||
@ -0,0 +1,2 @@ |
|||
window.addEventListener("load",()=>{const n=new URL(window.location.href).hash.substring(1);if(!n)throw new Error("No fragment found in URL. Cannot determine redirect.");const o=`${window.location.origin}/#/${n}`;window.location.href=o}); |
|||
//# sourceMappingURL=redirect.c3cf620ff567c99c59d0.js.map
|
|||
@ -0,0 +1 @@ |
|||
{"version":3,"file":"connectors/redirect.c3cf620ff567c99c59d0.js","mappings":"AAGAA,OAAOC,iBAAiB,OAAQ,KAE9B,MAGMC,EAHa,IAAIC,IAAIH,OAAOI,SAASC,MAGfC,KAAKC,UAAU,GAE3C,IAAKL,EACH,MAAM,IAAIM,MAAM,wDAGlB,MAAMC,EAAS,GAAGT,OAAOI,SAASM,YAAYR,IAC9CF,OAAOI,SAASC,KAAOI","sources":["webpack://@bitwarden/web-vault/./src/connectors/redirect.ts"],"sourcesContent":["// This redirect connector is used to redirect users to the correct URL after they have been sent here from an email link.\n// The fragment contains the information needed to redirect the user to the correct page.\n// This is required because android app links couldn't properly handle the angular hash based route we originally had in the email link.\nwindow.addEventListener(\"load\", () => {\n // ex: https://vault.bitwarden.com/redirect-connector.html#finish-signup?token=fakeToken&email=example%40example.com&fromEmail=true\n const currentUrl = new URL(window.location.href);\n\n // Get the fragment (everything after the #)\n const fragment = currentUrl.hash.substring(1); // Remove the leading #\n\n if (!fragment) {\n throw new Error(\"No fragment found in URL. Cannot determine redirect.\");\n }\n\n const newUrl = `${window.location.origin}/#/${fragment}`;\n window.location.href = newUrl;\n});\n"],"names":["window","addEventListener","fragment","URL","location","href","hash","substring","Error","newUrl","origin"],"sourceRoot":""} |
|||
@ -0,0 +1,2 @@ |
|||
(()=>{"use strict";function e(e){const n=window.location.href;e=e.replace(/[\[\]]/g,"\\$&");const t=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(n);return t?t[2]?decodeURIComponent(t[2].replace(/\+/g," ")):"":null}function n(e,n,t){window.postMessage({command:"authResult",code:e,state:n,lastpass:t},window.location.origin);const o=("; "+document.cookie).split("; ssoHandOffMessage=").pop().split(";").shift();document.cookie="ssoHandOffMessage=;SameSite=strict;max-age=0";const c=document.getElementById("content");c.innerHTML="";const s=document.createElement("p");s.innerText=o,c.appendChild(s)}window.addEventListener("load",()=>{const t=e("code"),o=e("state");"1"===e("lp")?n(t,o,!0):null!=o&&o.includes(":clientId=browser")?n(t,o,!1):function(e,n){const t=window.location.href.replace(/\/sso-connector.html.*$/,""),o=function(e,n){const t=new RegExp(n).exec(e);if(!t)return null;return t[0]}(n,"(?<=_returnUri=')(.*)(?=')");window.location.href=o?t+`/#${o}`:t+"/#/sso?code="+e+"&state="+n}(t,o)})})(); |
|||
//# sourceMappingURL=sso.c4950d48540f84f41e7b.js.map
|
|||
@ -0,0 +1,2 @@ |
|||
(()=>{"use strict";function e(){const e=window.location.hostname||"";return[".bitwarden.com",".bitwarden.eu",".bitwarden.pw"].some(t=>e.endsWith(t))}function t(e){const t=window.location.href;e=e.replace(/[\[\]]/g,"\\$&");const n=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(t);return n?n[2]?decodeURIComponent(n[2].replace(/\+/g," ")):"":null}function n(e,t=!1){return t&&(e=e.replace(/ /g,"+")),decodeURIComponent(Array.prototype.map.call(atob(e),e=>"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)).join(""))}function r(e){document.location.replace(e)}function o(e){const n=`${e}-callback`;return"https"===(t("deeplinkScheme")||"").toLowerCase()?`https://${function(){const e=window.location.hostname||"";return e.endsWith("bitwarden.eu")?"bitwarden.eu":e.endsWith("bitwarden.pw")?"bitwarden.pw":"bitwarden.com"}()}/${n}`:`bitwarden://${n}`}function a(e){if(Array.isArray(e)&&(e=Uint8Array.from(e)),e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array){let t="";const n=e.byteLength;for(let r=0;r<n;r++)t+=String.fromCharCode(e[r]);e=window.btoa(t)}if("string"!=typeof e)throw new Error("could not coerce to string");return e=e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=*$/g,"")}let i,c=!1,d=null,s=null,l=null,u=null,w=null,f=null,p=null,g=null,h=!1,b=!1,m=!1,y=null;const v=["tw-bg-secondary-300","tw-border-secondary-300","!tw-text-muted","!tw-cursor-not-allowed","hover:tw-bg-secondary-300","hover:tw-border-secondary-300","hover:!tw-text-muted","hover:tw-no-underline"],x=["tw-bg-primary-600","tw-border-primary-600","!tw-text-contrast","hover:tw-bg-primary-700","hover:tw-border-primary-700","hover:!tw-text-contrast","hover:tw-no-underline"];function U(){if(!s)return;const e=document.getElementById("webauthn-button");e.onclick=I,e.innerText=decodeURI(s),e.classList.remove(...v),e.classList.add(...x)}function A(){if(c)return;w=t("parent"),w&&(w=decodeURIComponent(w),f=new URL(w).origin),p=function(t){if(t)try{if("file:"===new URL(t).protocol)return t}catch(n){}return e()?window.location.origin:t}(w);"1"===t("v")?function(){const e=t("data");if(!e)return void R("No data.");i=n(e),d=t("headerText"),s=t("btnText"),l=t("btnAwaitingInteractionText"),u=t("btnReturnText")}():function(){let e=null;try{e=JSON.parse(n(t("data")))}catch(r){return void R("Cannot parse data.")}g=function(e,t,n){return e?n():!0===t.mobile||null!=t.callbackUri?"bitwarden://webauthn-callback":null}(t("deeplinkScheme"),e,()=>o("webauthn")),h=null!=g,i=e.data,d=e.headerText,s=e.btnText,u=e.btnReturnText}(),w||g?c=!0:R("No return target provided.")}function C(){if(m=!1,"credentials"in navigator){if(A(),d){document.getElementById("webauthn-header").innerText=decodeURI(d)}if(U(),i){try{y=function(e){const t=JSON.parse(e),n=t.challenge.replace(/-/g,"+").replace(/_/g,"/");return t.challenge=Uint8Array.from(atob(n),e=>e.charCodeAt(0)),t.allowCredentials.forEach(e=>{const t=e.id.replace(/\_/g,"/").replace(/\-/g,"+");e.id=Uint8Array.from(atob(t),e=>e.charCodeAt(0))}),t}(i)}catch(e){return void R("Cannot parse webauthn data.")}b=!1,h||-1!==navigator.userAgent.indexOf(" Safari/")&&-1===navigator.userAgent.indexOf("Chrome")||I()}else R("No data.")}else R("WebAuthn is not supported in this browser.")}function I(){b?U():(!function(){if(!l)return;const e=document.getElementById("webauthn-button");e.innerText=decodeURI(l),e.onclick=null,e.classList.remove(...x),e.classList.add(...v)}(),navigator.credentials.get({publicKey:y}).then(L).catch(R))}function R(e){if(g){const t=g+"?error="+encodeURIComponent(e);r(t),T(t)}else w&&(parent.postMessage("error|"+e,p),U())}function L(e){if(m)return;const t=function(e){const t=e.response,n=new Uint8Array(t.authenticatorData),r=new Uint8Array(t.clientDataJSON),o=new Uint8Array(e.rawId),i=new Uint8Array(t.signature),c={id:e.id,rawId:a(o),type:e.type,extensions:e.getClientExtensionResults(),response:{authenticatorData:a(n),clientDataJson:a(r),signature:a(i)}};return JSON.stringify(c)}(e);if(g){const e=g+"?data="+encodeURIComponent(t);r(e),T(e)}else w&&(parent.postMessage("success|"+t,p),m=!0)}function T(e){const t=document.getElementById("webauthn-button");t.innerText=decodeURI(u),t.onclick=()=>{r(e)}}document.addEventListener("DOMContentLoaded",()=>{var t;C(),window.addEventListener("message",t=>{const n=w&&w.startsWith("file:")||!e()?f:window.location.origin;(!n||t.origin&&""!==t.origin&&t.origin===n)&&("stop"===t.data?(U(),b=!0):"start"===t.data&&b&&C())},!1),t="ready",!h&&w&&parent.postMessage("info|"+t,p)})})(); |
|||
//# sourceMappingURL=webauthn.ead2ec284156bb3fc911.js.map
|
|||
@ -0,0 +1 @@ |
|||
<!doctype html><html class="theme_light"><head><meta charset="utf-8"/><meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width"/><title>Bitwarden Duo Redirect Connector</title><link href="styles.a9becd480c4f061d1675.css" rel="stylesheet"></head><body class="layout_frontend"><div class="tw-p-8 tw-flex tw-flex-col tw-items-center"><img src="images/logo-dark@2x.png" class="tw-mb-4 tw-block tw-max-w-xs tw-mx-auto" alt="Vaultwarden"/><div id="content"><p class="tw-text-center"><i class="bwi bwi-spinner bwi-spin bwi-2x tw-text-muted" title="Loading" aria-hidden="true"></i></p></div></div><script defer="defer" src="connectors/duo-redirect.49480b58af3f78165050.js"></script><script defer="defer" src="styles.31d6cfe0d16ae931b73c.js"></script></body></html> |
|||
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 371 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 773 B |
|
After Width: | Height: | Size: 773 B |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 500 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 573 B |
|
After Width: | Height: | Size: 783 B |
|
After Width: | Height: | Size: 713 B |
|
After Width: | Height: | Size: 808 B |
|
After Width: | Height: | Size: 830 B |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 886 B |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 734 B |
|
After Width: | Height: | Size: 734 B |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 886 B |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 455 B |
|
After Width: | Height: | Size: 7.1 KiB |