blob: 94c9e5a94df65fe0c74aab9d716afa5944a20f56 [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',
];
/**
* @appliesMixin Gerrit.BaseUrlMixin
*/
class GrIdentities extends Polymer.mixinBehaviors( [
Gerrit.BaseUrlBehavior,
], Polymer.GestureEventListeners(
Polymer.LegacyElementMixin(
Polymer.Element))) {
static get is() { return 'gr-identities'; }
static get properties() {
return {
_identities: Object,
_idName: String,
serverConfig: Object,
_showLinkAnotherIdentity: {
type: Boolean,
computed: '_computeShowLinkAnotherIdentity(serverConfig)',
},
};
}
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';
}
}
customElements.define(GrIdentities.is, GrIdentities);
})();