make popup window removed video token and cookie when it is closed. Fixed mobile context menu not being able to download files

This commit is contained in:
kyle hoell
2020-11-27 17:53:15 -05:00
parent 9dbddb244e
commit f6fbada5b1
6 changed files with 72 additions and 14 deletions
+29 -3
View File
@@ -3,10 +3,11 @@ import FileService from "../services/FileService";
import MongoService from "../services/ChunkService/MongoService";
import FileSystemService from "../services/ChunkService/FileSystemService";
import S3Service from "../services/ChunkService/S3Service";
import {UserInterface} from "../models/user";
import User, {UserInterface} from "../models/user";
import tempStorage from "../tempStorage/tempStorage";
import sendShareEmail from "../utils/sendShareEmail";
import { createStreamVideoCookie } from "../cookies/createCookies";
import { createStreamVideoCookie, removeStreamVideoCookie } from "../cookies/createCookies";
import { ObjectID } from "mongodb";
const fileService = new FileService()
@@ -24,7 +25,8 @@ interface RequestTypeRefresh extends Request {
interface RequestTypeFullUser extends Request {
user?: UserInterface,
encryptedToken?: string
encryptedToken?: string,
accessTokenStreamVideo?: string
}
interface RequestType extends Request {
@@ -356,6 +358,30 @@ class FileController {
}
removeStreamVideoAccessToken = async(req: RequestTypeFullUser, res: Response) => {
if (!req.user) return;
try {
const userID = req.user._id;
const accessTokenStreamVideo = req.accessTokenStreamVideo!;
await User.updateOne({_id: userID}, {$pull: {tempTokens: {token: accessTokenStreamVideo}}});
removeStreamVideoCookie(res);
res.send();
} catch (e) {
console.log("\Remove Video Token File Router Error:", e.message);
const code = !e.code ? 500 : e.code >= 400 && e.code <= 599 ? e.code : 500;
res.status(code).send();
}
}
// getDownloadTokenVideo = async(req: RequestTypeFullUser, res: Response) => {
// if (!req.user) {
+10
View File
@@ -46,4 +46,14 @@ export const createStreamVideoCookie = (res: Response, streamVideoAccessToken: s
sameSite: "strict",
secure: process.env.NODE_ENV === "production"
})
}
export const removeStreamVideoCookie = (res: Response) => {
res.cookie("video-access-token", {}, {
httpOnly: true,
maxAge: 0,
sameSite: "strict",
secure: process.env.NODE_ENV === "production"
})
}
+2
View File
@@ -57,6 +57,8 @@ router.get("/file-service/download/access-token-stream-video", authFullUser, fil
router.get("/file-service/stream-video/:id", authStreamVideo, fileController.streamVideo);
router.delete("/file-service/remove-stream-video-token", authStreamVideo, fileController.removeStreamVideoAccessToken);
//router.get("/file-service/stream-video/:id/:tempToken/:uuid", auth, fileController.streamVideo);
//router.get("/file-service/stream-video/:id", auth, fileController.streamVideo);
+2
View File
@@ -8,6 +8,7 @@ interface RequestType extends Request {
user?: UserInterface,
token?: string,
encryptedToken?: string,
accessTokenStreamVideo?: string
}
// type jwtType = {
@@ -84,6 +85,7 @@ const authStreamVideo = async(req: RequestType, res: Response, next: NextFunctio
if (!tokenFound) throw new Error("Refresh Token Not Found");
req.user = user;
req.accessTokenStreamVideo = encryptedToken;
next();