feat(node-player): remove run-without-auth option from login page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -100,24 +100,3 @@
|
|||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.auth-card .settings {
|
|
||||||
margin-top: 1.5rem;
|
|
||||||
padding-top: 1rem;
|
|
||||||
border-top: 1px solid #1f2c45;
|
|
||||||
}
|
|
||||||
|
|
||||||
.auth-card .toggle {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 8px;
|
|
||||||
color: #64748b;
|
|
||||||
font-size: 0.8rem;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.auth-card .toggle input {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
accent-color: #7c6af7;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,28 +9,12 @@ type UserProfile = {
|
|||||||
email?: string
|
email?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
const NO_AUTH_STORAGE_KEY = 'furumiNodePlayer.runWithoutAuth'
|
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [loading, setLoading] = useState(true)
|
const [loading, setLoading] = useState(true)
|
||||||
const [user, setUser] = useState<UserProfile | null>(null)
|
const [user, setUser] = useState<UserProfile | null>(null)
|
||||||
const [error, setError] = useState<string | null>(null)
|
const [error, setError] = useState<string | null>(null)
|
||||||
const [runWithoutAuth, setRunWithoutAuth] = useState(() => {
|
|
||||||
try {
|
|
||||||
return window.localStorage.getItem(NO_AUTH_STORAGE_KEY) === '1'
|
|
||||||
} catch {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (runWithoutAuth) {
|
|
||||||
setError(null)
|
|
||||||
setUser({ sub: 'noauth', name: 'No Auth' })
|
|
||||||
setLoading(false)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const loadMe = async () => {
|
const loadMe = async () => {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/auth/me', { credentials: 'include' })
|
const response = await fetch('/auth/me', { credentials: 'include' })
|
||||||
@@ -69,10 +53,10 @@ function App() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void loadMe()
|
void loadMe()
|
||||||
}, [runWithoutAuth])
|
}, [])
|
||||||
|
|
||||||
// Authenticated — render player immediately
|
// Authenticated — render player immediately
|
||||||
if (!loading && (user || runWithoutAuth)) {
|
if (!loading && user) {
|
||||||
return <FurumiPlayer />
|
return <FurumiPlayer />
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,28 +85,6 @@ function App() {
|
|||||||
<a className="btn-login" href="/auth/login">
|
<a className="btn-login" href="/auth/login">
|
||||||
Sign in with SSO
|
Sign in with SSO
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div className="settings">
|
|
||||||
<label className="toggle">
|
|
||||||
<input
|
|
||||||
type="checkbox"
|
|
||||||
checked={runWithoutAuth}
|
|
||||||
onChange={(e) => {
|
|
||||||
const next = e.target.checked
|
|
||||||
setRunWithoutAuth(next)
|
|
||||||
try {
|
|
||||||
if (next) window.localStorage.setItem(NO_AUTH_STORAGE_KEY, '1')
|
|
||||||
else window.localStorage.removeItem(NO_AUTH_STORAGE_KEY)
|
|
||||||
} catch {
|
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
setLoading(true)
|
|
||||||
setUser(null)
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<span>Run without authentication</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user