Browse Source

web client: try to prevent browsers from caching requests

Fixes #493
Nicola Murino 4 years ago
parent
commit
0503215e7a
2 changed files with 7 additions and 2 deletions
  1. 3 1
      httpd/webclient.go
  2. 4 1
      templates/webclient/files.html

+ 3 - 1
httpd/webclient.go

@@ -80,6 +80,7 @@ type filesPage struct {
 	CanCreateDirs bool
 	CanRename     bool
 	CanDelete     bool
+	CanDownload   bool
 	Error         string
 	Paths         []dirMapping
 }
@@ -100,7 +101,7 @@ type credentialsPage struct {
 }
 
 func getFileObjectURL(baseDir, name string) string {
-	return fmt.Sprintf("%v?path=%v", webClientFilesPath, url.QueryEscape(path.Join(baseDir, name)))
+	return fmt.Sprintf("%v?path=%v&_=%v", webClientFilesPath, url.QueryEscape(path.Join(baseDir, name)), time.Now().UTC().Unix())
 }
 
 func getFileObjectModTime(t time.Time) string {
@@ -211,6 +212,7 @@ func renderFilesPage(w http.ResponseWriter, r *http.Request, dirName, error stri
 		CanCreateDirs:  user.CanAddDirsFromWeb(dirName),
 		CanRename:      user.CanRenameFromWeb(dirName, dirName),
 		CanDelete:      user.CanDeleteFromWeb(dirName),
+		CanDownload:    user.HasPerm(dataprovider.PermDownload, dirName),
 	}
 	paths := []dirMapping{}
 	if dirName != "/" {

+ 4 - 1
templates/webclient/files.html

@@ -467,7 +467,8 @@
                 var files = fixedEncodeURIComponent(JSON.stringify(filesArray));
                 var downloadURL = '{{.DownloadURL}}';
                 var currentDir = '{{.CurrentDir}}';
-                window.location = `${downloadURL}?path=${currentDir}&files=${files}`;
+                var ts = new Date().getTime().toString();
+                window.location = `${downloadURL}?path=${currentDir}&files=${files}&_=${ts}`;
             },
             enabled: false
         };
@@ -614,7 +615,9 @@
             "initComplete": function (settings, json) {
                 table.button().add(0, 'refresh');
                 table.button().add(0, 'pageLength');
+                {{if .CanDownload}}
                 table.button().add(0, 'download');
+                {{end}}
                 {{if .CanDelete}}
                 table.button().add(0, 'delete');
                 {{end}}