From a6d80d4ccbaa31f9b3014162fe2c16bf7c50679c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 18 Jun 2024 02:15:04 +0200 Subject: [PATCH] qrcodemodel: Always include the content URI to the output In some cases (e.g. small terminals, tty's) the qrcode is not properly rendered or is not fully visible, so make the URI to be always written so that it can be used also without a qrcode scanner --- .../golden/authenticate_user_with_qr_code | 10 +++++----- .../golden/authenticate_user_with_qr_code_in_a_tty | 10 +++++----- .../authenticate_user_with_qr_code_in_a_tty_session | 10 +++++----- .../golden/authenticate_user_with_qr_code_in_screen | 10 +++++----- pam/internal/adapter/qrcodemodel.go | 6 ++++++ 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code index c93499864..e55fe8974 100644 --- a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code +++ b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code @@ -138,6 +138,7 @@ Scan the qrcode or enter the code in the login page ████▄▄▄▄▄▄▄█▄█▄█▄█▄████▄▄▄▄▄▄████ █████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://ubuntu.com 1337 [ regenerate QR code ] @@ -155,7 +156,6 @@ Scan the qrcode or enter the code in the login page - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -178,6 +178,7 @@ Scan the qrcode or enter the code in the login page ████▄▄▄▄▄▄▄█▄█▄█▄█▄████▄▄▄▄▄▄████ █████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://ubuntu.com 1337 [ regenerate QR code ] @@ -195,7 +196,6 @@ Scan the qrcode or enter the code in the login page - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -218,6 +218,7 @@ Scan the qrcode or enter the code in the login page ████▄▄▄▄▄▄▄█▄█▄█▄█▄████▄▄▄▄▄▄████ █████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://ubuntu.com 1337 [ regenerate QR code ] @@ -235,7 +236,6 @@ Scan the qrcode or enter the code in the login page - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -258,6 +258,7 @@ Scan the qrcode or enter the code in the login page ████▄▄▄▄▄▄▄█▄█▄█▄█▄████▄▄▄▄▄▄████ █████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://ubuntu.com 1337 PAM Authenticate() for user "user-integration-qr-code" exited with success @@ -275,7 +276,6 @@ PAM AcctMgmt() exited with success - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -298,6 +298,7 @@ Scan the qrcode or enter the code in the login page ████▄▄▄▄▄▄▄█▄█▄█▄█▄████▄▄▄▄▄▄████ █████████████████████████████████ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://ubuntu.com 1337 PAM Authenticate() for user "user-integration-qr-code" exited with success @@ -315,5 +316,4 @@ PAM AcctMgmt() exited with success - ──────────────────────────────────────────────────────────────────────────────── diff --git a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty index bbf90c276..1598c4b2c 100644 --- a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty +++ b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty @@ -154,8 +154,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -194,8 +194,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -234,8 +234,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -274,8 +274,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -314,6 +314,6 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── diff --git a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty_session b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty_session index ddb74840b..4d4094bc1 100644 --- a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty_session +++ b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_a_tty_session @@ -154,8 +154,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -194,8 +194,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -234,8 +234,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -274,8 +274,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -314,6 +314,6 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── diff --git a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_screen b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_screen index 4dbfd8d6a..619f6a133 100644 --- a/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_screen +++ b/pam/integration-tests/testdata/TestCLIAuthenticate/golden/authenticate_user_with_qr_code_in_screen @@ -154,8 +154,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -194,8 +194,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -234,8 +234,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -274,8 +274,8 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── > if [ -v AUTHD_PAM_CLI_TERM ]; then export TERM=${AUTHD_PAM_CLI_TERM}; fi > ./pam_authd login socket=${AUTHD_TESTS_CLI_AUTHENTICATE_TESTS_SOCK} @@ -314,6 +314,6 @@ Scan the qrcode or enter the code in the login page ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ ██████████████████████████████████████████████████████████████████ + https://ubuntu.com 1337 - ──────────────────────────────────────────────────────────────────────────────── diff --git a/pam/internal/adapter/qrcodemodel.go b/pam/internal/adapter/qrcodemodel.go index 620528786..3162d2496 100644 --- a/pam/internal/adapter/qrcodemodel.go +++ b/pam/internal/adapter/qrcodemodel.go @@ -111,6 +111,12 @@ func (m qrcodeModel) View() string { qrcodeWidth := lipgloss.Width(qr) style := centeredStyle.Width(qrcodeWidth) + renderedContent := m.content + if lipgloss.Width(m.content) < qrcodeWidth { + renderedContent = style.Render(m.content) + } + fields = append(fields, renderedContent) + if m.code != "" { fields = append(fields, style.Render(m.code)) }