def disconnect_handler(remote, *args, **kwargs): """Handle unlinking of remote account.""" from invenio.modules.oauthclient.utils import oauth_unlink_external_id from invenio.modules.oauthclient.models import RemoteAccount if not current_user.is_authenticated(): return current_app.login_manager.unauthorized() account = RemoteAccount.get(user_id=current_user.get_id(), client_id=remote.consumer_key) orcid = account.extra_data.get('orcid') if orcid: oauth_unlink_external_id(dict(id=orcid, method='orcid')) if account: account.delete() return redirect(url_for('oauthclient_settings.index'))
def get_account(user_id=None): """ Retrieve linked GitHub account """ return RemoteAccount.get(user_id or current_user.get_id(), get_client_id())