Commit 1285b780 authored by Thomas Müller's avatar Thomas Müller
Browse files

Merge pull request #21200 from owncloud/files-authorizationheader

Use Authorization headers for public webdav in web UI
parents 38f44077 064dcc07
......@@ -89,7 +89,8 @@ describe('OCA.Sharing.PublicApp tests', function() {
it('Uses public webdav endpoint', function() {
expect(fakeServer.requests.length).toEqual(1);
expect(fakeServer.requests[0].method).toEqual('PROPFIND');
expect(fakeServer.requests[0].url).toEqual('https://sh4tok@example.com/owncloud/public.php/webdav/subdir');
expect(fakeServer.requests[0].url).toEqual('https://example.com/owncloud/public.php/webdav/subdir');
expect(fakeServer.requests[0].requestHeaders.Authorization).toEqual('Basic c2g0dG9rOm51bGw=');
});
describe('Download Url', function() {
......
......@@ -29,6 +29,7 @@
"bootstrap": "~3.3.6",
"backbone": "~1.2.3",
"davclient.js": "https://github.com/evert/davclient.js.git",
"es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0"
"es6-promise": "https://github.com/jakearchibald/es6-promise.git#~2.3.0",
"base64": "~0.3.0"
}
}
......@@ -35,27 +35,25 @@
if (options.useHTTPS) {
url = 'https://';
}
var credentials = '';
if (options.userName) {
credentials += encodeURIComponent(options.userName);
}
if (options.password) {
credentials += ':' + encodeURIComponent(options.password);
}
if (credentials.length > 0) {
url += credentials + '@';
}
url += options.host + this._root;
this._defaultHeaders = options.defaultHeaders || {'X-Requested-With': 'XMLHttpRequest'};
this._baseUrl = url;
this._client = new dav.Client({
var clientOptions = {
baseUrl: this._baseUrl,
xmlNamespaces: {
'DAV:': 'd',
'http://owncloud.org/ns': 'oc'
}
});
};
if (options.userName) {
clientOptions.userName = options.userName;
}
if (options.password) {
clientOptions.password = options.password;
}
this._client = new dav.Client(clientOptions);
this._client.xhrProvider = _.bind(this._xhrProvider, this);
};
......
......@@ -133,3 +133,5 @@ es6-promise/**
!es6-promise/LICENSE
!es6-promise/dist/es6-promise.js
# base64
base64/*min.js
{
"name": "base64",
"version": "0.3.0",
"description": "Base64 encoding and decoding",
"main": "./base64.js",
"license": "WTFPL",
"repository": {
"type": "git",
"url": "git://github.com/davidchambers/Base64.js.git"
},
"ignore": [
"**/.*",
"Makefile",
"coverage/",
"scripts/",
"test/"
],
"homepage": "https://github.com/davidchambers/Base64.js",
"_release": "0.3.0",
"_resolution": {
"type": "version",
"tag": "0.3.0",
"commit": "772df096a5ffe983f40202684ad45eed1e0e2d59"
},
"_source": "git://github.com/davidchambers/Base64.js.git",
"_target": "~0.3.0",
"_originalSource": "base64",
"_direct": true
}
\ No newline at end of file
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (c) 2011..2012 David Chambers <dc@hashify.me>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
;(function () {
var object = typeof exports != 'undefined' ? exports : this; // #8: web workers
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
function InvalidCharacterError(message) {
this.message = message;
}
InvalidCharacterError.prototype = new Error;
InvalidCharacterError.prototype.name = 'InvalidCharacterError';
// encoder
// [https://gist.github.com/999166] by [https://github.com/nignag]
object.btoa || (
object.btoa = function (input) {
var str = String(input);
for (
// initialize result and counter
var block, charCode, idx = 0, map = chars, output = '';
// if the next str index does not exist:
// change the mapping table to "="
// check if d has no fractional digits
str.charAt(idx | 0) || (map = '=', idx % 1);
// "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
output += map.charAt(63 & block >> 8 - idx % 1 * 8)
) {
charCode = str.charCodeAt(idx += 3/4);
if (charCode > 0xFF) {
throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
}
block = block << 8 | charCode;
}
return output;
});
// decoder
// [https://gist.github.com/1020396] by [https://github.com/atk]
object.atob || (
object.atob = function (input) {
var str = String(input).replace(/=+$/, '');
if (str.length % 4 == 1) {
throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
}
for (
// initialize result and counters
var bc = 0, bs, buffer, idx = 0, output = '';
// get next character
buffer = str.charAt(idx++);
// character found in table? initialize bit storage and add its ascii value;
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
// and if not first of each 4 characters,
// convert the first 8 bits to one ascii character
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
) {
// try to find character in table (0-63, not found => -1)
buffer = chars.indexOf(buffer);
}
return output;
});
}());
......@@ -162,6 +162,8 @@ class OC_Template extends \OC\Template\Base {
}
if (\OC::$server->getRequest()->isUserAgent([\OC\AppFramework\Http\Request::USER_AGENT_IE])) {
// polyfill for btoa/atob for IE friends
OC_Util::addVendorScript('base64/base64');
// shim for the davclient.js library
\OCP\Util::addScript('files/iedavclient');
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment