user interface changes
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
import React, { useState, useEffect, createContext, ReactNode } from 'react';
|
||||
import { User, Token } from '../types';
|
||||
import { LoggedUser } from '../types';
|
||||
import { axiosInstance } from '../utils/axiosInstance';
|
||||
|
||||
export interface CASContext {
|
||||
user?: User;
|
||||
user: LoggedUser | undefined;
|
||||
logout: () => void;
|
||||
token?: string | null;
|
||||
token: string | undefined;
|
||||
}
|
||||
|
||||
export const CASContext = createContext<CASContext | undefined>(undefined);
|
||||
@ -15,8 +15,8 @@ export interface CASProviderProps {
|
||||
}
|
||||
|
||||
export const CASProvider = ({ children }: CASProviderProps) => {
|
||||
const [user, setUser] = useState<User | undefined>(undefined);
|
||||
const [token, setToken] = useState<string | null>(null);
|
||||
const [user, setUser] = useState<LoggedUser>();
|
||||
const [token, setToken] = useState<string | undefined>();
|
||||
useEffect(() => {
|
||||
const login = async () => {
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
@ -26,18 +26,15 @@ export const CASProvider = ({ children }: CASProviderProps) => {
|
||||
}
|
||||
try {
|
||||
if (!localStorage.getItem('userToken')) {
|
||||
const { data: token } = await axiosInstance.get(`${process.env.REACT_APP_API_URL}/token?ticket=${ticket}`);
|
||||
localStorage.setItem('userToken', token.token);
|
||||
localStorage.setItem('userPrivilige', token.authorityRole);
|
||||
const { data: user } = await axiosInstance.get<LoggedUser & { token: string }>(
|
||||
`${process.env.REACT_APP_API_URL}/token?ticket=${ticket}`,
|
||||
);
|
||||
setUser({ authorityRole: user.authorityRole, email: user.email, id: user.id });
|
||||
localStorage.setItem('userToken', user.token);
|
||||
localStorage.setItem('userPrivilige', user.authorityRole);
|
||||
}
|
||||
const tokenTMP: any = JSON.parse(localStorage.getItem('userToken') as string);
|
||||
const token: Token = {
|
||||
authorityRole: tokenTMP.authorityRole,
|
||||
email: tokenTMP.email,
|
||||
id: tokenTMP.id,
|
||||
token: tokenTMP.token,
|
||||
};
|
||||
setToken(token.token);
|
||||
const token = localStorage.getItem('userToken');
|
||||
token && setToken(token);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
@ -46,6 +43,7 @@ export const CASProvider = ({ children }: CASProviderProps) => {
|
||||
}, []);
|
||||
|
||||
function logout() {
|
||||
localStorage.removeItem('userToken');
|
||||
redirectToCASLogoutService();
|
||||
}
|
||||
|
||||
|
@ -169,7 +169,7 @@ export const CoursesProvider = ({ children }: CoursesProviderProps) => {
|
||||
|
||||
const getNewestTimetable = async () => {
|
||||
try {
|
||||
const { data } = await axiosInstance.get(`${process.env.REACT_APP_API_URL}/api/v1/assignments/user`);
|
||||
const { data } = await axiosInstance.get(`${process.env.REACT_APP_API_URL}/api/v1/commisions/user/schedule`);
|
||||
const basket = data === '' ? [] : data;
|
||||
setBasket(basket);
|
||||
} catch (e) {
|
||||
|
47
src/contexts/StudentsProvider.tsx
Normal file
47
src/contexts/StudentsProvider.tsx
Normal file
@ -0,0 +1,47 @@
|
||||
import React, { useState, createContext, useEffect, ReactNode, useRef } from 'react';
|
||||
import { Student } from '../types';
|
||||
import { axiosInstance } from '../utils/axiosInstance';
|
||||
|
||||
interface StudentContext {
|
||||
students: Array<Student>;
|
||||
}
|
||||
|
||||
export const studentsContext = createContext<StudentContext | undefined>(undefined);
|
||||
|
||||
interface StudentsProviderProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export const StudentsProvider = ({ children }: StudentsProviderProps) => {
|
||||
const [students, setStudents] = useState<Array<Student>>([]);
|
||||
|
||||
const userPrivilige = localStorage.getItem('userPrivilige');
|
||||
|
||||
const getStudents = async () => {
|
||||
try {
|
||||
const { data } = await axiosInstance.get<Array<Student>>(
|
||||
`${process.env.REACT_APP_API_URL}/api/v1/users/students`,
|
||||
);
|
||||
setStudents(data);
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setTimeout(() => {
|
||||
userPrivilige === 'DEANERY' && getStudents();
|
||||
}, 500);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<studentsContext.Provider
|
||||
value={{
|
||||
students,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</studentsContext.Provider>
|
||||
);
|
||||
};
|
@ -1,43 +0,0 @@
|
||||
import React, { useState, createContext, useEffect, ReactNode, useRef } from 'react';
|
||||
import { User } from '../types';
|
||||
import { axiosInstance } from '../utils/axiosInstance';
|
||||
|
||||
interface UserContext {
|
||||
users: Array<User>;
|
||||
}
|
||||
|
||||
export const usersContext = createContext<UserContext | undefined>(undefined);
|
||||
|
||||
interface UsersProviderProps {
|
||||
children: ReactNode;
|
||||
}
|
||||
|
||||
export const UsersProvider = ({ children }: UsersProviderProps) => {
|
||||
const [users, setUsers] = useState<Array<User>>([]);
|
||||
|
||||
const getUsers = async () => {
|
||||
try {
|
||||
const { data } = await axiosInstance.get<Array<User>>(`${process.env.REACT_APP_API_URL}/api/v1/users/students`);
|
||||
setUsers(data);
|
||||
console.log(data);
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
setTimeout(() => {
|
||||
getUsers();
|
||||
}, 500);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<usersContext.Provider
|
||||
value={{
|
||||
users,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</usersContext.Provider>
|
||||
);
|
||||
};
|
Reference in New Issue
Block a user