🔐 Implement password and expiration date (#53)

* Implemented password and expiration date on conf and backend side

* Implemented password modal on shared side

* Add public link related tests

* Fix tests
This commit is contained in:
Romaric Mourgues
2023-05-16 16:39:35 +02:00
committed by GitHub
parent a378cd13e1
commit 4af8e43bb2
9 changed files with 464 additions and 33 deletions
@@ -68,6 +68,8 @@ export const getDefaultDriveItem = (
],
public: {
level: "none",
password: "",
expiration: 0,
token: generateAccessToken(),
},
},
@@ -357,7 +359,7 @@ export const getAccessLevel = async (
? "manage"
: "write";
const publicToken = context.public_token;
let publicToken = context.public_token;
try {
item =
@@ -379,7 +381,15 @@ export const getAccessLevel = async (
//Public access
if (publicToken) {
if (!item.access_info.public.token) return "none";
const { token: itemToken, level: itemLevel } = item.access_info.public;
const { token: itemToken, level: itemLevel, password, expiration } = item.access_info.public;
if (expiration && expiration < Date.now()) return "none";
if (password) {
const data = publicToken.split("+");
if (data.length !== 2) return "none";
const [extractedPublicToken, publicTokenPassword] = data;
if (publicTokenPassword !== password) return "none";
publicToken = extractedPublicToken;
}
if (itemToken === publicToken) return itemLevel;
}