update login

This commit is contained in:
2025-12-19 09:02:49 -03:00
parent 3d8961f1f5
commit 3be296f1ac
6 changed files with 13 additions and 12 deletions

View File

@@ -17,9 +17,9 @@ import {
AlertTriangleIcon, AlertTriangleIcon,
UserIcon UserIcon
} from 'lucide-react' } from 'lucide-react'
import { Link, useParams, useFetcher } from 'react-router' import { redirect, Link, useParams, useFetcher } from 'react-router'
import { Controller, useFieldArray, useForm } from 'react-hook-form' import { Controller, useFieldArray, useForm } from 'react-hook-form'
import { Fragment, use, useEffect, useMemo, useRef, useState } from 'react' import { Fragment, use, useMemo, useState } from 'react'
import { format } from 'date-fns' import { format } from 'date-fns'
import { ptBR } from 'react-day-picker/locale' import { ptBR } from 'react-day-picker/locale'
import { zodResolver } from '@hookform/resolvers/zod' import { zodResolver } from '@hookform/resolvers/zod'
@@ -75,7 +75,6 @@ import { cloudflareContext } from '@repo/auth/context'
import { SearchFilter } from '@repo/ui/components/search-filter' import { SearchFilter } from '@repo/ui/components/search-filter'
import { formSchema, type Schema, MAX_ITEMS } from './data' import { formSchema, type Schema, MAX_ITEMS } from './data'
import { redirect } from 'react-router'
export function meta({}: Route.MetaArgs) { export function meta({}: Route.MetaArgs) {
return [{ title: 'Adicionar matrícula' }] return [{ title: 'Adicionar matrícula' }]
@@ -284,6 +283,7 @@ export default function Route({
<InputGroupInput <InputGroupInput
readOnly readOnly
value={value?.name || ''} value={value?.name || ''}
autoFocus={true}
placeholder="Colaborador" placeholder="Colaborador"
className="cursor-pointer" className="cursor-pointer"
autoComplete="off" autoComplete="off"
@@ -320,7 +320,6 @@ export default function Route({
</InputGroup> </InputGroup>
)} )}
</SearchFilter> </SearchFilter>
<ErrorMessage <ErrorMessage
errors={formState.errors} errors={formState.errors}
name={name} name={name}
@@ -455,7 +454,6 @@ function FacetedFilter({
const [open, { set }] = useToggle() const [open, { set }] = useToggle()
const [sort, { toggle }] = useToggle('a-z', 'z-a') const [sort, { toggle }] = useToggle('a-z', 'z-a')
const { hits } = use(options) const { hits } = use(options)
const listRef = useRef<HTMLDivElement | null>(null)
const fuse = useMemo(() => { const fuse = useMemo(() => {
return new Fuse(hits, { return new Fuse(hits, {
keys: ['name'], keys: ['name'],
@@ -506,6 +504,7 @@ function FacetedFilter({
<Button <Button
variant="link" variant="link"
size="icon-sm" size="icon-sm"
tabIndex={-1}
className="cursor-pointer text-muted-foreground" className="cursor-pointer text-muted-foreground"
onClick={toggle} onClick={toggle}
> >
@@ -571,7 +570,7 @@ function ScheduledForInput({ value, onChange }: ScheduledForInputProps) {
tomorrow.setDate(today.getDate() + 1) tomorrow.setDate(today.getDate() + 1)
const [open, { set }] = useToggle() const [open, { set }] = useToggle()
const [selected, setDate] = useState<Date | undefined>(value) const [selected, setDate] = useState<Date | undefined>(value)
const displayValue = selected ? format(selected, 'dd/MM/yyyy') : '' const display = selected ? format(selected, 'dd/MM/yyyy') : ''
return ( return (
<Popover open={open} onOpenChange={set}> <Popover open={open} onOpenChange={set}>
@@ -580,7 +579,7 @@ function ScheduledForInput({ value, onChange }: ScheduledForInputProps) {
<InputGroupInput <InputGroupInput
readOnly readOnly
placeholder="Imediatamente" placeholder="Imediatamente"
value={displayValue} value={display}
/> />
<InputGroupAddon> <InputGroupAddon>

View File

@@ -9,9 +9,9 @@ import { createSessionStorage } from '@repo/auth/session'
export async function loader({ request, context }: Route.LoaderArgs) { export async function loader({ request, context }: Route.LoaderArgs) {
const url = new URL(request.url) const url = new URL(request.url)
const cloudflare = context.get(cloudflareContext) const cloudflare = context.get(cloudflareContext)
const requestId = context.get(requestIdContext)
const sessionStorage = createSessionStorage(cloudflare.env) const sessionStorage = createSessionStorage(cloudflare.env)
const session = await sessionStorage.getSession(request.headers.get('cookie')) const session = await sessionStorage.getSession(request.headers.get('cookie'))
const requestId = context.get(requestIdContext)
const user = session.get('user') const user = session.get('user')
const returnTo = (session.get('returnTo') as string | undefined) ?? '/' const returnTo = (session.get('returnTo') as string | undefined) ?? '/'
@@ -26,6 +26,7 @@ export async function loader({ request, context }: Route.LoaderArgs) {
request request
)) as User )) as User
session.set('user', authenticatedUser) session.set('user', authenticatedUser)
session.unset('returnTo')
console.log(`[${requestId}] Redirecting the user to ${returnTo}`) console.log(`[${requestId}] Redirecting the user to ${returnTo}`)

View File

@@ -9,9 +9,9 @@ import { createSessionStorage } from '@repo/auth/session'
export async function loader({ request, context }: Route.LoaderArgs) { export async function loader({ request, context }: Route.LoaderArgs) {
const url = new URL(request.url) const url = new URL(request.url)
const cloudflare = context.get(cloudflareContext) const cloudflare = context.get(cloudflareContext)
const requestId = context.get(requestIdContext)
const sessionStorage = createSessionStorage(cloudflare.env) const sessionStorage = createSessionStorage(cloudflare.env)
const session = await sessionStorage.getSession(request.headers.get('cookie')) const session = await sessionStorage.getSession(request.headers.get('cookie'))
const requestId = context.get(requestIdContext)
const user = session.get('user') const user = session.get('user')
const returnTo = (session.get('returnTo') as string | undefined) ?? '/' const returnTo = (session.get('returnTo') as string | undefined) ?? '/'
@@ -26,6 +26,7 @@ export async function loader({ request, context }: Route.LoaderArgs) {
request request
)) as User )) as User
session.set('user', authenticatedUser) session.set('user', authenticatedUser)
session.unset('returnTo')
console.log(`[${requestId}] Redirecting the user to ${returnTo}`) console.log(`[${requestId}] Redirecting the user to ${returnTo}`)

View File

@@ -1,6 +1,5 @@
import type { Route } from './+types/route' import type { Route } from './+types/route'
import type { User } from '@repo/auth/auth'
import { userContext, cloudflareContext } from '@repo/auth/context' import { userContext, cloudflareContext } from '@repo/auth/context'
import { authMiddleware } from '@repo/auth/middleware/auth' import { authMiddleware } from '@repo/auth/middleware/auth'

View File

@@ -19,7 +19,7 @@ export const authMiddleware = async (
let user = session.get('user') let user = session.get('user')
if (!user) { if (!user) {
console.log('There is no user logged in') console.log(`[${requestId}] There is no user logged in`)
session.set('returnTo', new URL(request.url).toString()) session.set('returnTo', new URL(request.url).toString())

View File

@@ -73,7 +73,8 @@ export function SearchFilter<T>({
<Command <Command
shouldFilter={false} shouldFilter={false}
className={cn( className={cn(
!searched && '**:data-[slot=command-input-wrapper]:border-b-0' !searched && '**:data-[slot=command-input-wrapper]:border-b-0',
data.length > 0 && 'rounded-b-none'
)} )}
> >
<CommandInput <CommandInput