Oasis 0.8.7 mobile (nodejs-project baseline)
This commit is contained in:
commit
e563b86ede
226 changed files with 141968 additions and 0 deletions
101
src/views/cipher_view.js
Normal file
101
src/views/cipher_view.js
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
const { form, button, div, h2, p, section, textarea, label, input, br } = require("../server/node_modules/hyperaxe");
|
||||
const { template, i18n } = require('./main_views');
|
||||
const crypto = require('crypto');
|
||||
|
||||
function generateRandomPassword(length = 32) {
|
||||
return crypto.randomBytes(length).toString('hex').slice(0, length);
|
||||
}
|
||||
|
||||
const cipherView = async (encryptedText = "", decryptedText = "", iv = "", password = "") => {
|
||||
const randomPassword = generateRandomPassword();
|
||||
|
||||
const header = div({ class: "tags-header" },
|
||||
h2(i18n.cipherTitle),
|
||||
p(i18n.cipherDescription)
|
||||
);
|
||||
|
||||
const encryptForm = form(
|
||||
{ action: "/cipher/encrypt", method: "POST", id: "encryptForm" },
|
||||
textarea({
|
||||
name: "text",
|
||||
id: "text",
|
||||
required: true,
|
||||
placeholder: i18n.cipherTextPlaceholder,
|
||||
rows: 4
|
||||
}),
|
||||
br(),
|
||||
label(i18n.cipherPasswordLabel),
|
||||
br(),
|
||||
input({
|
||||
type: "password",
|
||||
name: "password",
|
||||
id: "password",
|
||||
required: true,
|
||||
placeholder: i18n.cipherPasswordPlaceholder,
|
||||
minlength: 32
|
||||
}),
|
||||
br(),
|
||||
button({ type: "submit" }, i18n.cipherEncryptButton)
|
||||
);
|
||||
|
||||
const decryptForm = form(
|
||||
{ action: "/cipher/decrypt", method: "POST", id: "decryptForm" },
|
||||
textarea({
|
||||
name: "encryptedText",
|
||||
id: "encryptedText",
|
||||
required: true,
|
||||
placeholder: i18n.cipherEncryptedTextPlaceholder,
|
||||
rows: 4,
|
||||
value: encryptedText
|
||||
}),
|
||||
br(),
|
||||
label(i18n.cipherPasswordDecryptLabel),
|
||||
br(),
|
||||
input({
|
||||
type: "password",
|
||||
name: "password",
|
||||
id: "password",
|
||||
required: true,
|
||||
placeholder: i18n.cipherPasswordPlaceholder,
|
||||
minlength: 32
|
||||
}),
|
||||
br(),
|
||||
button({ type: "submit" }, i18n.cipherDecryptButton)
|
||||
);
|
||||
|
||||
const encryptResult = encryptedText
|
||||
? div({ class: "cipher-result visible encrypted-result" },
|
||||
label(i18n.cipherEncryptedMessageLabel),
|
||||
br(),br(),
|
||||
div({ class: "cipher-text" }, encryptedText)
|
||||
)
|
||||
: null;
|
||||
|
||||
const decryptResult = decryptedText
|
||||
? div({ class: "cipher-result visible decrypted-result" },
|
||||
label(i18n.cipherDecryptedMessageLabel),
|
||||
br(),br(),
|
||||
div({ class: "cipher-text" }, decryptedText)
|
||||
)
|
||||
: null;
|
||||
|
||||
return template(
|
||||
i18n.cipherTitle,
|
||||
section(
|
||||
header,
|
||||
div({ id: "randomPassword" },
|
||||
h2({ class: "generated-password" }, randomPassword)
|
||||
),
|
||||
div({ class: "div-center" },
|
||||
encryptForm,
|
||||
br(),
|
||||
encryptResult,
|
||||
decryptForm,
|
||||
br(),
|
||||
decryptResult
|
||||
)
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
exports.cipherView = cipherView;
|
||||
Loading…
Add table
Add a link
Reference in a new issue