First published 2025.02.03
Logging In With SolidID
- A Log In Button
<form
action="/auth?/login"
method="POST">
<button>log in</button>
</form>
- Server-side form actions
export const actions = {
login: async ({cookies, request}) => {
const session = new Session({ keepAlive: false })
cookies.set('session', session.info.sessionId, {path: '/'})
await session.login({
redirectUrl: host,
oidcIssuer: sss,
clientName: "Stucco Data Collective",
handleRedirect: redirectToSolidIdentityProvider,
})
}
}
- Hook Handler
import { getSessionFromStorage } from "@inrupt/solid-client-authn-node"
export async function handle({ event, resolve }) {
let sessionId = event.cookies.get('session')
if (!sessionId) {
event.locals.session = null
} else {
const session = await getSessionFromStorage(sessionId)
if (session) {
await session.handleIncomingRedirect(event.url.href)
event.locals.session = session.info
} else {
event.locals.session = null
}
}
const response = awai`t resolve(event)
return response
}
- Using from Locals!