yazid138 3 years ago
parent
commit
a10e9f4c7a

+ 11 - 26
actions/PT.js

@@ -1,33 +1,18 @@
-import https from "https";
+import { get } from "@/config/request";
 
 export const getPT = async (params) => {
 	try {
-		const httpsAgent = new https.Agent({
-			rejectUnauthorized: false,
-		});
-		let url = "https://api.kemdikbud.go.id:8243/pddikti/1.2/pt";
-		if (params.id) {
-			url += `/${params.id}`;
-		} else if (params.search) {
-			url += `?q=${params.search}`;
+		let url = "/perguruan-tinggi";
+		if (params) {
+			url += "?";
+			if (params.id) {
+				url += `id=${params.id}`;
+			} else if (params.search) {
+				url += `search=${params.search}`;
+			}
 		}
-
-		const controller = new AbortController();
-		const timeoutId = setTimeout(() => controller.abort(), 10000);
-		const res = await fetch(url, {
-			method: "GET",
-			headers: new Headers({
-				Authorization: "Bearer 5b62f743-eef2-3370-8c66-6951b2e9c2c5",
-				Accept: "application/json",
-				"Access-Control-Allow-Origin": "*",
-			}),
-			agent: httpsAgent,
-			signal: controller.signal,
-		});
-
-		clearTimeout(timeoutId);
-		const result = await res.json();
-		return result;
+		const response = await get(url);
+		return response.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 6 - 9
actions/auth.js

@@ -1,5 +1,5 @@
-import axios from "axios";
-import axiosJWT from "../config/axios";
+import { get } from "../config/request";
+import axiosAPI from "../config/axios";
 
 export const login = async (username, password) => {
 	try {
@@ -8,11 +8,10 @@ export const login = async (username, password) => {
 			password,
 		};
 
-		const response = await axios.post("http://localhost:5000/login", data, {
+		const response = await axiosAPI.post("/login", data, {
 			headers: {
 				"Content-Type": "application/json",
 			},
-			withCredentials: true,
 		});
 
 		return response.data;
@@ -23,7 +22,7 @@ export const login = async (username, password) => {
 
 export const refreshToken = async () => {
 	try {
-		const response = await axios.get("http://localhost:5000/token", { withCredentials: true });
+		const response = await axiosAPI.get("/token");
 		return response.data;
 	} catch (error) {
 		if (error.response) return error.response.data;
@@ -32,7 +31,7 @@ export const refreshToken = async () => {
 
 export const getUser = async () => {
 	try {
-		const response = await axiosJWT.get("/user");
+		const response = await get("/user");
 		return response.data;
 	} catch (error) {
 		if (error.response) return error.response.data;
@@ -41,9 +40,7 @@ export const getUser = async () => {
 
 export const logout = async () => {
 	try {
-		const response = await axios.delete("http://localhost:5000/logout", {
-			withCredentials: true,
-		});
+		const response = await axiosAPI.delete("/logout");
 		return response.data;
 	} catch (error) {
 		if (error.response) return error.response.data;

+ 9 - 17
actions/banding.js

@@ -1,35 +1,27 @@
-import { addLog } from "./log";
+import { post } from "../config/request";
 
 export const addBanding = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/banding/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
+		const res = await post(`/banding/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
 		// addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.added._id, data: "banding" }, description: "membuat permohonan banding" });
-		return result;
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "ADD", from: { data: "banding" }, description: error.message || "membuat permohonan banding" });
+		// addLog({ status: "FAIL", action: "ADD", from: { data: "banding" }, description: error.message || "membuat permohonan banding" });
 		return false;
 	}
 };
 
 export const addJawabanBanding = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/banding/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
+		const res = await post(`/banding/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
 		// addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.added._id, data: "banding" }, description: "membuat permohonan banding" });
-		return result;
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "ADD", from: { data: "banding" }, description: error.message || "membuat permohonan banding" });
+		// addLog({ status: "FAIL", action: "ADD", from: { data: "banding" }, description: error.message || "membuat permohonan banding" });
 		return false;
 	}
 };

+ 7 - 15
actions/cabutSanksi.js

@@ -1,14 +1,10 @@
-import { addLog } from "./log";
+import { post } from "../config/request";
 
 export const addCabutSanksi = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/cabut-sanksi/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		return result;
+		const res = await post(`http://localhost:5000/cabut-sanksi/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;
@@ -17,13 +13,9 @@ export const addCabutSanksi = async ({ noSanksi, ptId }, data) => {
 
 export const addJawabanCabutSanksi = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/cabut-sanksi/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		return result;
+		const res = await fetch(`/cabut-sanksi/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 5 - 7
actions/docPerbaikan.js

@@ -1,12 +1,10 @@
+import { post } from "../config/request";
+
 export const addDocPerbaikan = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/doc-perbaikan/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		return result;
+		const res = await post(`/doc-perbaikan/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 7 - 19
actions/keberatan.js

@@ -1,35 +1,23 @@
-import { addLog } from "./log";
+import { post } from "../config/request";
 
 export const addKeberatan = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/keberatan/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		// addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.added._id, data: "keberatan" }, description: "membuat permohonan keberatan" });
-		return result;
+		const res = await post(`/keberatan/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "ADD", from: { data: "keberatan" }, description: error.message || "membuat permohonan keberatan" });
 		return false;
 	}
 };
 
 export const addJawabanKeberatan = async ({ noSanksi, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/keberatan/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		// addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.added._id, data: "keberatan" }, description: "membuat permohonan keberatan" });
-		return result;
+		const res = await post(`/keberatan/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "ADD", from: { data: "keberatan" }, description: error.message || "membuat permohonan keberatan" });
 		return false;
 	}
 };

+ 4 - 23
actions/log.js

@@ -1,28 +1,9 @@
-export const getLog = async ({ ptId }) => {
-	try {
-		const res = await fetch(`http://localhost:5000/log?ptId=${ptId}`);
-		return await res.json();
-	} catch (error) {
-		console.log("error", error);
-		return false;
-	}
-};
+import { get } from "../config/request";
 
-export const addLog = async (data) => {
+export const getLog = async ({ ptId }) => {
 	try {
-		const myHeaders = new Headers();
-		myHeaders.append("Content-Type", "application/json");
-
-		const raw = JSON.stringify(data);
-
-		const requestOptions = {
-			method: "POST",
-			body: raw,
-			headers: myHeaders,
-		};
-
-		const updated = await fetch(`http://localhost:5000/log/add`, requestOptions);
-		return await updated.json();
+		const res = await get(`/log?ptId=${ptId}`);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 11 - 21
actions/pelaporan.js

@@ -1,8 +1,8 @@
-import { addLog } from "./log";
+import { get, post } from "../config/request";
 
 export const getPelaporan = async (query = {}) => {
 	try {
-		let url = "http://localhost:5000/pelaporan";
+		let url = "/pelaporan";
 		if (query.ptId && query.number) {
 			url += `?number=${query.number}&ptId=${query.ptId}`;
 		} else if (query.penjadwalan) {
@@ -10,8 +10,8 @@ export const getPelaporan = async (query = {}) => {
 		} else if (query.pemeriksaan) {
 			url += "?pemeriksaan=true";
 		}
-		const res = await fetch(url);
-		return await res.json();
+		const res = await get(url);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;
@@ -20,31 +20,21 @@ export const getPelaporan = async (query = {}) => {
 
 export const createPelaporan = async (data) => {
 	try {
-		const res = await fetch("http://localhost:5000/pelaporan/create", {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.created._id, data: "pelaporan" }, description: "membuat laporan" });
-		return result;
+		const res = await post("/pelaporan/create", data);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "CREATE", from: { data: "pelaporan" }, description: error.message || "membuat laporan" });
 		return false;
 	}
 };
 
 export const addStatus = async ({ number, ptId }, data) => {
 	try {
-		const myHeaders = new Headers();
-		myHeaders.append("Content-Type", "application/json");
-		const raw = JSON.stringify(data);
-		const res = await fetch(`http://localhost:5000/pelaporan/status/add?number=${number}&ptId=${ptId}`, {
-			method: "POST",
-			body: raw,
-			headers: myHeaders,
-		});
-		return await res.json();
+		// const myHeaders = new Headers();
+		// myHeaders.append("Content-Type", "application/json");
+		// const raw = JSON.stringify(data);
+		const res = await post(`/pelaporan/status/add?number=${number}&ptId=${ptId}`, data);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 3 - 11
actions/pemeriksaan.js

@@ -1,19 +1,11 @@
-import { addLog } from "./log";
+import { post } from "../config/request";
 
 export const insertPemeriksaan = async ({ number, ptId }, data) => {
 	try {
-		const requestOptions = {
-			method: "POST",
-			body: data,
-		};
-
-		const res = await fetch(`http://localhost:5000/pelaporan/pemeriksaan/create?number=${number}&ptId=${ptId}`, requestOptions);
-		const result = await res.json();
-		addLog({ status: "SUCCESS", action: "ADD", from: { id: result.added._id, data: "pemeriksaan" }, description: "menambah evaluasi" });
-		return result;
+		const res = await post(`/pelaporan/pemeriksaan/create?number=${number}&ptId=${ptId}`, data);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "ADD", from: { data: "pemeriksaan" }, description: error.message || "menambah evaluasi" });
 		return false;
 	}
 };

+ 11 - 14
actions/penjadwalan.js

@@ -1,25 +1,22 @@
-import { addLog } from "./log";
+import { post } from "../config/request";
 
 export const updateJadwal = async ({ number, ptId }, data) => {
 	try {
-		const myHeaders = new Headers();
-		myHeaders.append("Content-Type", "application/json");
+		// const myHeaders = new Headers();
+		// myHeaders.append("Content-Type", "application/json");
 
-		const raw = JSON.stringify(data);
+		// const raw = JSON.stringify(data);
 
-		const requestOptions = {
-			method: "POST",
-			body: raw,
-			headers: myHeaders,
-		};
+		// const requestOptions = {
+		// 	method: "POST",
+		// 	body: raw,
+		// 	headers: myHeaders,
+		// };
 
-		const updated = await fetch(`http://localhost:5000/pelaporan/jadwal/add?number=${number}&ptId=${ptId}`, requestOptions);
-		const result = await updated.json();
-		addLog({ status: "SUCCESS", action: "UPDATE", from: { id: result.added._id, data: "penjadwalan" }, description: "mengubah jadwal pemeriksaan" });
-		return result;
+		const res = await post(`/pelaporan/jadwal/add?number=${number}&ptId=${ptId}`, data);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "UPDATE", from: { data: "penjadwalan" }, description: error.message || "mengubah jadwal pemeriksaan" });
 		return false;
 	}
 };

+ 6 - 12
actions/sanksi.js

@@ -1,18 +1,12 @@
-import { addLog } from "./log";
+import { post, get } from "../config/request";
 
 export const createSanksi = async ({ number, ptId }, data) => {
 	try {
-		const res = await fetch(`http://localhost:5000/sanksi/create?number=${number}&ptId=${ptId}`, {
-			method: "POST",
-			body: data,
-		});
-		const result = await res.json();
-		console.log(result);
-		// addLog({ status: "SUCCESS", action: "CREATE", from: { id: result.added._id, data: "sanksi" }, description: "membuat sanksi" });
-		return result;
+		const res = await post(`/sanksi/create?number=${number}&ptId=${ptId}`, data);
+		console.log(res);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
-		addLog({ status: "FAIL", action: "CREATE", from: { data: "sanksi" }, description: error.message || "membuat sanksi" });
 		return false;
 	}
 };
@@ -35,8 +29,8 @@ export const getSanksi = async (query = {}) => {
 			url += "&active=true";
 		}
 
-		const res = await fetch(url);
-		return await res.json();
+		const res = await get(url);
+		return res.data;
 	} catch (error) {
 		console.log("error", error);
 		return false;

+ 1 - 1
components/Layout/Sidebar.js

@@ -147,7 +147,7 @@ class Sidebar extends Component {
 	async componentDidMount() {
 		// const user = await getUser();
 		const user = this.props.user;
-		this.menu = user.data.peran[0].peran.id === 2022 ? MenuPT : Menu;
+		this.menu = user.peran[0].peran.id === 2022 ? MenuPT : Menu;
 		// prepare the flags to handle menu collapsed states
 		this.buildCollapseList();
 

+ 1 - 1
components/Layout/SidebarUserBlock.js

@@ -14,7 +14,7 @@ class SidebarUserBlock extends Component {
 	async componentDidMount() {
 		// const user = await getUser();
 		const user = this.props.user;
-		this.setState({ user: user.data, role: user.data.peran[0].peran.nama });
+		this.setState({ user: user, role: user.peran[0].peran.nama });
 	}
 
 	componentDidUpdate(oldProps) {

+ 33 - 34
config/axios.js

@@ -1,42 +1,41 @@
 import axios from "axios";
-import { refreshToken } from "@/actions/auth";
 // import jwt_decode from "jwt-decode";
 
-const axiosJWT = axios.create({
+const axiosAPI = axios.create({
 	baseURL: "http://localhost:5000",
 	withCredentials: true,
 });
 
-axiosJWT.interceptors.request.use(
-	async (config) => {
-		// const response = await refreshToken();
-		// const decoded = jwt_decode(response.access_token);
-		// const expire = decoded.exp;
-		// const currentDate = Date.now();
-		// if (expire * 1000 < currentDate) {
-		const response = await refreshToken();
-		// console.log(response);
-		if (response.success) config.headers.Authorization = `Bearer ${response.access_token}`;
-		// config.withCredentials = true;
-		return config;
-		// }
-	},
-	async (error) => {
-		const originalConfig = err.config;
-		// if (error.response.status === 403 || error.response.status === 401) {
-		try {
-			const response = await refreshToken();
-			if (response.success) {
-				// axiosJWT.defaults.headers.Authorization = `Bearer ${response.access_token}`;
-				originalConfig.headers.Authorization = `Bearer ${response.access_token}`;
-				return axiosJWT(originalConfig);
-			}
-		} catch (error) {
-			return Promise.reject(error);
-		}
-		// }
-		return Promise.reject(error);
-	}
-);
+// axiosJWT.interceptors.request.use(
+// 	async (config) => {
+// 		// const response = await refreshToken();
+// 		// const decoded = jwt_decode(response.access_token);
+// 		// const expire = decoded.exp;
+// 		// const currentDate = Date.now();
+// 		// if (expire * 1000 < currentDate) {
+// 		const response = await refreshToken();
+// 		// console.log(response);
+// 		if (response.success) config.headers.Authorization = `Bearer ${response.access_token}`;
+// 		// config.withCredentials = true;
+// 		return config;
+// 		// }
+// 	},
+// 	async (error) => {
+// 		const originalConfig = err.config;
+// 		// if (error.response.status === 403 || error.response.status === 401) {
+// 		try {
+// 			const response = await refreshToken();
+// 			if (response.success) {
+// 				// axiosJWT.defaults.headers.Authorization = `Bearer ${response.access_token}`;
+// 				originalConfig.headers.Authorization = `Bearer ${response.access_token}`;
+// 				return axiosJWT(originalConfig);
+// 			}
+// 		} catch (error) {
+// 			return Promise.reject(error);
+// 		}
+// 		// }
+// 		return Promise.reject(error);
+// 	}
+// );
 
-export default axiosJWT;
+export default axiosAPI;

+ 46 - 0
config/request.js

@@ -0,0 +1,46 @@
+import axiosAPI from "./axios";
+import { refreshToken } from "@/actions/auth";
+
+const handleRequest = async (request) => {
+	try {
+		return await request();
+	} catch (error) {
+		if (error?.response?.status === 401) {
+			try {
+				const token = await refreshToken();
+				if (token.success) {
+					axiosAPI.defaults.headers.Authorization = `Bearer ${token.access_token}`;
+					return await request();
+				}
+				return false;
+			} catch (error) {
+				console.log(error);
+				return false;
+			}
+		}
+		console.log(error);
+		return false;
+	}
+};
+
+export const get = async (url, config = null) => {
+	try {
+		const request = () => axiosAPI.get(url, config);
+		const res = await handleRequest(request);
+		return res;
+	} catch (error) {
+		console.log(error);
+		return false;
+	}
+};
+
+export const post = async (url, data, config = null) => {
+	try {
+		const request = () => axiosAPI.post(url, data, config);
+		const res = await handleRequest(request);
+		return res;
+	} catch (error) {
+		console.log(error);
+		return false;
+	}
+};

+ 2 - 2
pages/app/pt/pemantauan.js

@@ -21,8 +21,8 @@ class Pemantauan extends Component {
 
 	componentDidMount = async () => {
 		const { user } = this.props;
-		const log = await getLog({ ptId: user.data.peran[0].organisasi.id });
-		const pelaporan = await getPelaporan({ ptId: user.data.peran[0].organisasi.id });
+		const log = await getLog({ ptId: user.peran[0].organisasi.id });
+		const pelaporan = await getPelaporan({ ptId: user.peran[0].organisasi.id });
 		this.setState({ log, pelaporan });
 	};
 

+ 6 - 11
pages/login.js

@@ -1,6 +1,6 @@
 import { connect } from "react-redux";
 import { login, getUser, refreshToken } from "@/actions/auth";
-import axiosJWT from "@/config/axios";
+import axiosAPI from "@/config/axios";
 import { getPT } from "@/actions/PT";
 
 import React, { Component } from "react";
@@ -67,21 +67,16 @@ class Login extends Component {
 			const auth = await login(username, password);
 			// console.log(auth);
 			if (auth.success) {
-				axiosJWT.defaults.headers.Authorization = `Bearer ${auth.access_token}`;
+				axiosAPI.defaults.headers.Authorization = `Bearer ${auth.access_token}`;
 				const dataUser = await getUser();
-				// console.log(dataUser);
-				this.props.setUser(dataUser.data);
-
-				// const token = await refreshToken();
-				// console.log(token);
-				if (dataUser.data.peran[0].peran.id === 2022) {
-					const org_id = dataUser.data.peran[0].organisasi.id;
+				console.log(dataUser);
+				this.props.setUser(dataUser);
+				if (dataUser.peran[0].peran.id === 2022) {
+					const org_id = dataUser.peran[0].organisasi.id;
 					const pt = await getPT({ id: org_id });
 					this.props.setPT(pt);
 					Router.push({ pathname: "/app/pt/pemantauan" });
 				} else {
-					const pt = await getPT();
-					this.props.setPT(pt);
 					Router.push({ pathname: "/app/pemantauan" });
 				}
 			}

+ 2 - 2
store/reducers/user.reducer.js

@@ -1,9 +1,9 @@
 import { LOGIN_SUCCESS, LOGIN_FAIL } from "../actions/user";
 
-export const userReducer = (state = { data: {} }, action) => {
+export const userReducer = (state = {}, action) => {
 	switch (action.type) {
 		case "SET_USER":
-			return { data: action.payload };
+			return (state = action.payload);
 		default:
 			return state;
 	}