forked from hasura/auth-ui-kit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmail.js
134 lines (130 loc) · 4.2 KB
/
Email.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import React, { Component } from 'react';
import { Helmet } from 'react-helmet';
import { Link } from 'react-router-dom';
import { emailSignIn, handleAuthResponse } from './api';
import SocialLoginWrapper from './SocialLoginWrapper';
import SignUpMessage from './SignUpMessage';
import Back from './Back';
import ErrorMsg from './ErrorMsg';
import globals from './globals';
import './style.css';
class Email extends Component {
state = {
isProgressing: false,
response: null,
};
enterProgressing = status => {
this.setState({ isProgressing: status });
};
authRespCallback = resp => {
this.setState({ response: resp });
};
render() {
const pageWrapperThemeClass =
globals.theme === 'light'
? 'LightLandingPageWrapper'
: 'DarkLandingPageWrapper';
const pageInnerThemeClass =
globals.theme === 'light'
? 'LightLandingPageInnerWrapper'
: 'DarkLandingPageInnerWrapper';
const formGroupThemeClass =
globals.theme === 'light'
? 'LightFormGroupWrapper'
: 'DarkFormGroupWrapper';
const headerDescriptionClass =
globals.theme === 'light'
? 'lightHeaderDescription'
: 'darkHeaderDescription';
let submitBtnText = 'Login';
if (this.state.isProgressing) {
submitBtnText = (
<span>
<i className="fa fa-spinner fa-spin" /> Logging in..
</span>
);
}
return (
<div
className={
'displayFlex landingPageWrapper container-fluid ' +
pageWrapperThemeClass
}
>
<Helmet>
<meta charSet="utf-8" />
<title>Login with Email</title>
</Helmet>
<div className={'landingPageInnerWidth'}>
<Back backUrl={'/ui'} />
<div className={'landingPageInnerWrapper ' + pageInnerThemeClass}>
<div className="signUpWrapper">
<div className={headerDescriptionClass}>Login</div>
<div className="descriptionText">
Hello! Login with your Email
</div>
<ErrorMsg response={this.state.response} />
<form
className={formGroupThemeClass}
onChange={() => {
this.setState({ response: null });
}}
onSubmit={e => {
e.preventDefault();
this.enterProgressing(true);
emailSignIn(this.email.value, this.password.value)
.then(resp => {
this.enterProgressing(false);
handleAuthResponse(resp, this.authRespCallback);
})
.catch(resp => {
this.enterProgressing(false);
this.setState({ response: resp });
});
}}
>
<div className="formInput">
<label className="formLabel">Email ID</label>
<input
type="email"
ref={input => {
this.email = input;
}}
/>
</div>
<div className="formInput">
<label className="formLabel">Password</label>
<input
type="password"
ref={input => {
this.password = input;
}}
/>
</div>
<div className="linkDescription forgotPassword descriptionText">
<Link
to={{
pathname: '/ui/forgot-password',
search: this.props.location.search,
}}
>
{' '}
Forgot Password?
</Link>
</div>
<div className="signInbtn">
<a>
<button type="submit">{submitBtnText}</button>
</a>
</div>
</form>
<SocialLoginWrapper />
</div>
</div>
<SignUpMessage location={this.props.location} />
</div>
</div>
);
}
}
export default Email;