Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import ColorSwitcher from './components/common/ColorSwitcher';
import NotificationContainer from './components/common/react-notifications/NotificationContainer';
import { isMultiColorActive, isDemo } from './constants/defaultValues';
import { getDirection } from './helpers/Utils';
import SiteRules from './components/pages/SiteRules';

const ViewMain = React.lazy(() =>
import(/* webpackChunkName: "views" */ './views')
Expand Down Expand Up @@ -81,6 +82,10 @@ class App extends Component {
authUser={loginUser}
component={ViewApp}
/>
<Route
path="/SiteRules"
render={props => <SiteRules />}
/>
<Route
path="/user"
render={props => <ViewUser {...props} />}
Expand Down
49 changes: 49 additions & 0 deletions src/components/pages/SiteRules.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import { connect } from "react-redux";

class SiteRules extends Component {

constructor(props) {
super(props);
this.state = {
};
}

render() {

return (

<div className="container mt-4">
<div className="row align-items-center justify-content-center">
<div className="col-md-8 order-md-1 text-center text-md-left">
<h2 className="mb-3 bd-text-purple-bright">Правила сайта</h2>
<p className="blockquote">
"Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum."
</p>
<NavLink to={this.props.authLocation} className="btn btn-success btn-lg btn-bd-primary mb-3 mb-md-0 mr-md-3">
Назад
</NavLink>
</div>
</div>

</div>

);
}
}

const mapStateToProps = ({ authUser }) => {
const { authLocation } = authUser;
return { authLocation };
};

export default connect(
mapStateToProps,
)(SiteRules);

1 change: 1 addition & 0 deletions src/lang/locales/en_US.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ module.exports = {
"user.forgot-password": "Forgot Password",
"user.email": "E-mail",
"user.password": "Password",
"user.siteRules": "I agree",
"user.forgot-password-question": "Forget password?",
"user.fullname": "Full Name",
"user.login-button": "LOGIN",
Expand Down
1 change: 1 addition & 0 deletions src/redux/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
export const CHANGE_LOCALE = "CHANGE_LOCALE";

/* AUTH */
export const AUTH_LOCATION = "AUTH_LOCATION"
export const LOGIN_USER = "LOGIN_USER";
export const LOGIN_USER_SUCCESS = "LOGIN_USER_SUCCESS";
export const LOGIN_USER_ERROR = "LOGIN_USER_ERROR";
Expand Down
10 changes: 9 additions & 1 deletion src/redux/auth/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,17 @@ import {
FORGOT_PASSWORD_ERROR,
RESET_PASSWORD,
RESET_PASSWORD_SUCCESS,
RESET_PASSWORD_ERROR
RESET_PASSWORD_ERROR,
AUTH_LOCATION
} from '../actions';

export const authLocation = (location) => {
return {
type: AUTH_LOCATION,
payload: location
}
}

export const loginUser = (user, history) => ({
type: LOGIN_USER,
payload: { user, history }
Expand Down
6 changes: 5 additions & 1 deletion src/redux/auth/reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,24 @@ import {
FORGOT_PASSWORD_ERROR,
RESET_PASSWORD,
RESET_PASSWORD_SUCCESS,
RESET_PASSWORD_ERROR
RESET_PASSWORD_ERROR,
AUTH_LOCATION
} from '../actions';

const INIT_STATE = {
user: localStorage.getItem('user_id'),
forgotUserMail: '',
newPassword: '',
resetPasswordCode: '',
authLocation: '/',
loading: false,
error: ''
};

export default (state = INIT_STATE, action) => {
switch (action.type) {
case AUTH_LOCATION:
return { ...state, authLocation: action.payload };
case LOGIN_USER:
return { ...state, loading: true, error: '' };
case LOGIN_USER_SUCCESS:
Expand Down
42 changes: 28 additions & 14 deletions src/views/user/login.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import React, { Component } from "react";
import { Row, Card, CardTitle, Label, FormGroup, Button } from "reactstrap";
import { NavLink } from "react-router-dom";
import { NavLink, withRouter } from "react-router-dom";
import { connect } from "react-redux";

import { NotificationManager } from "../../components/common/react-notifications";
import { Formik, Form, Field } from "formik";

import { loginUser } from "../../redux/actions";
import { loginUser, authLocation } from "../../redux/actions";
import { Colxx } from "../../components/common/CustomBootstrap";
import IntlMessages from "../../helpers/IntlMessages";
import { compose } from "redux";

class Login extends Component {
constructor(props) {
super(props);
Expand Down Expand Up @@ -46,6 +46,10 @@ class Login extends Component {
return error;
}

componentDidMount(){
this.props.authLocation(this.props.location.pathname)
}

componentDidUpdate() {
if (this.props.error) {
NotificationManager.warning(
Expand Down Expand Up @@ -73,7 +77,7 @@ class Login extends Component {
Please use your credentials to login.
<br />
If you are not a member, please{" "}
<NavLink to={`/register`} className="white">
<NavLink to={`/user/register`} className="white">
register
</NavLink>
.
Expand Down Expand Up @@ -124,9 +128,14 @@ class Login extends Component {
)}
</FormGroup>
<div className="d-flex justify-content-between align-items-center">
<NavLink to={`/user/forgot-password`}>
<IntlMessages id="user.forgot-password-question" />
</NavLink>
<div className="flex-column">
<NavLink to={`/user/forgot-password`} className="btn btn-link p-0 p-sm-2 pl-1">
<IntlMessages id="user.forgot-password-question" />
</NavLink>
<NavLink to={`/SiteRules`} className="btn btn-link p-0 p-sm-2 pl-1">
Site rules
</NavLink>
</div>
<Button
color="primary"
className={`btn-shadow btn-multiple-state ${this.props.loading ? "show-spinner" : ""}`}
Expand Down Expand Up @@ -157,9 +166,14 @@ const mapStateToProps = ({ authUser }) => {
return { user, loading, error };
};

export default connect(
mapStateToProps,
{
loginUser
}
)(Login);
export default compose(
connect(
mapStateToProps,
{
loginUser,
authLocation
}
),
withRouter)
(Login)

59 changes: 47 additions & 12 deletions src/views/user/register.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import React, { Component } from "react";
import { Row, Card, CardTitle, Form, Label, Input, Button } from "reactstrap";
import { NavLink } from "react-router-dom";
import { NavLink, withRouter } from "react-router-dom";
import { connect } from "react-redux";
import { registerUser } from "../../redux/actions";

import { registerUser, authLocation } from "../../redux/actions";
import IntlMessages from "../../helpers/IntlMessages";
import { Colxx } from "../../components/common/CustomBootstrap";
import { NotificationManager } from "../../components/common/react-notifications";
import { compose } from "redux";

class Register extends Component {
constructor(props) {
Expand All @@ -22,6 +23,23 @@ class Register extends Component {
}
}

componentDidMount(){
this.props.authLocation(this.props.location.pathname)
}

componentDidUpdate() {
if (this.props.error) {
NotificationManager.warning(
this.props.error,
"Login Error",
3000,
null,
null,
''
);
}
}

render() {
return (
<Row className="h-100">
Expand Down Expand Up @@ -61,7 +79,19 @@ class Register extends Component {
defaultValue={this.state.password}
/>
</Label>
<div className="d-flex justify-content-end align-items-center">

<div className="d-flex justify-content-between align-items-center">
<div>
<NavLink to={`/SiteRules`} className="btn btn-link p-2">
Site rules
</NavLink>
<Label className="form-check form-group pl-4 d-flex align-items-center">
<Input type="checkbox" className="mt-0"/>
<IntlMessages
id="user.siteRules"
/>
</Label>
</div>
<Button
color="primary"
className="btn-shadow"
Expand All @@ -80,13 +110,18 @@ class Register extends Component {
}
}
const mapStateToProps = ({ authUser }) => {
const { user, loading } = authUser;
return { user, loading };
const { user, loading, error } = authUser;
return { user, loading, error };
};

export default connect(
mapStateToProps,
{
registerUser
}
)(Register);
export default compose(
connect(
mapStateToProps,
{
registerUser,
authLocation
}
),
withRouter)
(Register)