/** * @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'; }, }); })();