created login page #4

This commit is contained in:
2025-02-05 11:12:40 +01:00
parent a41832684e
commit 7cbedeabaa
3 changed files with 62 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
import { Admin, Resource,} from "react-admin"; import { Admin, Resource,} from "react-admin";
//import { Layout } from "./Layout";// //import { Layout } from "./Layout";//
import { dataProvider } from "./dataProvider"; import { dataProvider } from "./dataProvider";
import { authProvider} from "./authProvider";
import { UserList } from "./components/users/UserList.tsx"; import { UserList } from "./components/users/UserList.tsx";
import { UserEdit } from "./components/users/UserEdit.tsx"; import { UserEdit } from "./components/users/UserEdit.tsx";
import { PostEdit } from "./components/posts/PostEdit.tsx"; import { PostEdit } from "./components/posts/PostEdit.tsx";
@@ -19,7 +20,7 @@ import { PhotoShow } from "./components/photos/PhotoShow.tsx";
import { AlbumShow } from "./components/albums/AlbumShow.tsx"; import { AlbumShow } from "./components/albums/AlbumShow.tsx";
export const App = () => ( export const App = () => (
<Admin layout={MyLayout} dataProvider={dataProvider}> <Admin layout={MyLayout} dataProvider={dataProvider} authProvider={authProvider} requireAuth>
<Resource name="users" list={UserList} edit={UserEdit} show={UserShow} /> <Resource name="users" list={UserList} edit={UserEdit} show={UserShow} />
<Resource name="posts" list={PostList} edit={PostEdit} show={PostShow} /> <Resource name="posts" list={PostList} edit={PostEdit} show={PostShow} />
<Resource <Resource
@@ -44,4 +45,4 @@ export const App = () => (
); );
// ShowGuesser, EditGuesser, ListGuesser // // ShowGuesser, EditGuesser, ListGuesser //

41
src/authProvider.ts Normal file
View File

@@ -0,0 +1,41 @@
import {AuthProvider, HttpError} from "react-admin";
import data from "./users.json";
export const authProvider: AuthProvider = {
login: ({ username, password }) => {
const user = data.users.find(
(u) => u.username === username && u.password === password,
);
if (user) {
const { password, ...userToPersist } = user;
localStorage.setItem("user", JSON.stringify(userToPersist));
return Promise.resolve();
}
return Promise.reject(
new HttpError("Invalid username or password", 401, {
message: "Invalid username or password",
}),
);
},
async logout() {
localStorage.removeItem("user");
return Promise.resolve();
},
async checkAuth() {
return localStorage.getItem("user") ? Promise.resolve() : Promise.reject();
},
async getIdentity() {
const persistedUser = localStorage.getItem("user");
const user = persistedUser ? JSON.parse(persistedUser) : null;
return Promise.resolve(user);
},
async checkError() {
return Promise.resolve();
},
async getPermissions() {
return Promise.resolve(undefined);
},
};

18
src/users.json Normal file

File diff suppressed because one or more lines are too long