created login page #4
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { Admin, Resource,} from "react-admin";
|
||||
//import { Layout } from "./Layout";//
|
||||
import { dataProvider } from "./dataProvider";
|
||||
import { authProvider} from "./authProvider";
|
||||
import { UserList } from "./components/users/UserList.tsx";
|
||||
import { UserEdit } from "./components/users/UserEdit.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";
|
||||
|
||||
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="posts" list={PostList} edit={PostEdit} show={PostShow} />
|
||||
<Resource
|
||||
|
||||
41
src/authProvider.ts
Normal file
41
src/authProvider.ts
Normal 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
18
src/users.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user