mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 13:27:22 +00:00
fix: terminal text alignment
This commit is contained in:
@@ -528,7 +528,8 @@ func browserCliLogin() (models.UserCredentials, error) {
|
|||||||
timeout := time.After(time.Second * time.Duration(SERVER_TIMEOUT))
|
timeout := time.After(time.Second * time.Duration(SERVER_TIMEOUT))
|
||||||
quit := make(chan bool)
|
quit := make(chan bool)
|
||||||
|
|
||||||
//
|
//terminal state
|
||||||
|
var oldState term.State
|
||||||
|
|
||||||
//create handler
|
//create handler
|
||||||
c := cors.New(cors.Options{
|
c := cors.New(cors.Options{
|
||||||
@@ -541,21 +542,24 @@ func browserCliLogin() (models.UserCredentials, error) {
|
|||||||
corsHandler := c.Handler(browserLoginHandler(success, failure))
|
corsHandler := c.Handler(browserLoginHandler(success, failure))
|
||||||
|
|
||||||
log.Debug().Msgf("Callback server listening on port %d", callbackPort)
|
log.Debug().Msgf("Callback server listening on port %d", callbackPort)
|
||||||
go quitBrowserLogin(quit)
|
go quitBrowserLogin(quit, &oldState)
|
||||||
go http.Serve(listener, corsHandler)
|
go http.Serve(listener, corsHandler)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case loginResponse := <-success:
|
case loginResponse := <-success:
|
||||||
err = closeListener(&listener)
|
err = closeListener(&listener)
|
||||||
|
restoreTerminal(&oldState)
|
||||||
return loginResponse, nil
|
return loginResponse, nil
|
||||||
|
|
||||||
case err = <-failure:
|
case err = <-failure:
|
||||||
err = closeListener(&listener)
|
err = closeListener(&listener)
|
||||||
|
restoreTerminal(&oldState)
|
||||||
return models.UserCredentials{}, err
|
return models.UserCredentials{}, err
|
||||||
|
|
||||||
case _ = <-timeout:
|
case _ = <-timeout:
|
||||||
err = closeListener(&listener)
|
err = closeListener(&listener)
|
||||||
|
restoreTerminal(&oldState)
|
||||||
return models.UserCredentials{}, errors.New("server timeout")
|
return models.UserCredentials{}, errors.New("server timeout")
|
||||||
|
|
||||||
case _ = <-quit:
|
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
|
// listens to 'q' input on terminal and
|
||||||
// sends 'true' to 'quit' channel
|
// 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()))
|
oldState, err := term.MakeRaw(int(os.Stdin.Fd()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer term.Restore(int(os.Stdin.Fd()), oldState)
|
*oState = *oldState
|
||||||
|
defer restoreTerminal(oldState)
|
||||||
b := make([]byte, 1)
|
b := make([]byte, 1)
|
||||||
for {
|
for {
|
||||||
_, _ = os.Stdin.Read(b)
|
_, _ = os.Stdin.Read(b)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default function InitialLoginStep({
|
|||||||
|
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const queryParams = new URLSearchParams(location.search)
|
const queryParams = new URLSearchParams(location.search)
|
||||||
if (queryParams) {
|
if (queryParams && queryParams.get("callback_port")) {
|
||||||
const callbackPort = queryParams.get("callback_port")
|
const callbackPort = queryParams.get("callback_port")
|
||||||
|
|
||||||
//attemptCliLogin
|
//attemptCliLogin
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ export default function MFAStep({
|
|||||||
|
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const queryParams = new URLSearchParams(location.search)
|
const queryParams = new URLSearchParams(location.search)
|
||||||
if (queryParams){
|
if (queryParams && queryParams.get("callback_port")){
|
||||||
const callbackPort = queryParams.get("callback_port")
|
const callbackPort = queryParams.get("callback_port")
|
||||||
|
|
||||||
//attemptCliLogin
|
//attemptCliLogin
|
||||||
@@ -94,7 +94,7 @@ export default function MFAStep({
|
|||||||
// case: login was successful
|
// case: login was successful
|
||||||
const cliUrl = `http://localhost:${callbackPort}`
|
const cliUrl = `http://localhost:${callbackPort}`
|
||||||
|
|
||||||
//send request to server endpoint
|
//send request to server endpoint
|
||||||
const instance = axios.create()
|
const instance = axios.create()
|
||||||
const cliResp = await instance.post(cliUrl,{...isCliLoginSuccessful.loginResponse,email})
|
const cliResp = await instance.post(cliUrl,{...isCliLoginSuccessful.loginResponse,email})
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const userKeys = {
|
|||||||
getOrgUsers: (orgId: string) => [{ orgId }, 'user']
|
getOrgUsers: (orgId: string) => [{ orgId }, 'user']
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchUserDetails = async () => {
|
export const fetchUserDetails = async () => {
|
||||||
const { data } = await apiRequest.get<{ user: User }>('/api/v1/user');
|
const { data } = await apiRequest.get<{ user: User }>('/api/v1/user');
|
||||||
|
|
||||||
return data.user;
|
return data.user;
|
||||||
|
|||||||
@@ -4,13 +4,15 @@ import Head from 'next/head';
|
|||||||
import Image from 'next/image';
|
import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
|
import axios from "axios"
|
||||||
|
|
||||||
// import ListBox from '@app/components/basic/Listbox';
|
// import ListBox from '@app/components/basic/Listbox';
|
||||||
import InitialLoginStep from '@app/components/login/InitialLoginStep';
|
import InitialLoginStep from '@app/components/login/InitialLoginStep';
|
||||||
import MFAStep from '@app/components/login/MFAStep';
|
import MFAStep from '@app/components/login/MFAStep';
|
||||||
import PasswordInputStep from '@app/components/login/PasswordInputStep';
|
import PasswordInputStep from '@app/components/login/PasswordInputStep';
|
||||||
import { useProviderAuth } from '@app/hooks/useProviderAuth';
|
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';
|
import getWorkspaces from './api/workspace/getWorkspaces';
|
||||||
|
|
||||||
@@ -20,6 +22,7 @@ export default function Login() {
|
|||||||
const [password, setPassword] = useState('');
|
const [password, setPassword] = useState('');
|
||||||
const [step, setStep] = useState(1);
|
const [step, setStep] = useState(1);
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
// const lang = router.locale ?? 'en';
|
// const lang = router.locale ?? 'en';
|
||||||
const {
|
const {
|
||||||
providerAuthToken,
|
providerAuthToken,
|
||||||
@@ -44,6 +47,20 @@ export default function Login() {
|
|||||||
try {
|
try {
|
||||||
const userWorkspaces = await getWorkspaces();
|
const userWorkspaces = await getWorkspaces();
|
||||||
userWorkspace = userWorkspaces[0] && userWorkspaces[0]._id;
|
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}`);
|
router.push(`/dashboard/${userWorkspace}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log('Error - Not logged in yet');
|
console.log('Error - Not logged in yet');
|
||||||
|
|||||||
Reference in New Issue
Block a user