]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix password authentication for links and fix template problems for links by creating...
authorMichael Gapczynski <mtgap@owncloud.com>
Wed, 29 Aug 2012 15:54:31 +0000 (11:54 -0400)
committerMichael Gapczynski <mtgap@owncloud.com>
Wed, 29 Aug 2012 15:54:49 +0000 (11:54 -0400)
apps/files_sharing/css/public.css
apps/files_sharing/public.php
apps/files_sharing/templates/authenticate.php
apps/files_sharing/templates/public.php
core/templates/layout.base.php [new file with mode: 0644]
lib/templatelayout.php

index aa76c06175bdc662e3f6d8a284db14ae640741bc..f38afae3dd8b4778fc5c069941b042e27c9f3090 100644 (file)
@@ -1,2 +1,7 @@
-#content { position:relative; }
-#preview p { text-align: center; }
\ No newline at end of file
+body { background:#ddd; }
+#header { position:fixed; top:0; left:0; right:0; z-index:100; height:2.5em; line-height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; }
+#details { color:#fff; }
+#download { margin-left:2em; font-weight:bold; color:#fff; }
+#preview { min-height:30em; margin:50px auto; border-bottom:1px solid #f8f8f8; background:#eee; text-align:center; }
+p.info { width:22em; text-align: center; margin:2em auto; color:#777; text-shadow:#fff 0 1px 0; }
+p.info a { font-weight:bold; color:#777; }
\ No newline at end of file
index 15dac576d98ae22138a367d475866220809904c0..a4bf0230a3a9548e59d0529915375f36a18b081f 100644 (file)
@@ -5,6 +5,7 @@ if (isset($_GET['file'])) {
        $pos = strpos($_GET['file'], '/', 1);
        $uidOwner = substr($_GET['file'], 1, $pos - 1);
        if (OCP\User::userExists($uidOwner)) {
+               OC_Util::tearDownFS();
                OC_Util::setupFS($uidOwner);
                $file = substr($_GET['file'], $pos);
                $fileSource = OC_Filecache::getId($_GET['file'], '');
@@ -18,14 +19,19 @@ if (isset($_GET['file'])) {
                                        $hasher = new PasswordHash(8, $forcePortable);
                                        if (!($hasher->CheckPassword($password.OC_Config::getValue('passwordsalt', ''), $storedHash))) {
                                                $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
+                                               $tmpl->assign('URL', OCP\Util::linkToPublic('files').'&file='.$_GET['file']);
                                                $tmpl->assign('error', true);
                                                $tmpl->printPage();
                                                exit();
+                                       } else {
+                                               // Save item id in session for future requests
+                                               $_SESSION['public_link_authenticated'] = $linkItem['id'];
                                        }
-                                       // Continue on if password is valid
-                               } else {
+                               // Check if item id is set in session
+                               } else if (!isset($_SESSION['public_link_authenticated']) || $_SESSION['public_link_authenticated'] !== $linkItem['id']) {
                                        // Prompt for password
                                        $tmpl = new OCP\Template('files_sharing', 'authenticate', 'guest');
+                                       $tmpl->assign('URL', OCP\Util::linkToPublic('files').'&file='.$_GET['file']);
                                        $tmpl->printPage();
                                        exit();
                                }
@@ -45,7 +51,8 @@ if (isset($_GET['file'])) {
                                OCP\Util::addStyle('files_sharing', 'public');
                                OCP\Util::addScript('files_sharing', 'public');
                                OCP\Util::addScript('files', 'fileactions');
-                               $tmpl = new OCP\Template('files_sharing', 'public', 'guest');
+                               $tmpl = new OCP\Template('files_sharing', 'public', 'base');
+                               $tmpl->assign('details', $uidOwner.' shared the file '.basename($path).' with you');
                                $tmpl->assign('owner', $uidOwner);
                                $tmpl->assign('name', basename($path));
                                // Show file list
index 41064d5146495598f55d52b65e2d118d360cc669..9695caebf1831d88e4d8aeb56a12cd71a5c3041e 100644 (file)
@@ -1,4 +1,4 @@
-<form action="index.php" method="post">
+<form action="<?php echo $_['URL']; ?>" method="post">
        <fieldset>
                <p>
                        <label for="password" class="infield"><?php echo $l->t('Password'); ?></label>
index 065818c2200e5b77337df8caeb7c84d36ecc4f97..36e159dafeefb75c50006318b30764f6cd735f28 100755 (executable)
@@ -2,12 +2,16 @@
 <input type="hidden" name="downloadURL" value="<?php echo $_['downloadURL'] ?>" id="downloadURL">
 <input type="hidden" name="filename" value="<?php echo $_['filename'] ?>" id="filename">
 <input type="hidden" name="mimetype" value="<?php echo $_['mimetype'] ?>" id="mimetype">
+<header><div id="header">
+       <a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img class="svg" src="<?php echo image_path('', 'logo-wide.svg'); ?>" alt="ownCloud" /></a>
+       <div class="header-right">
+               <span id="details"><?php echo $_['details']; ?></span>
+               <a href="<?php echo $_['downloadURL']; ?>" id="download"><img class="svg" alt="Download" src="<?php echo OCP\image_path("core", "actions/download.svg"); ?>" /><?php echo $l->t('Download')?></a>
+       </div>
+</div></header>
 <div id="preview">
-       <p><?php echo $_['owner']; ?> shared the file <?php echo $_['name'] ?> with you</p>
-</div>
-<div id="content">
        <?php if (substr($_['mimetype'], 0 , strpos($_['mimetype'], '/')) == 'image'): ?>
                <img src="<?php echo $_['downloadURL']; ?>" />
        <?php endif; ?>
 </div>
-<a href="<?php echo $_['downloadURL']; ?>">Download</a>
\ No newline at end of file
+<footer><p class="info"><a href="http://owncloud.org/">ownCloud</a> &ndash; <?php echo $l->t('web services under your control'); ?></p></footer>
\ No newline at end of file
diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php
new file mode 100644 (file)
index 0000000..bfd23a9
--- /dev/null
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html>
+       <head>
+               <title>ownCloud</title>
+               <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+               <link rel="shortcut icon" href="<?php echo image_path('', 'favicon.png'); ?>" /><link rel="apple-touch-icon-precomposed" href="<?php echo image_path('', 'favicon-touch.png'); ?>" />
+               <?php if (!empty(OC_Util::$core_styles)): ?>
+                       <link rel="stylesheet" href="<?php echo OC_Helper::linkToRemote('core.css', false) ?>" type="text/css" media="screen" />
+               <?php endif ?>
+               <?php foreach ($_['cssfiles'] as $cssfile): ?>
+                       <link rel="stylesheet" href="<?php echo $cssfile; ?>" type="text/css" media="screen" />
+               <?php endforeach; ?>
+               <script type="text/javascript">
+                       var oc_webroot = '<?php echo OC::$WEBROOT; ?>';
+                       var oc_appswebroots = <?php echo $_['apps_paths'] ?>;
+               </script>
+               <?php if (!empty(OC_Util::$core_scripts)): ?>
+                       <script type="text/javascript" src="<?php echo OC_Helper::linkToRemote('core.js', false) ?>"></script>
+               <?php endif ?>
+               <?php foreach ($_['jsfiles'] as $jsfile): ?>
+                       <script type="text/javascript" src="<?php echo $jsfile; ?>"></script>
+               <?php endforeach; ?>
+               <?php foreach ($_['headers'] as $header): ?>
+                       <?php
+                               echo '<'.$header['tag'].' ';
+                               foreach ($header['attributes'] as $name => $value) {
+                                       echo "$name='$value' ";
+                               };
+                               echo '/>';
+                       ?>
+               <?php endforeach; ?>
+       </head>
+
+       <body>
+               <?php echo $_['content']; ?>
+       </body>
+</html>
index 588a784599724e61aab2ad0235819c2002305a2c..18fd23aac95e21e4a1914e334c1d7191b5969fe8 100644 (file)
@@ -29,14 +29,16 @@ class OC_TemplateLayout extends OC_Template {
                                        break;
                                }
                        }
-               }else{
-                       parent::__construct( 'core', 'layout.guest' );
+               } else if ($renderas == 'guest') {
+                       parent::__construct('core', 'layout.guest');
+               } else {
+                       parent::__construct('core', 'layout.base');
                }
 
                $apps_paths = array();
                foreach(OC_App::getEnabledApps() as $app){
                        $apps_paths[$app] = OC_App::getAppWebPath($app);
-    }
+               }
                $this->assign( 'apps_paths', str_replace('\\/', '/',json_encode($apps_paths)),false ); // Ugly unescape slashes waiting for better solution
 
                // Add the js files
@@ -63,7 +65,7 @@ class OC_TemplateLayout extends OC_Template {
                        foreach(OC::$APPSROOTS as $app_root) {
                                if($root == $app_root['path']) {
                                        $in_root = true;
-          break;
+                                       break;
                                }
                        }