update rediexct
This commit is contained in:
@@ -7,18 +7,21 @@ import { requestIdContext } from '@repo/auth/context'
|
|||||||
import { createSessionStorage } from '@repo/auth/session'
|
import { createSessionStorage } from '@repo/auth/session'
|
||||||
|
|
||||||
export async function loader({ request, context }: Route.ActionArgs) {
|
export async function loader({ request, context }: Route.ActionArgs) {
|
||||||
|
const url = new URL(request.url)
|
||||||
const sessionStorage = createSessionStorage(context.cloudflare.env)
|
const sessionStorage = createSessionStorage(context.cloudflare.env)
|
||||||
const session = await sessionStorage.getSession(request.headers.get('cookie'))
|
const session = await sessionStorage.getSession(request.headers.get('cookie'))
|
||||||
const returnTo = session.has('returnTo') ? session.get('returnTo') : '/'
|
|
||||||
const requestId = context.get(requestIdContext)
|
const requestId = context.get(requestIdContext)
|
||||||
const user = session.get('user') as User | null
|
const user = session.get('user') as User | null
|
||||||
|
const returnTo = (
|
||||||
|
session.has('returnTo') ? session.get('returnTo') : '/'
|
||||||
|
) as string
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
return redirect(returnTo)
|
return redirect(returnTo)
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const authenticator = createAuth(context.cloudflare.env)
|
const authenticator = createAuth(context.cloudflare.env, url?.origin)
|
||||||
const user = await authenticator.authenticate('oidc', request)
|
const user = await authenticator.authenticate('oidc', request)
|
||||||
session.set('user', user)
|
session.set('user', user)
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export type User = {
|
|||||||
refreshToken: string
|
refreshToken: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export function createAuth(env) {
|
export function createAuth(env, redirectURI = null) {
|
||||||
const authenticator = new Authenticator()
|
const authenticator = new Authenticator()
|
||||||
const strategy = new OAuth2Strategy(
|
const strategy = new OAuth2Strategy(
|
||||||
{
|
{
|
||||||
clientId: env.CLIENT_ID,
|
clientId: env.CLIENT_ID,
|
||||||
clientSecret: env.CLIENT_SECRET,
|
clientSecret: env.CLIENT_SECRET,
|
||||||
redirectURI: env.REDIRECT_URI,
|
redirectURI: redirectURI ?? env.REDIRECT_URI,
|
||||||
authorizationEndpoint: `${env.ISSUER_URL}/authorize`,
|
authorizationEndpoint: `${env.ISSUER_URL}/authorize`,
|
||||||
tokenEndpoint: `${env.ISSUER_URL}/token`,
|
tokenEndpoint: `${env.ISSUER_URL}/token`,
|
||||||
tokenRevocationEndpoint: `${env.ISSUER_URL}/revoke`,
|
tokenRevocationEndpoint: `${env.ISSUER_URL}/revoke`,
|
||||||
|
|||||||
Reference in New Issue
Block a user