Merge branch 'feature/keycloak' into 'dev'

keycloak signin

See merge request spatial/postamates_frontend!65
dev
Anton Vlasov 2 years ago
commit 61a3f65752

@ -6,14 +6,13 @@ import { useQuery } from "@tanstack/react-query";
import { Title } from "./components/Title"; import { Title } from "./components/Title";
export function SignOut() { export function SignOut() {
const logOut = async () => { const logOut = () => {
await api.post("accounts/logout/"); localStorage.removeItem('access_token');
setAuth(false); setAuth(false);
}; };
const { data } = useQuery(["profile"], async () => { const { data } = useQuery(["profile"], async () => {
const { data } = await api.get("/accounts/profile/"); const { data } = await api.get("/api/me/");
return data; return data;
}); });
@ -22,7 +21,7 @@ export function SignOut() {
<Popover <Popover
content={ content={
<> <>
<Title text={data?.email} classNameText={"lowercase"} /> <Title text={data?.username} classNameText={"lowercase"} />
<Button type="primary" block onClick={logOut}> <Button type="primary" block onClick={logOut}>
<span className="mr-1">Выйти</span> <span className="mr-1">Выйти</span>
<ArrowRightOutlined /> <ArrowRightOutlined />

@ -15,9 +15,15 @@ export const api = axios.create({
import.meta.env.MODE === "development" import.meta.env.MODE === "development"
? "http://localhost:5173/" ? "http://localhost:5173/"
: BASE_URL, : BASE_URL,
withCredentials: true, });
xsrfHeaderName: "X-CSRFToken",
xsrfCookieName: "csrftoken", api.interceptors.request.use(function (config) {
const token = localStorage.getItem("access_token");
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
}); });
export const useDbTableName = () => { export const useDbTableName = () => {
@ -215,7 +221,7 @@ export const useGetPermissions = () => {
return useQuery(["permissions"], async () => { return useQuery(["permissions"], async () => {
const { data } = await api.get("/api/me/"); const { data } = await api.get("/api/me/");
if (data?.groups?.includes("Редактор")) { if (data?.groups?.includes("postnet_editor")) {
return "editor"; return "editor";
} }

@ -10,8 +10,9 @@ function LoginForm() {
const signinError = useStore(signinError$); const signinError = useStore(signinError$);
const signinLoading = useStore(signinLoading$); const signinLoading = useStore(signinLoading$);
const onFinish = (values) => { const onFinish = async (values) => {
signin(values); const data = await signin(values);
localStorage.setItem("access_token", data.access_token);
}; };
return ( return (

@ -11,7 +11,7 @@ export const setAuth = action(isAuthorized$, "setAuth", (store, newValue) => {
async function checkAuth() { async function checkAuth() {
try { try {
await api.get("/accounts/profile/"); await api.get("/api/me/");
setAuth(true); setAuth(true);
} catch (e) { } catch (e) {

@ -32,7 +32,20 @@ export async function signin(values) {
signinError$.set(""); signinError$.set("");
try { try {
const { data } = await api.post("accounts/login/", values); const { data } = await api.request({
url: "/realms/SST/protocol/openid-connect/token",
method: "POST",
data: {
"grant_type": "password",
client_id: "postnet",
client_secret: "K2yHweEUispkVeWn03VMk843sW2Moic5",
username: values.login,
password: values.password,
},
headers: {
'Content-type': 'application/x-www-form-urlencoded',
},
});
setAuth(true); setAuth(true);
return data; return data;

@ -11,8 +11,8 @@ export default defineConfig(({ mode }) => {
plugins: [svgr(), react()], plugins: [svgr(), react()],
server: { server: {
proxy: { proxy: {
"/account": env.VITE_API_URL,
"/api": env.VITE_API_URL, "/api": env.VITE_API_URL,
"/realms": "https://kk.dev.selftech.ru/",
}, },
}, },
css: { css: {

Loading…
Cancel
Save