mirror of https://github.com/coder/coder.git
43 lines
966 B
TypeScript
43 lines
966 B
TypeScript
import { makeStyles } from "@material-ui/core/styles"
|
|
import React, { useEffect, useState } from "react"
|
|
import { getApiKey } from "../api"
|
|
import { CliAuthToken } from "../components/SignIn"
|
|
|
|
import { FullScreenLoader } from "../components/Loader/FullScreenLoader"
|
|
import { useUser } from "../contexts/UserContext"
|
|
|
|
export const CliAuthenticationPage: React.FC = () => {
|
|
const { me } = useUser(true)
|
|
const styles = useStyles()
|
|
|
|
const [apiKey, setApiKey] = useState<string | null>(null)
|
|
|
|
useEffect(() => {
|
|
if (me?.id) {
|
|
void getApiKey().then(({ key }) => {
|
|
setApiKey(key)
|
|
})
|
|
}
|
|
}, [me?.id])
|
|
|
|
if (!apiKey) {
|
|
return <FullScreenLoader />
|
|
}
|
|
|
|
return (
|
|
<div className={styles.root}>
|
|
<CliAuthToken sessionToken={apiKey} />
|
|
</div>
|
|
)
|
|
}
|
|
|
|
const useStyles = makeStyles(() => ({
|
|
root: {
|
|
width: "100vw",
|
|
height: "100vh",
|
|
display: "flex",
|
|
justifyContent: "center",
|
|
alignItems: "center",
|
|
},
|
|
}))
|