@@ -2,7 +2,7 @@ import React, { Component } from "react";
2
2
import { Route , withRouter , useHistory } from 'react-router-dom' ;
3
3
import { Link } from 'react-router-dom' ;
4
4
import axios from "axios" ;
5
-
5
+ import swal from "sweetalert" ;
6
6
import "../Components/Styles/login.scss" ;
7
7
import Home from "../Components/home"
8
8
@@ -14,6 +14,10 @@ class Login extends Component {
14
14
formValue : {
15
15
username : "" ,
16
16
password : "" ,
17
+ } ,
18
+ formError : {
19
+ username : false ,
20
+ password : false ,
17
21
}
18
22
}
19
23
@@ -28,12 +32,37 @@ class Login extends Component {
28
32
...this . state . formValue ,
29
33
[ name ] : value ,
30
34
35
+ } ,
36
+ formError : {
37
+ ...this . state . formError ,
38
+ [ name ] : false ,
39
+
31
40
}
32
41
} )
33
42
}
34
43
35
44
handleSubmit = ( ) => {
36
- console . log ( this . state . formValue )
45
+ let formError = { } ;
46
+ let formData = this . state . formValue ;
47
+ let isValid = true ;
48
+ Object . keys ( formData ) . forEach ( key => {
49
+ if ( ! formData [ key ] ) {
50
+ isValid = false ;
51
+ formError = {
52
+ ...formError ,
53
+ [ key ] : true
54
+ }
55
+ }
56
+ } )
57
+ if ( ! isValid ) {
58
+ this . setState ( {
59
+ formError : {
60
+ ...this . state . formError ,
61
+ ...formError
62
+ }
63
+ } )
64
+ return ;
65
+ }
37
66
38
67
axios . post ( '/core/api/token/' , {
39
68
...this . state . formValue
@@ -43,6 +72,8 @@ class Login extends Component {
43
72
localStorage . setItem ( 'auth' , response . data . access ) ;
44
73
this . props . history . push ( "/" )
45
74
}
75
+ } ) . catch ( error => {
76
+ swal ( "" , "User not found" , "error" ) ;
46
77
} )
47
78
}
48
79
@@ -60,11 +91,17 @@ class Login extends Component {
60
91
</ div >
61
92
< div className = "card-body" >
62
93
< form className = "login-form ml-4 mb-4 mr-4 mt-2" >
63
- < label > Username</ label >
64
- < input defaultValue = "" className = "" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "username" value = { username } />
65
- < label className = "mt-3" > Password</ label >
66
- < input defaultValue = "" className = "" type = "password" onChange = { e => this . handleOnChange ( e ) } name = "password" value = { password } />
67
- < input className = "mt-5 btn btn-primary btn-submit btn-block" value = "Submit" onClick = { e => this . handleSubmit ( e ) } type = "button" />
94
+ < div >
95
+ < label > Username</ label >
96
+ < input className = "mb-2" type = "text" onChange = { e => this . handleOnChange ( e ) } name = "username" value = { username } />
97
+ < span className = "text-danger" > { this . state . formError . username && "Please enter your username" } </ span >
98
+ </ div >
99
+ < div >
100
+ < label className = "mt-3" > Password</ label >
101
+ < input className = "mb-2" type = "password" onChange = { e => this . handleOnChange ( e ) } name = "password" value = { password } />
102
+ < span className = "text-danger" > { this . state . formError . password && "Please enter your password" } </ span >
103
+ </ div >
104
+ < input className = "mt-4 btn btn-primary btn-submit btn-block" value = "Submit" onClick = { e => this . handleSubmit ( e ) } type = "button" />
68
105
69
106
</ form >
70
107
< p className = "ml-4" > Don't have an account?< Link className = "ml-1" to = { "/register" } > Sign Up</ Link > </ p >
0 commit comments