@@ -8,7 +8,7 @@ export default function Login() {
88 const navigate = useNavigate ( )
99 const { code : urlInviteCode } = useParams ( )
1010 const [ searchParams ] = useSearchParams ( )
11- const { authEnabled, user, loading : authLoading , refresh } = useAuth ( )
11+ const { authEnabled, staticApiKeyRequired , user, loading : authLoading , refresh } = useAuth ( )
1212 const [ providers , setProviders ] = useState ( [ ] )
1313 const [ hasUsers , setHasUsers ] = useState ( true )
1414 const [ registrationMode , setRegistrationMode ] = useState ( 'open' )
@@ -66,7 +66,7 @@ export default function Login() {
6666
6767 // Redirect if auth is disabled or user is already logged in
6868 useEffect ( ( ) => {
69- if ( ! authLoading && ( ! authEnabled || user ) ) {
69+ if ( ! authLoading && ( ( ! authEnabled && ! staticApiKeyRequired ) || user ) ) {
7070 navigate ( '/app' , { replace : true } )
7171 }
7272 } , [ authLoading , authEnabled , user , navigate ] )
@@ -176,6 +176,40 @@ export default function Login() {
176176
177177 if ( authLoading || statusLoading ) return null
178178
179+ // Legacy API key-only mode: show a simplified login with just the token input
180+ if ( staticApiKeyRequired && ! authEnabled ) {
181+ return (
182+ < div className = "login-page" >
183+ < div className = "card login-card" >
184+ < div className = "login-header" >
185+ < img src = { apiUrl ( '/static/logo.png' ) } alt = "LocalAI" className = "login-logo" />
186+ < p className = "login-subtitle" > Enter your API key to continue</ p >
187+ </ div >
188+
189+ { error && (
190+ < div className = "login-alert login-alert-error" > { error } </ div >
191+ ) }
192+
193+ < form onSubmit = { handleTokenLogin } >
194+ < div className = "form-group" >
195+ < input
196+ className = "input"
197+ type = "password"
198+ value = { token }
199+ onChange = { ( e ) => { setToken ( e . target . value ) ; setError ( '' ) } }
200+ placeholder = "Enter API key..."
201+ autoFocus
202+ />
203+ </ div >
204+ < button type = "submit" className = "btn btn-primary login-btn-full" disabled = { submitting } >
205+ { submitting ? 'Signing in...' : 'Sign In' }
206+ </ button >
207+ </ form >
208+ </ div >
209+ </ div >
210+ )
211+ }
212+
179213 const hasGitHub = providers . includes ( 'github' )
180214 const hasOIDC = providers . includes ( 'oidc' )
181215 const hasLocal = providers . includes ( 'local' )
0 commit comments