This commit is contained in:
2025-10-18 18:30:02 -03:00
parent 865cb12fbc
commit d45aa1d70e
4 changed files with 18 additions and 16 deletions

View File

@@ -2,7 +2,7 @@ import { LockIcon } from 'lucide-react'
import type { Route } from './+types'
export function meta({}: Route.MetaArgs) {
return [{ title: 'Acesso negado' }]
return [{ title: 'Acesso negado · EDUSEG®' }]
}
export default function Deny({}: Route.ComponentProps) {

View File

@@ -21,13 +21,14 @@ import { z } from 'zod'
const schema = z.object({
username: z
.string()
.trim()
.nonempty('Digite seu Email ou CPF')
.refine((val) => {
const onlyDigits = val.replace(/\D/g, '')
return onlyDigits.length === 11
? isValidCPF(val)
: z.string().email().safeParse(val).success
: z.email().safeParse(val).success
}, 'Deve ser um Email ou CPF válido')
})

View File

@@ -13,7 +13,7 @@ import { zodResolver } from '@hookform/resolvers/zod'
import { Loader2Icon } from 'lucide-react'
import { useEffect, useState } from 'react'
import { useForm } from 'react-hook-form'
import { Link, redirect, useFetcher } from 'react-router'
import { Link, useFetcher } from 'react-router'
import { z } from 'zod'
import logo from '@/components/logo.svg'
@@ -26,15 +26,19 @@ import * as httpStatus from '@/lib/http-status'
const schema = z.object({
username: z
.string()
.trim()
.nonempty('Digite seu Email ou CPF')
.refine((val) => {
const onlyDigits = val.replace(/\D/g, '')
return onlyDigits.length === 11
? isValidCPF(val)
: z.string().email().safeParse(val).success
: z.email().safeParse(val).success
}, 'Deve ser um Email ou CPF válido'),
password: z.string().nonempty('Digite sua senha')
password: z
.string()
.nonempty('Digite sua senha')
.min(6, 'Deve ter no mínimo 6 caracteres')
})
type Schema = z.infer<typeof schema>
@@ -43,13 +47,6 @@ export function meta({}: Route.MetaArgs) {
return [{ title: 'EDUSEG®' }]
}
export async function loader({ request }: Route.ActionArgs) {
const url = new URL(request.url)
if (!url.searchParams.has('client_id')) {
return redirect('//scorm.eduseg.workers.dev/')
}
}
export async function action({ request, context }: Route.ActionArgs) {
const issuerUrl = new URL('/session', context.cloudflare.env.ISSUER_URL)
const formData = Object.fromEntries(await request.formData())
@@ -105,12 +102,13 @@ export default function Index({}: Route.ComponentProps) {
switch (message) {
case 'User not found':
return setError('username', {
message: 'Usuário não encontrado',
message:
'Conta não encontrada. Certifique-se de que está usando o Email ou CPF correto.',
type: 'manual'
})
case 'Invalid credentials':
return setError('password', {
message: 'A senha está incorreta',
message: 'A senha está incorreta.',
type: 'manual'
})
}

View File

@@ -22,9 +22,12 @@ import { useForm } from 'react-hook-form'
import { z } from 'zod'
const schema = z.object({
name: z.string().nonempty('Digite seu nome'),
name: z.string().trim().nonempty('Digite seu nome'),
email: z.email('Digite seu email'),
password: z.string().nonempty('Digite sua senha'),
password: z
.string()
.nonempty('Digite sua senha')
.min(6, 'Deve ter no mínimo 6 caracteres'),
cpf: z
.string()
.nonempty('Digite seu CPF')