Client - disable registration - fix #36
This commit is contained in:
parent
5b6a94fb85
commit
a7de5dd52c
@ -1,8 +1,8 @@
|
||||
export REACT_APP_API_URL = http://$(HOST):$(API_PORT)
|
||||
export REACT_APP_THUNDERFOREST_API_KEY=
|
||||
export REACT_APP_GPX_LIMIT_IMPORT=10
|
||||
export REACT_APP_ALLOW_REGISTRATION=true
|
||||
export WEATHER_API=
|
||||
export FT_ALLOW_REGISTRATION=true
|
||||
|
||||
# for dev env
|
||||
export CODACY_PROJECT_TOKEN=
|
||||
|
@ -1,8 +1,8 @@
|
||||
Features
|
||||
########
|
||||
|
||||
Features list
|
||||
~~~~~~~~~~~~~
|
||||
List
|
||||
~~~~
|
||||
- Account creation (only standard user, not admin)
|
||||
- 6 sports supported:
|
||||
- Cycling (Sport)
|
||||
@ -22,6 +22,7 @@ Features list
|
||||
- longest duration
|
||||
- maximum speed
|
||||
- Activities list and filter
|
||||
- User registration can be disabled.
|
||||
|
||||
**Notes:**
|
||||
|
||||
|
@ -46,7 +46,8 @@ Dev environment
|
||||
|
||||
- Update **Makefile.config** file if needed and copy/paste the
|
||||
**ThunderForest** and **Dark Sky** API keys value in
|
||||
**Makefile.custom.config** file (see example)
|
||||
**Makefile.custom.config** file (see example). User registration can
|
||||
also be disabled in **Makefile.custom.config**.
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
initialize the database:
|
||||
@ -82,7 +83,8 @@ Prod environment
|
||||
|
||||
- Update **Makefile.config** file if needed and copy/paste the
|
||||
**ThunderForest** and **Dark Sky** API keys value in
|
||||
**Makefile.custom.config** file (see example)
|
||||
**Makefile.custom.config** file (see example). User registration can
|
||||
also be disabled in **Makefile.custom.config**.
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
initialize the database:
|
||||
|
@ -75,7 +75,7 @@
|
||||
role="menu"
|
||||
aria-labelledby="dLabelLocalToc"><ul>
|
||||
<li><a class="reference internal" href="#">Features</a><ul>
|
||||
<li><a class="reference internal" href="#features-list">Features list</a></li>
|
||||
<li><a class="reference internal" href="#list">List</a></li>
|
||||
<li><a class="reference internal" href="#dashboard">Dashboard</a></li>
|
||||
<li><a class="reference internal" href="#activity-workout-detail">Activity/workout detail</a></li>
|
||||
<li><a class="reference internal" href="#activities-workouts-list">Activities/workouts list</a></li>
|
||||
@ -131,8 +131,8 @@
|
||||
|
||||
<div class="section" id="features">
|
||||
<h1>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="section" id="features-list">
|
||||
<h2>Features list<a class="headerlink" href="#features-list" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="list">
|
||||
<h2>List<a class="headerlink" href="#list" title="Permalink to this headline">¶</a></h2>
|
||||
<ul class="simple">
|
||||
<li><p>Account creation (only standard user, not admin)</p></li>
|
||||
<li><dl class="simple">
|
||||
@ -163,6 +163,7 @@
|
||||
</dl>
|
||||
</li>
|
||||
<li><p>Activities list and filter</p></li>
|
||||
<li><p>User registration can be disabled.</p></li>
|
||||
</ul>
|
||||
<p><strong>Notes:</strong></p>
|
||||
<ul class="simple">
|
||||
|
@ -160,7 +160,7 @@ Map</a>.</div>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="features.html">Features</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="features.html#features-list">Features list</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="features.html#list">List</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="features.html#dashboard">Dashboard</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="features.html#activity-workout-detail">Activity/workout detail</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="features.html#activities-workouts-list">Activities/workouts list</a></li>
|
||||
|
@ -191,7 +191,8 @@ $ <span class="nb">cd</span> FitTrackee
|
||||
<ul class="simple">
|
||||
<li><p>Update <strong>Makefile.config</strong> file if needed and copy/paste the
|
||||
<strong>ThunderForest</strong> and <strong>Dark Sky</strong> API keys value in
|
||||
<strong>Makefile.custom.config</strong> file (see example)</p></li>
|
||||
<strong>Makefile.custom.config</strong> file (see example). User registration can
|
||||
also be disabled in <strong>Makefile.custom.config</strong>.</p></li>
|
||||
<li><p>Install Python virtualenv, React and all related packages and
|
||||
initialize the database:</p></li>
|
||||
</ul>
|
||||
@ -226,7 +227,8 @@ $ <span class="nb">cd</span> FitTrackee
|
||||
<ul class="simple">
|
||||
<li><p>Update <strong>Makefile.config</strong> file if needed and copy/paste the
|
||||
<strong>ThunderForest</strong> and <strong>Dark Sky</strong> API keys value in
|
||||
<strong>Makefile.custom.config</strong> file (see example)</p></li>
|
||||
<strong>Makefile.custom.config</strong> file (see example). User registration can
|
||||
also be disabled in <strong>Makefile.custom.config</strong>.</p></li>
|
||||
<li><p>Install Python virtualenv, React and all related packages and
|
||||
initialize the database:</p></li>
|
||||
</ul>
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,8 +1,8 @@
|
||||
Features
|
||||
########
|
||||
|
||||
Features list
|
||||
~~~~~~~~~~~~~
|
||||
List
|
||||
~~~~
|
||||
- Account creation (only standard user, not admin)
|
||||
- 6 sports supported:
|
||||
- Cycling (Sport)
|
||||
@ -22,6 +22,7 @@ Features list
|
||||
- longest duration
|
||||
- maximum speed
|
||||
- Activities list and filter
|
||||
- User registration can be disabled.
|
||||
|
||||
**Notes:**
|
||||
|
||||
|
@ -46,7 +46,8 @@ Dev environment
|
||||
|
||||
- Update **Makefile.config** file if needed and copy/paste the
|
||||
**ThunderForest** and **Dark Sky** API keys value in
|
||||
**Makefile.custom.config** file (see example)
|
||||
**Makefile.custom.config** file (see example). User registration can
|
||||
also be disabled in **Makefile.custom.config**.
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
initialize the database:
|
||||
@ -82,7 +83,8 @@ Prod environment
|
||||
|
||||
- Update **Makefile.config** file if needed and copy/paste the
|
||||
**ThunderForest** and **Dark Sky** API keys value in
|
||||
**Makefile.custom.config** file (see example)
|
||||
**Makefile.custom.config** file (see example). User registration can
|
||||
also be disabled in **Makefile.custom.config**.
|
||||
|
||||
- Install Python virtualenv, React and all related packages and
|
||||
initialize the database:
|
||||
|
@ -17,7 +17,7 @@ class BaseConfig:
|
||||
PICTURE_ALLOWED_EXTENSIONS = {'jpg', 'png', 'gif'}
|
||||
ACTIVITY_ALLOWED_EXTENSIONS = {'gpx', 'zip'}
|
||||
REGISTRATION_ALLOWED = (
|
||||
False if os.getenv('FT_ALLOW_REGISTRATION') == "false" else True
|
||||
False if os.getenv('REACT_APP_ALLOW_REGISTRATION') == "false" else True
|
||||
)
|
||||
|
||||
|
||||
|
@ -13,6 +13,7 @@ os.environ["APP_SETTINGS"] = 'fittrackee_api.config.TestingConfig'
|
||||
@pytest.fixture
|
||||
def app():
|
||||
app = create_app()
|
||||
app.config['REGISTRATION_ALLOWED'] = True
|
||||
with app.app_context():
|
||||
db.create_all()
|
||||
yield app
|
||||
|
@ -1,6 +1,9 @@
|
||||
import React from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
|
||||
import { history } from '../../index'
|
||||
import { isRegistrationAllowed } from '../../utils'
|
||||
|
||||
export default function Form (props) {
|
||||
return (
|
||||
<div>
|
||||
@ -11,71 +14,85 @@ export default function Form (props) {
|
||||
{`${props.formType.charAt(0).toUpperCase()}${props.formType.slice(1)}`}
|
||||
</h1>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
<div className="col-md-3" />
|
||||
<div className="col-md-6">
|
||||
<hr /><br />
|
||||
<form onSubmit={event =>
|
||||
props.handleUserFormSubmit(event, props.formType)}
|
||||
>
|
||||
{props.formType === 'register' &&
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="username"
|
||||
placeholder="Enter a username"
|
||||
required
|
||||
type="text"
|
||||
value={props.userForm.username}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="email"
|
||||
placeholder="Enter an email address"
|
||||
required
|
||||
type="email"
|
||||
value={props.userForm.email}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="password"
|
||||
placeholder="Enter a password"
|
||||
required
|
||||
type="password"
|
||||
value={props.userForm.password}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
{props.formType === 'register' &&
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="password_conf"
|
||||
placeholder="Enter the password confirmation"
|
||||
required
|
||||
type="password"
|
||||
value={props.userForm.password_conf}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
<input
|
||||
type="submit"
|
||||
className="btn btn-primary btn-lg btn-block"
|
||||
value="Submit"
|
||||
/>
|
||||
</form>
|
||||
<div className="row">
|
||||
<div className="col-md-3" />
|
||||
<div className="col-md-6">
|
||||
<hr /><br />
|
||||
{props.formType === 'register' && !isRegistrationAllowed ? (
|
||||
<div className="card">
|
||||
<div className="card-body">Registration is disabled.</div>
|
||||
<div className="card-body">
|
||||
<button
|
||||
type="submit"
|
||||
className="btn btn-secondary btn-lg btn-block"
|
||||
onClick={() => history.go(-1)}
|
||||
>Back
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<form onSubmit={event =>
|
||||
props.handleUserFormSubmit(event, props.formType)}
|
||||
>
|
||||
{props.formType === 'register' &&
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="username"
|
||||
placeholder="Enter a username"
|
||||
required
|
||||
type="text"
|
||||
value={props.userForm.username}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="email"
|
||||
placeholder="Enter an email address"
|
||||
required
|
||||
type="email"
|
||||
value={props.userForm.email}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="password"
|
||||
placeholder="Enter a password"
|
||||
required
|
||||
type="password"
|
||||
value={props.userForm.password}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
{props.formType === 'register' &&
|
||||
<div className="form-group">
|
||||
<input
|
||||
className="form-control input-lg"
|
||||
name="password_conf"
|
||||
placeholder="Enter the password confirmation"
|
||||
required
|
||||
type="password"
|
||||
value={props.userForm.password_conf}
|
||||
onChange={props.onHandleFormChange}
|
||||
/>
|
||||
</div>
|
||||
}
|
||||
<input
|
||||
type="submit"
|
||||
className="btn btn-primary btn-lg btn-block"
|
||||
value="Submit"
|
||||
/>
|
||||
</form>
|
||||
)}
|
||||
</div>
|
||||
<div className="col-md-3" />
|
||||
</div>
|
||||
<div className="col-md-3" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ export const thunderforestApiKey = `${
|
||||
process.env.REACT_APP_THUNDERFOREST_API_KEY
|
||||
}`
|
||||
export const gpxLimit = `${process.env.REACT_APP_GPX_LIMIT_IMPORT}`
|
||||
export const isRegistrationAllowed =
|
||||
process.env.REACT_APP_ALLOW_REGISTRATION !== 'false'
|
||||
|
||||
export const isLoggedIn = () => !!window.localStorage.authToken
|
||||
|
||||
|
@ -1,2 +1,4 @@
|
||||
[pytest]
|
||||
norecursedirs = fittrackee_api/.venv
|
||||
filterwarnings =
|
||||
ignore::DeprecationWarning
|
||||
|
Loading…
Reference in New Issue
Block a user