Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
4b5be06
ilk commit
ddilaralkan Sep 21, 2025
4dee3e7
backend-sign-in-page
batuhanxbayram Sep 21, 2025
b668536
Login ekranı
ddilaralkan Sep 21, 2025
c40c527
Merge pull request #1 from batuhanxbayram/dilos
batuhanxbayram Sep 21, 2025
4f493a9
testt
ddilaralkan Sep 22, 2025
de70efb
Merge pull request #2 from batuhanxbayram/dilos
ddilaralkan Sep 22, 2025
09b68e5
kullanıcılar manifestesin777
ddilaralkan Sep 22, 2025
6c5fbd4
Merge pull request #3 from batuhanxbayram/dilos
batuhanxbayram Sep 22, 2025
d0f6a60
backend-sign-in-page
batuhanxbayram Sep 22, 2025
ba2d58f
Merge pull request #4 from batuhanxbayram/feature-backend-connection
batuhanxbayram Sep 22, 2025
0c6f0da
manifestzoktay
ddilaralkan Sep 22, 2025
e19505f
Merge pull request #5 from batuhanxbayram/dilara
ddilaralkan Sep 22, 2025
a0703e8
backend-sign-in-page
batuhanxbayram Sep 22, 2025
d360ab3
Merge pull request #6 from batuhanxbayram/feature-filter
batuhanxbayram Sep 22, 2025
8f6e1c1
askk
ddilaralkan Sep 23, 2025
dbd12a6
Merge pull request #7 from batuhanxbayram/batudilosask
batuhanxbayram Sep 23, 2025
e4747f1
feature-tables
batuhanxbayram Sep 23, 2025
04f7dd8
Merge remote-tracking branch 'origin/main'
batuhanxbayram Sep 23, 2025
b0402d3
feature-tables
batuhanxbayram Sep 25, 2025
2f372ff
Merge pull request #8 from batuhanxbayram/feature-forms
batuhanxbayram Sep 25, 2025
87ea366
feature-table_edit
batuhanxbayram Sep 25, 2025
4f02e80
Merge pull request #9 from batuhanxbayram/feature-queue_pages
batuhanxbayram Sep 25, 2025
85f6bd2
araç sırası ekleme
ddilaralkan Sep 25, 2025
09c2072
Merge pull request #10 from batuhanxbayram/batudilosask
batuhanxbayram Sep 25, 2025
1b8b8f7
Yanlışlardan Arınmak
ddilaralkan Sep 25, 2025
2bfaa33
feature-add-queue
batuhanxbayram Sep 25, 2025
db4f7e3
Merge pull request #12 from batuhanxbayram/batudilosask
batuhanxbayram Sep 25, 2025
32f33c9
feature-add-queue-routefix
batuhanxbayram Sep 25, 2025
a020d2b
feature-add-queue-routefix2
batuhanxbayram Sep 25, 2025
00e96d2
feature-add-queue-routefix3
batuhanxbayram Sep 25, 2025
b97496e
Merge branch 'main' into feature-queue_pages
batuhanxbayram Sep 25, 2025
2da4498
Merge pull request #14 from batuhanxbayram/feature-queue_pages
batuhanxbayram Sep 25, 2025
ef52a4d
feature-queuePage
batuhanxbayram Sep 27, 2025
9d9e15e
buf-fix
batuhanxbayram Sep 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,13 @@
"preview": "vite preview"
},
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@heroicons/react": "2.0.18",
"@material-tailwind/react": "2.1.4",
"apexcharts": "3.44.0",
"axios": "^1.12.2",
"jwt-decode": "^4.0.0",
"prop-types": "15.8.1",
"react": "18.2.0",
"react-apexcharts": "1.4.1",
Expand All @@ -27,6 +31,6 @@
"prettier": "3.0.3",
"prettier-plugin-tailwindcss": "0.5.6",
"tailwindcss": "3.3.4",
"vite": "4.5.0"
"vite": "^4.5.14"
}
}
}
Binary file added public/img/background.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/img/pattern.png
Binary file not shown.
20 changes: 18 additions & 2 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,28 @@
import { Routes, Route, Navigate } from "react-router-dom";
import { Dashboard, Auth } from "@/layouts";
import PrivateRoute from "../src/component/PrivateRoute";


function App() {
return (
<Routes>
<Route path="/dashboard/*" element={<Dashboard />} />
{/* Dashboard'u sadece giriş yapmış kullanıcı görecek */}
<Route
path="/dashboard/*"
element={
<PrivateRoute>
<Dashboard />
</PrivateRoute>
}
/>

{/* Auth sayfaları (giriş, kayıt) herkes görebilir */}
<Route path="/auth/*" element={<Auth />} />
<Route path="*" element={<Navigate to="/dashboard/home" replace />} />



{/* Varsayılan yönlendirme */}
<Route path="*" element={<Navigate to="/auth/sign-in" replace />} />
</Routes>
);
}
Expand Down
29 changes: 29 additions & 0 deletions src/api/axiosConfig.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import axios from "axios";



const apiClient = axios.create({
baseURL: "https://localhost:7093/api",
});


apiClient.interceptors.request.use(
(config) => {

const token = localStorage.getItem("authToken");


if (token) {

config.headers.Authorization = `Bearer ${token}`;
}

return config;
},
(error) => {

return Promise.reject(error);
}
);

export default apiClient;
15 changes: 15 additions & 0 deletions src/component/PrivateRoute.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import React from "react";
import { Navigate } from "react-router-dom";

const PrivateRoute = ({ children }) => {
const token = localStorage.getItem("authToken");

if (!token) {
// Token yoksa login sayfasına yönlendir
return <Navigate to="/auth/sign-in" replace />;
}

return children;
};

export default PrivateRoute;
34 changes: 22 additions & 12 deletions src/context/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ export function reducer(state, action) {
}
case "OPEN_CONFIGURATOR": {
return { ...state, openConfigurator: action.value };
}
// YENİ: Kullanıcı rolünü ayarlamak için yeni case eklendi.
case "SET_USER_ROLE": {
return { ...state, userRole: action.value };
}
default: {
throw new Error(`Unhandled action type: ${action.type}`);
Expand All @@ -38,18 +42,20 @@ export function MaterialTailwindControllerProvider({ children }) {
transparentNavbar: true,
fixedNavbar: false,
openConfigurator: false,
// YENİ: userRole state'i eklendi. Sayfa yenilendiğinde rolün kaybolmaması için localStorage'dan okunuyor.
userRole: localStorage.getItem("userRole") || null,
};

const [controller, dispatch] = React.useReducer(reducer, initialState);
const value = React.useMemo(
() => [controller, dispatch],
[controller, dispatch]
() => [controller, dispatch],
[controller, dispatch]
);

return (
<MaterialTailwind.Provider value={value}>
{children}
</MaterialTailwind.Provider>
<MaterialTailwind.Provider value={value}>
{children}
</MaterialTailwind.Provider>
);
}

Expand All @@ -58,7 +64,7 @@ export function useMaterialTailwindController() {

if (!context) {
throw new Error(
"useMaterialTailwindController should be used inside the MaterialTailwindControllerProvider."
"useMaterialTailwindController should be used inside the MaterialTailwindControllerProvider."
);
}

Expand All @@ -72,14 +78,18 @@ MaterialTailwindControllerProvider.propTypes = {
};

export const setOpenSidenav = (dispatch, value) =>
dispatch({ type: "OPEN_SIDENAV", value });
dispatch({ type: "OPEN_SIDENAV", value });
export const setSidenavType = (dispatch, value) =>
dispatch({ type: "SIDENAV_TYPE", value });
dispatch({ type: "SIDENAV_TYPE", value });
export const setSidenavColor = (dispatch, value) =>
dispatch({ type: "SIDENAV_COLOR", value });
dispatch({ type: "SIDENAV_COLOR", value });
export const setTransparentNavbar = (dispatch, value) =>
dispatch({ type: "TRANSPARENT_NAVBAR", value });
dispatch({ type: "TRANSPARENT_NAVBAR", value });
export const setFixedNavbar = (dispatch, value) =>
dispatch({ type: "FIXED_NAVBAR", value });
dispatch({ type: "FIXED_NAVBAR", value });
export const setOpenConfigurator = (dispatch, value) =>
dispatch({ type: "OPEN_CONFIGURATOR", value });
dispatch({ type: "OPEN_CONFIGURATOR", value });


export const setUserRole = (dispatch, value) =>
dispatch({ type: "SET_USER_ROLE", value });
82 changes: 41 additions & 41 deletions src/layouts/dashboard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,53 +2,53 @@ import { Routes, Route } from "react-router-dom";
import { Cog6ToothIcon } from "@heroicons/react/24/solid";
import { IconButton } from "@material-tailwind/react";
import {
Sidenav,
DashboardNavbar,
Configurator,
Footer,
  Sidenav,
  DashboardNavbar,
  Configurator,
  Footer,
} from "@/widgets/layout";
import routes from "@/routes";
import { useMaterialTailwindController, setOpenConfigurator } from "@/context";

export function Dashboard() {
const [controller, dispatch] = useMaterialTailwindController();
const { sidenavType } = controller;
  const [controller, dispatch] = useMaterialTailwindController();
  const { sidenavType } = controller;

return (
<div className="min-h-screen bg-blue-gray-50/50">
<Sidenav
routes={routes}
brandImg={
sidenavType === "dark" ? "/img/logo-ct.png" : "/img/logo-ct-dark.png"
}
/>
<div className="p-4 xl:ml-80">
<DashboardNavbar />
<Configurator />
<IconButton
size="lg"
color="white"
className="fixed bottom-8 right-8 z-40 rounded-full shadow-blue-gray-900/10"
ripple={false}
onClick={() => setOpenConfigurator(dispatch, true)}
>
<Cog6ToothIcon className="h-5 w-5" />
</IconButton>
<Routes>
{routes.map(
({ layout, pages }) =>
layout === "dashboard" &&
pages.map(({ path, element }) => (
<Route exact path={path} element={element} />
))
)}
</Routes>
<div className="text-blue-gray-600">
<Footer />
</div>
</div>
</div>
);
  return (
    <div className="min-h-screen bg-blue-gray-50/50">
      <Sidenav
        routes={routes}
        brandImg={
          sidenavType === "dark" ? "/img/logo-ct.png" : "/img/logo-ct-dark.png"
        }
      />
      <div className="p-4 xl:ml-80">
        <DashboardNavbar />
        <Configurator />
        <IconButton
          size="lg"
          color="white"
          className="fixed bottom-8 right-8 z-40 rounded-full shadow-blue-gray-900/10"
          ripple={false}
          onClick={() => setOpenConfigurator(dispatch, true)}
        >
          <Cog6ToothIcon className="h-5 w-5" />
        </IconButton>
        <Routes>
          {routes.map(
            ({ layout, pages }) =>
              layout === "dashboard" &&
              pages.map(({ path, element }) => (
                <Route exact path={path} element={element} />
              ))
          )}
        </Routes>
        <div className="text-blue-gray-600">
          <Footer />
        </div>
      </div>
    </div>
  );
}

Dashboard.displayName = "/src/layout/dashboard.jsx";
Expand Down
2 changes: 1 addition & 1 deletion src/pages/auth/index.js
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export * from "@/pages/auth/sign-in";
export * from "@/pages/auth/sign-up";

Loading