fix: Not setting the auth state in Application
This commit is contained in:
		
							parent
							
								
									ba1521fbd8
								
							
						
					
					
						commit
						f26ce20e13
					
				| @ -22,6 +22,7 @@ import { ILearner } from "../models/learner"; | |||||||
| import { IVocab, VocabType } from "../models/vocab"; | import { IVocab, VocabType } from "../models/vocab"; | ||||||
| import { IReviewMetadata, ReviewType } from "../models/review"; | import { IReviewMetadata, ReviewType } from "../models/review"; | ||||||
| import { IUser } from "../models/user"; | import { IUser } from "../models/user"; | ||||||
|  | import { IResponse } from "../models/server"; | ||||||
| 
 | 
 | ||||||
| interface IProps { | interface IProps { | ||||||
|     authenticated: boolean; |     authenticated: boolean; | ||||||
| @ -195,7 +196,7 @@ export default class Application extends React.Component<IProps> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     login = (username: string, password: string): Promise<IUser | {}> => { |     login = (username: string, password: string): Promise<IUser | IResponse> => { | ||||||
|         return new Promise((res, rej) => { |         return new Promise((res, rej) => { | ||||||
|             fetch(`${BACKEND_URL}/login`, { |             fetch(`${BACKEND_URL}/login`, { | ||||||
|                 method: "POST", |                 method: "POST", | ||||||
| @ -209,15 +210,16 @@ export default class Application extends React.Component<IProps> { | |||||||
|                     password, |                     password, | ||||||
|                 }), |                 }), | ||||||
|             }).then(data => data.json()) |             }).then(data => data.json()) | ||||||
|                 .then(resp => { |                 .then((resp: IResponse) => { | ||||||
|                     if (resp.error === "0") { |                     if (resp.error === "0") { | ||||||
|                         // Successful login
 |                         // Successful login
 | ||||||
|                         this.props.setUser(resp.data); |                         this.props.setUser(resp.data); | ||||||
|                         setSessionToken(window, resp.data.sessionToken); |                         setSessionToken(window, resp.data.sessionToken); | ||||||
|  |                         this.props.setAuthenticated(true); | ||||||
| 
 | 
 | ||||||
|                         res(resp.data); |                         res(resp.data); | ||||||
|                     } else { |                     } else { | ||||||
|                         rej({}); |                         rej(resp); | ||||||
|                     } |                     } | ||||||
|                 }); |                 }); | ||||||
|         }); |         }); | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								frontend/src/models/server.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								frontend/src/models/server.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | export interface IResponse { | ||||||
|  |     error: string; | ||||||
|  |     data: any; | ||||||
|  | }; | ||||||
| @ -11,9 +11,10 @@ import Snackbar from "@material-ui/core/Snackbar"; | |||||||
| import { withRouter } from "react-router-dom"; | import { withRouter } from "react-router-dom"; | ||||||
| 
 | 
 | ||||||
| import { IUser } from "../models/user"; | import { IUser } from "../models/user"; | ||||||
|  | import { IResponse } from "../models/server"; | ||||||
| 
 | 
 | ||||||
| interface IProps { | interface IProps { | ||||||
|     login: (username: string, password: string) => Promise<IUser | {}>; |     login: (username: string, password: string) => Promise<IUser | IResponse>; | ||||||
|     authenticated: boolean; |     authenticated: boolean; | ||||||
|     history: any; |     history: any; | ||||||
| 
 | 
 | ||||||
| @ -35,6 +36,9 @@ const LoginPageWithRouter = withRouter( | |||||||
|             const username = this.usernameRef.value || ""; |             const username = this.usernameRef.value || ""; | ||||||
|             const password = this.passwordRef.value || ""; |             const password = this.passwordRef.value || ""; | ||||||
|             this.props.login(username, password).then((res: IUser) => { |             this.props.login(username, password).then((res: IUser) => { | ||||||
|  |                 // Stop the loading animation
 | ||||||
|  |                 this.props.setLoading(false); | ||||||
|  | 
 | ||||||
|                 if (res.showWelcome) { |                 if (res.showWelcome) { | ||||||
|                     // If the user logs in for the first time, a welcome
 |                     // If the user logs in for the first time, a welcome
 | ||||||
|                     // screen should be shown
 |                     // screen should be shown
 | ||||||
| @ -42,7 +46,7 @@ const LoginPageWithRouter = withRouter( | |||||||
|                 } else { |                 } else { | ||||||
|                     this.props.history.push("/dashboard"); |                     this.props.history.push("/dashboard"); | ||||||
|                 } |                 } | ||||||
|             }, (err) => { |             }, (err: IResponse) => { | ||||||
|                 this.props.setLoading(false); |                 this.props.setLoading(false); | ||||||
|                 this.props.setSnackbar(true, "Failed to log in"); |                 this.props.setSnackbar(true, "Failed to log in"); | ||||||
|             }); |             }); | ||||||
|  | |||||||
| @ -58,7 +58,7 @@ const initialState: IState = { | |||||||
|     drawerButton: true, |     drawerButton: true, | ||||||
|     // Is the user authenticated?
 |     // Is the user authenticated?
 | ||||||
|     // TODO: Set this to false
 |     // TODO: Set this to false
 | ||||||
|     authenticated: true, |     authenticated: false, | ||||||
| 
 | 
 | ||||||
|     user: { |     user: { | ||||||
|         score: 0, |         score: 0, | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Alexander Polynomdivision
						Alexander Polynomdivision