blob: 4560a2e3b87532d4c77dd44bb3439341607cef97 [file] [log] [blame]
/**
* @license
* 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() {
'use strict';
const AUTH = [
'OPENID',
'OAUTH',
];
Polymer({
is: 'gr-identities',
_legacyUndefinedCheck: true,
properties: {
_identities: Object,
_idName: String,
serverConfig: Object,
_showLinkAnotherIdentity: {
type: Boolean,
computed: '_computeShowLinkAnotherIdentity(serverConfig)',
},
},
behaviors: [
Gerrit.BaseUrlBehavior,
],
loadData() {
return this.$.restAPI.getExternalIds().then(id => {
this._identities = id;
});
},
_computeIdentity(id) {
return id && id.startsWith('mailto:') ? '' : id;
},
_computeHideDeleteClass(canDelete) {
return canDelete ? 'show' : '';
},
_handleDeleteItemConfirm() {
this.$.overlay.close();
return this.$.restAPI.deleteAccountIdentity([this._idName])
.then(() => { this.loadData(); });
},
_handleConfirmDialogCancel() {
this.$.overlay.close();
},
_handleDeleteItem(e) {
const name = e.model.get('item.identity');
if (!name) { return; }
this._idName = name;
this.$.overlay.open();
},
_computeIsTrusted(item) {
return item ? '' : 'Untrusted';
},
filterIdentities(item) {
return !item.identity.startsWith('username:');
},
_computeShowLinkAnotherIdentity(config) {
if (config && config.auth &&
config.auth.git_basic_auth_policy) {
return AUTH.includes(
config.auth.git_basic_auth_policy.toUpperCase());
}
return false;
},
_computeLinkAnotherIdentity() {
const baseUrl = this.getBaseUrl() || '';
let pathname = window.location.pathname;
if (baseUrl) {
pathname = '/' + pathname.substring(baseUrl.length);
}
return baseUrl + '/login/' + encodeURIComponent(pathname) + '?link';
},
});
})();