1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-15 15:53:27 +00:00

[PM-8868] only deserialize org invite if not nullish (#9644)

* only deserialize org invite if not nullish

* add null check to OrganizationInvite init methods

* PR feedback
This commit is contained in:
Jake Fink
2024-06-25 15:00:27 -04:00
committed by GitHub
parent 41e1d91558
commit d7bf0fe536
5 changed files with 27 additions and 14 deletions

View File

@@ -32,17 +32,17 @@ import { OrganizationInvite } from "./organization-invite";
// We're storing the organization invite for 2 reasons:
// 1. If the org requires a MP policy check, we need to keep track that the user has already been redirected when they return.
// 2. The MP policy check happens on login/register flows, we need to store the token to retrieve the policies then.
export const ORGANIZATION_INVITE = new KeyDefinition<OrganizationInvite>(
export const ORGANIZATION_INVITE = new KeyDefinition<OrganizationInvite | null>(
ORGANIZATION_INVITE_DISK,
"organizationInvite",
{
deserializer: (invite) => OrganizationInvite.fromJSON(invite),
deserializer: (invite) => (invite ? OrganizationInvite.fromJSON(invite) : null),
},
);
@Injectable()
export class AcceptOrganizationInviteService {
private organizationInvitationState: GlobalState<OrganizationInvite>;
private organizationInvitationState: GlobalState<OrganizationInvite | null>;
private orgNameSubject: BehaviorSubject<string> = new BehaviorSubject<string>(null);
private policyCache: Policy[];
@@ -66,7 +66,7 @@ export class AcceptOrganizationInviteService {
}
/** Returns the currently stored organization invite */
async getOrganizationInvite(): Promise<OrganizationInvite> {
async getOrganizationInvite(): Promise<OrganizationInvite | null> {
return await firstValueFrom(this.organizationInvitationState.state$);
}

View File

@@ -11,11 +11,19 @@ export class OrganizationInvite {
organizationUserId: string;
token: string;
static fromJSON(json: Jsonify<OrganizationInvite>) {
static fromJSON(json: Jsonify<OrganizationInvite>): OrganizationInvite | null {
if (json == null) {
return null;
}
return Object.assign(new OrganizationInvite(), json);
}
static fromParams(params: Params): OrganizationInvite {
static fromParams(params: Params): OrganizationInvite | null {
if (params == null) {
return null;
}
return Object.assign(new OrganizationInvite(), {
email: params.email,
initOrganization: params.initOrganization?.toLocaleLowerCase() === "true",