Unverified Commit 34eabe39 authored by Peter Stanko's avatar Peter Stanko
Browse files

Ability to remove only tokens on logout

parent 331f62f1
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -12,20 +12,29 @@ log = logging.getLogger(__name__)

@click.command('logout', help="Logout")
@click.option('-r', '--remote', required=False, help='Sets remote for the login')
@click.option('-a', '--all', required=False, help='Remove all login info', 
              is_flag=True, default=False)
@click.pass_obj
def cli_logout(obj: AppConfig, remote):
def cli_logout(obj: AppConfig, remote: str, all: bool):
    print(f"Logout from: {remote.name} ({remote.url})")
    remote: Remote = helpers.get_remote(obj, remote)
    _logout(remote)
    _logout(remote, all=all)
    helpers.entity_printer(remote)


def _logout(remote: Remote):
def _logout(remote: Remote, all: bool):
    def __safe_del(remote: Remote, name: str):
        if name in remote.config:
            del remote.config[name]
    for name in ['access_token', 'refresh_token', 'secret', 'username', 'password', 'identifier']:
        __safe_del(remote, name)

    def __del_params(*params):
        for name in params:
            __safe_del(remove, name)

    __del_params('access_token', 'refresh_token')
    
    if all:
        __del_params('username', 'identifier', 'password', 'secret')
    remote.update()