mirror of
https://github.com/bitwarden/jslib
synced 2025-12-20 18:23:52 +00:00
127 lines
5.8 KiB
TypeScript
127 lines
5.8 KiB
TypeScript
import { CipherType } from '../../enums/cipherType';
|
|
|
|
import { Cipher } from '../domain/cipher';
|
|
|
|
import { CardApi } from '../api/cardApi';
|
|
import { FieldApi } from '../api/fieldApi';
|
|
import { IdentityApi } from '../api/identityApi';
|
|
import { LoginApi } from '../api/loginApi';
|
|
import { SecureNoteApi } from '../api/secureNoteApi';
|
|
|
|
import { PasswordHistoryRequest } from './passwordHistoryRequest';
|
|
|
|
export class CipherRequest {
|
|
type: CipherType;
|
|
folderId: string;
|
|
organizationId: string;
|
|
name: string;
|
|
notes: string;
|
|
favorite: boolean;
|
|
login: LoginApi;
|
|
secureNote: SecureNoteApi;
|
|
card: CardApi;
|
|
identity: IdentityApi;
|
|
fields: FieldApi[];
|
|
passwordHistory: PasswordHistoryRequest[];
|
|
attachments: { [id: string]: string; };
|
|
|
|
constructor(cipher: Cipher) {
|
|
this.type = cipher.type;
|
|
this.folderId = cipher.folderId;
|
|
this.organizationId = cipher.organizationId;
|
|
this.name = cipher.name ? cipher.name.encryptedString : null;
|
|
this.notes = cipher.notes ? cipher.notes.encryptedString : null;
|
|
this.favorite = cipher.favorite;
|
|
|
|
switch (this.type) {
|
|
case CipherType.Login:
|
|
this.login = {
|
|
uris: null,
|
|
username: cipher.login.username ? cipher.login.username.encryptedString : null,
|
|
password: cipher.login.password ? cipher.login.password.encryptedString : null,
|
|
passwordRevisionDate: cipher.login.passwordRevisionDate,
|
|
totp: cipher.login.totp ? cipher.login.totp.encryptedString : null,
|
|
};
|
|
|
|
if (cipher.login.uris) {
|
|
this.login.uris = [];
|
|
cipher.login.uris.forEach((u) => {
|
|
this.login.uris.push({
|
|
uri: u.uri ? u.uri.encryptedString : null,
|
|
match: u.match != null ? u.match : null,
|
|
});
|
|
});
|
|
}
|
|
break;
|
|
case CipherType.SecureNote:
|
|
this.secureNote = {
|
|
type: cipher.secureNote.type,
|
|
};
|
|
break;
|
|
case CipherType.Card:
|
|
this.card = {
|
|
cardholderName: cipher.card.cardholderName ? cipher.card.cardholderName.encryptedString : null,
|
|
brand: cipher.card.brand ? cipher.card.brand.encryptedString : null,
|
|
number: cipher.card.number ? cipher.card.number.encryptedString : null,
|
|
expMonth: cipher.card.expMonth ? cipher.card.expMonth.encryptedString : null,
|
|
expYear: cipher.card.expYear ? cipher.card.expYear.encryptedString : null,
|
|
code: cipher.card.code ? cipher.card.code.encryptedString : null,
|
|
};
|
|
break;
|
|
case CipherType.Identity:
|
|
this.identity = {
|
|
title: cipher.identity.title ? cipher.identity.title.encryptedString : null,
|
|
firstName: cipher.identity.firstName ? cipher.identity.firstName.encryptedString : null,
|
|
middleName: cipher.identity.middleName ? cipher.identity.middleName.encryptedString : null,
|
|
lastName: cipher.identity.lastName ? cipher.identity.lastName.encryptedString : null,
|
|
address1: cipher.identity.address1 ? cipher.identity.address1.encryptedString : null,
|
|
address2: cipher.identity.address2 ? cipher.identity.address2.encryptedString : null,
|
|
address3: cipher.identity.address3 ? cipher.identity.address3.encryptedString : null,
|
|
city: cipher.identity.city ? cipher.identity.city.encryptedString : null,
|
|
state: cipher.identity.state ? cipher.identity.state.encryptedString : null,
|
|
postalCode: cipher.identity.postalCode ? cipher.identity.postalCode.encryptedString : null,
|
|
country: cipher.identity.country ? cipher.identity.country.encryptedString : null,
|
|
company: cipher.identity.company ? cipher.identity.company.encryptedString : null,
|
|
email: cipher.identity.email ? cipher.identity.email.encryptedString : null,
|
|
phone: cipher.identity.phone ? cipher.identity.phone.encryptedString : null,
|
|
ssn: cipher.identity.ssn ? cipher.identity.ssn.encryptedString : null,
|
|
username: cipher.identity.username ? cipher.identity.username.encryptedString : null,
|
|
passportNumber: cipher.identity.passportNumber ?
|
|
cipher.identity.passportNumber.encryptedString : null,
|
|
licenseNumber: cipher.identity.licenseNumber ? cipher.identity.licenseNumber.encryptedString : null,
|
|
};
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (cipher.fields) {
|
|
this.fields = [];
|
|
cipher.fields.forEach((field) => {
|
|
this.fields.push({
|
|
type: field.type,
|
|
name: field.name ? field.name.encryptedString : null,
|
|
value: field.value ? field.value.encryptedString : null,
|
|
});
|
|
});
|
|
}
|
|
|
|
if (cipher.passwordHistory) {
|
|
this.passwordHistory = [];
|
|
cipher.passwordHistory.forEach((ph) => {
|
|
this.passwordHistory.push({
|
|
lastUsedDate: ph.lastUsedDate,
|
|
password: ph.password ? ph.password.encryptedString : null,
|
|
});
|
|
});
|
|
}
|
|
|
|
if (cipher.attachments) {
|
|
this.attachments = {};
|
|
cipher.attachments.forEach((attachment) => {
|
|
this.attachments[attachment.id] = attachment.fileName ? attachment.fileName.encryptedString : null;
|
|
});
|
|
}
|
|
}
|
|
}
|