Files
gerrit/polygerrit-ui/app/elements/shared/gr-rest-api-interface/gr-gerrit-auth.js
Viktar Donich cc58d5ae39 Extract auth logic from gr-rest-api-interface
First step for adding more auth provides (eg OAuth)

Feature: Issue 6489
Change-Id: I6c88e9fd92b67ae50a816bce12ed2412a9ec8c2d
2017-06-15 16:10:12 -07:00

50 lines
1.5 KiB
JavaScript

// Copyright (C) 2017 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
(function(window) {
'use strict';
// Prevent redefinition.
if (window.GrGerritAuth) { return; }
function GrGerritAuth() {}
GrGerritAuth.prototype._getCookie = function(name) {
const key = name + '=';
let result = '';
document.cookie.split(';').some(c => {
c = c.trim();
if (c.startsWith(key)) {
result = c.substring(key.length);
return true;
}
});
return result;
};
GrGerritAuth.prototype.fetch = function(url, opt_options) {
const options = Object.assign({}, opt_options);
if (options.method && options.method !== 'GET') {
const token = this._getCookie('XSRF_TOKEN');
if (token) {
options.headers = options.headers || new Headers();
options.headers.append('X-Gerrit-Auth', token);
}
}
options.credentials = 'same-origin';
return fetch(url, options);
};
window.GrGerritAuth = GrGerritAuth;
})(window);