created login page #4
This commit is contained in:
@@ -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
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