From 658dd6a8f0925d75ec48895a2f412f2501254a78 Mon Sep 17 00:00:00 2001 From: Anandashankar Anil Date: Fri, 18 Feb 2022 10:53:24 +0100 Subject: [PATCH 1/5] Show logged in user in header --- dds_cli/__main__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dds_cli/__main__.py b/dds_cli/__main__.py index 9a0557578..2e54aad35 100644 --- a/dds_cli/__main__.py +++ b/dds_cli/__main__.py @@ -32,6 +32,7 @@ import dds_cli.project_creator import dds_cli.auth import dds_cli.project_status +import dds_cli.user import dds_cli.utils from dds_cli.options import ( email_arg, @@ -74,6 +75,8 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## +# Get token metadata +_, metadata = dds_cli.user.TokenFile().read_token() # Print header to STDERR dds_cli.utils.stderr_console.print( @@ -82,7 +85,8 @@ "\n[green]( ) ) ( ( )[/] [bold]SciLifeLab Data Delivery System", "\n[green] ︶ ( ) ) ([/] [blue][link={0}]{0}[/link]".format(dds_cli.__url__), f"\n[green] ︶ ( )[/] [dim]Version {dds_cli.__version__}", - "\n[green] ︶\n", + "\n[green] ︶", + f"\n[green]Logged in:[/] [red]{metadata.get('csg') if metadata else 'None'}", highlight=False, ) From 46b5c2653734fa76a58eb6f97f306b775cbc051e Mon Sep 17 00:00:00 2001 From: Anandashankar Anil Date: Fri, 18 Feb 2022 11:38:55 +0100 Subject: [PATCH 2/5] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83af1ebb1..4edc9198c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,3 +80,4 @@ Please add a _short_ line describing the PR you make, if the PR implements a spe ## Sprint (2022-02-09 - 2022-02-23) * Add `dds project access fix` command for reseting user access when reset password ([236](https://github.com/ScilifelabDataCentre/dds_cli/pull/236)) * Save failed files to log and print out help message after ([237](https://github.com/ScilifelabDataCentre/dds_cli/pull/237)) +* Display logged in user in header ([244](https://github.com/ScilifelabDataCentre/dds_cli/pull/244)) \ No newline at end of file From 2de2a8ce99a600e57573b50d07fe7f6b86c7876f Mon Sep 17 00:00:00 2001 From: Anandashankar Anil Date: Mon, 21 Feb 2022 18:47:20 +0100 Subject: [PATCH 3/5] Move away from getting username from token --- dds_cli/__main__.py | 4 ++-- dds_cli/user.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dds_cli/__main__.py b/dds_cli/__main__.py index 4ccff6d0a..82e6bfb22 100644 --- a/dds_cli/__main__.py +++ b/dds_cli/__main__.py @@ -73,7 +73,7 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ## # Get token metadata -_, metadata = dds_cli.user.TokenFile().read_token() +username = dds_cli.user.User.get_user_name_if_logged_in() # Print header to STDERR dds_cli.utils.stderr_console.print( @@ -83,7 +83,7 @@ "\n[green] ︶ ( ) ) ([/] [blue][link={0}]{0}[/link]".format(dds_cli.__url__), f"\n[green] ︶ ( )[/] [dim]Version {dds_cli.__version__}", "\n[green] ︶", - f"\n[green]Logged in:[/] [red]{metadata.get('csg') if metadata else 'None'}", + f"\n[green]Logged in:[/] [red]{username}", highlight=False, ) diff --git a/dds_cli/user.py b/dds_cli/user.py index b0653595d..99d38c30a 100644 --- a/dds_cli/user.py +++ b/dds_cli/user.py @@ -184,6 +184,25 @@ def __authenticate_user(self): return token + @staticmethod + def get_user_name_if_logged_in(): + """Returns a user name if logged in, otherwise None""" + tokenfile = TokenFile() + username = "None" + if tokenfile.file_exists(): + token, _ = tokenfile.read_token() + try: + response = requests.get( + dds_cli.DDSEndpoint.DISPLAY_USER_INFO, + headers={"Authorization": f"Bearer {token}"}, + ) + # Get response + response_json = response.json() + username = response_json["info"]["username"] + except: + pass + return username + class TokenFile: """A class to manage the saved token.""" From b94f91d74583d52d6e75d0bce99e376919e6f0e8 Mon Sep 17 00:00:00 2001 From: Anandashankar Anil Date: Tue, 22 Feb 2022 10:53:30 +0100 Subject: [PATCH 4/5] Add check for expired token and change label --- dds_cli/__main__.py | 2 +- dds_cli/user.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dds_cli/__main__.py b/dds_cli/__main__.py index 82e6bfb22..f0acf6ceb 100644 --- a/dds_cli/__main__.py +++ b/dds_cli/__main__.py @@ -83,7 +83,7 @@ "\n[green] ︶ ( ) ) ([/] [blue][link={0}]{0}[/link]".format(dds_cli.__url__), f"\n[green] ︶ ( )[/] [dim]Version {dds_cli.__version__}", "\n[green] ︶", - f"\n[green]Logged in:[/] [red]{username}", + f"\n[green]Current user:[/] [red]{username}", highlight=False, ) diff --git a/dds_cli/user.py b/dds_cli/user.py index 99d38c30a..611807ec2 100644 --- a/dds_cli/user.py +++ b/dds_cli/user.py @@ -189,7 +189,7 @@ def get_user_name_if_logged_in(): """Returns a user name if logged in, otherwise None""" tokenfile = TokenFile() username = "None" - if tokenfile.file_exists(): + if tokenfile.file_exists() and not tokenfile.token_expired(): token, _ = tokenfile.read_token() try: response = requests.get( From 671480ed4d60f798347e51199e8a7415cd92fefd Mon Sep 17 00:00:00 2001 From: Anandashankar Anil Date: Tue, 22 Feb 2022 12:11:45 +0100 Subject: [PATCH 5/5] Update for comments --- dds_cli/__main__.py | 2 +- dds_cli/user.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dds_cli/__main__.py b/dds_cli/__main__.py index f0acf6ceb..68263052d 100644 --- a/dds_cli/__main__.py +++ b/dds_cli/__main__.py @@ -83,7 +83,7 @@ "\n[green] ︶ ( ) ) ([/] [blue][link={0}]{0}[/link]".format(dds_cli.__url__), f"\n[green] ︶ ( )[/] [dim]Version {dds_cli.__version__}", "\n[green] ︶", - f"\n[green]Current user:[/] [red]{username}", + f"\n[green]Current user:[/] [red]{username}" if username else "", highlight=False, ) diff --git a/dds_cli/user.py b/dds_cli/user.py index 611807ec2..6afd1b753 100644 --- a/dds_cli/user.py +++ b/dds_cli/user.py @@ -188,7 +188,7 @@ def __authenticate_user(self): def get_user_name_if_logged_in(): """Returns a user name if logged in, otherwise None""" tokenfile = TokenFile() - username = "None" + username = None if tokenfile.file_exists() and not tokenfile.token_expired(): token, _ = tokenfile.read_token() try: