Skip to content
Snippets Groups Projects
Commit f0cec1c3 authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

backend python missmatch

parent ddc2a922
No related branches found
No related tags found
No related merge requests found
Pipeline #38669 passed
......@@ -24,9 +24,29 @@ export default function LoginForm({
const handleOpenModalPasswd = () => setOpenModalPasswd(true);
const handleCloseModalPasswd = () => setOpenModalPasswd(false);
const handleGovBr = () => {
const handleGovBr = async () => {
const state = window.crypto.randomUUID();
localStorage.setItem("govbr_state", state);
async function generateCodeVerifier() {
var code_verifier = new Uint8Array(32);
window.crypto.getRandomValues(code_verifier);
return code_verifier;
}
function generateCodeChallenge(code_verifier) {
return base64URL(window.crypto.subtle.digest("SHA-256", code_verifier));
}
async function base64URL(buffer) {
// use a FileReader to generate a base64 data URI:
const base64url = await new Promise(r => {
const reader = new FileReader()
reader.onload = () => r(reader.result)
reader.readAsDataURL(new Blob([buffer]))
});
// remove the `data:...;base64,` part from the start
return base64url.slice(base64url.indexOf(',') + 1);
}
const codeVerifier = await generateCodeVerifier();
localStorage.setItem("govbr_code_verifier", await base64URL(codeVerifier));
const params = {
response_type: "code",
client_id: "mecredhomologa.c3sl.ufpr.br",
......@@ -34,7 +54,7 @@ export default function LoginForm({
redirect_uri: "https://mecredhomologa.c3sl.ufpr.br/govbr",
nonce: "1121",
state,
code_challenge: "Ra1GhTAFgJYB8p_uS8XfPnhBMcU1FDyZuIZ4akw5IAM",
code_challenge: await generateCodeChallenge(codeVerifier),
code_challenge_method: "S256",
};
......
"use client"
import mecredApi from "@/axiosConfig";
import axios from "axios";
import { useSearchParams } from "next/navigation";
import { useEffect } from "react";
......@@ -7,9 +8,23 @@ export default function Govbr() {
const searchParams = useSearchParams();
const validate = async () => {
const getToken = async (code) => {
try {
const res = await mecredApi.post("/govbr");
if (!localStorage.getItem("govbr_code_verifier")) {
console.error("local storage não possui code verifier.");
return
}
const verifier = localStorage.getItem("govbr_code_verifier");
const res = await axios.post("http://127.0.0.1:3335/govbr",
{
code,
verifier
}
);
console.log("foi")
} catch(error) {
console.error(error);
}
......@@ -18,12 +33,11 @@ export default function Govbr() {
useEffect(() => {
let code;
const validateState = () => {
if (!searchParams.get("govbr_code")) {
if (!searchParams.get("code")) {
console.error("local storage não possui code.")
return
}
code = searchParams.getItem("govbr_code");
code = searchParams.get("code");
console.log(code)
if (!localStorage.getItem("govbr_state")) {
......@@ -51,6 +65,6 @@ export default function Govbr() {
console.log("State validado com sucesso!")
}
validateState()
getToken(code)
}, [searchParams]);
};
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment