fix: terminal text alignment

This commit is contained in:
quinton11
2023-06-19 09:32:55 +00:00
parent 5a4a36a06a
commit 7e8ba077ae
5 changed files with 35 additions and 10 deletions

View File

@@ -528,7 +528,8 @@ func browserCliLogin() (models.UserCredentials, error) {
timeout := time.After(time.Second * time.Duration(SERVER_TIMEOUT))
quit := make(chan bool)
//
//terminal state
var oldState term.State
//create handler
c := cors.New(cors.Options{
@@ -541,21 +542,24 @@ func browserCliLogin() (models.UserCredentials, error) {
corsHandler := c.Handler(browserLoginHandler(success, failure))
log.Debug().Msgf("Callback server listening on port %d", callbackPort)
go quitBrowserLogin(quit)
go quitBrowserLogin(quit, &oldState)
go http.Serve(listener, corsHandler)
for {
select {
case loginResponse := <-success:
err = closeListener(&listener)
restoreTerminal(&oldState)
return loginResponse, nil
case err = <-failure:
err = closeListener(&listener)
restoreTerminal(&oldState)
return models.UserCredentials{}, err
case _ = <-timeout:
err = closeListener(&listener)
restoreTerminal(&oldState)
return models.UserCredentials{}, errors.New("server timeout")
case _ = <-quit:
@@ -565,16 +569,20 @@ func browserCliLogin() (models.UserCredentials, error) {
}
}
func restoreTerminal(oldState *term.State) {
term.Restore(int(os.Stdin.Fd()), oldState)
}
// listens to 'q' input on terminal and
// sends 'true' to 'quit' channel
func quitBrowserLogin(quit chan bool) {
func quitBrowserLogin(quit chan bool, oState *term.State) {
//
oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
if err != nil {
fmt.Println(err)
return
}
defer term.Restore(int(os.Stdin.Fd()), oldState)
*oState = *oldState
defer restoreTerminal(oldState)
b := make([]byte, 1)
for {
_, _ = os.Stdin.Read(b)

View File

@@ -39,7 +39,7 @@ export default function InitialLoginStep({
setIsLoading(true);
const queryParams = new URLSearchParams(location.search)
if (queryParams) {
if (queryParams && queryParams.get("callback_port")) {
const callbackPort = queryParams.get("callback_port")
//attemptCliLogin

View File

@@ -79,7 +79,7 @@ export default function MFAStep({
setIsLoading(true);
const queryParams = new URLSearchParams(location.search)
if (queryParams){
if (queryParams && queryParams.get("callback_port")){
const callbackPort = queryParams.get("callback_port")
//attemptCliLogin
@@ -94,7 +94,7 @@ export default function MFAStep({
// case: login was successful
const cliUrl = `http://localhost:${callbackPort}`
//send request to server endpoint
//send request to server endpoint
const instance = axios.create()
const cliResp = await instance.post(cliUrl,{...isCliLoginSuccessful.loginResponse,email})

View File

@@ -24,7 +24,7 @@ const userKeys = {
getOrgUsers: (orgId: string) => [{ orgId }, 'user']
};
const fetchUserDetails = async () => {
export const fetchUserDetails = async () => {
const { data } = await apiRequest.get<{ user: User }>('/api/v1/user');
return data.user;

View File

@@ -4,13 +4,15 @@ import Head from 'next/head';
import Image from 'next/image';
import Link from 'next/link';
import { useRouter } from 'next/router';
import axios from "axios"
// import ListBox from '@app/components/basic/Listbox';
import InitialLoginStep from '@app/components/login/InitialLoginStep';
import MFAStep from '@app/components/login/MFAStep';
import PasswordInputStep from '@app/components/login/PasswordInputStep';
import { useProviderAuth } from '@app/hooks/useProviderAuth';
import { isLoggedIn } from '@app/reactQuery';
import { getAuthToken, isLoggedIn } from '@app/reactQuery';
import { fetchUserDetails } from '~/hooks/api/users/queries';
import getWorkspaces from './api/workspace/getWorkspaces';
@@ -20,6 +22,7 @@ export default function Login() {
const [password, setPassword] = useState('');
const [step, setStep] = useState(1);
const { t } = useTranslation();
// const lang = router.locale ?? 'en';
const {
providerAuthToken,
@@ -44,6 +47,20 @@ export default function Login() {
try {
const userWorkspaces = await getWorkspaces();
userWorkspace = userWorkspaces[0] && userWorkspaces[0]._id;
//user details
const userDetails = await fetchUserDetails()
//send details back to client
const queryParams = new URLSearchParams(location.search)
if(queryParams && queryParams.get("callback_port")){
const callback_port = queryParams.get("callback_port")
//send post request to cli with details
const cliUrl = `http://localhost:${callback_port}`
const instance = axios.create()
const cliResp = await instance.post(cliUrl,{email:userDetails.email,privateKey:localStorage.getItem("PRIVATE_KEY"),JTWToken:getAuthToken()})
}
router.push(`/dashboard/${userWorkspace}`);
} catch (error) {
console.log('Error - Not logged in yet');