diff --git a/app/__init__.py b/app/__init__.py index aef0c2b69986b21ead737e6326c7673e1162ff1c..cf5442ecac2a274871743966a87cff2a3e87e1dc 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -10,7 +10,7 @@ import logging db = SQLAlchemy() logger = logging.getLogger(__name__) login_manager = LoginManager() -login_manager.login_view = 'auth.login' +login_manager.login_view = 'main.index' mail = Mail() socketio = SocketIO() diff --git a/app/auth/forms.py b/app/auth/forms.py index b366c05e541e15a7bdcbd159eb5d74fff8b8b909..7f8d1141e2a5884d19fee82ef2cbeba7807035fc 100644 --- a/app/auth/forms.py +++ b/app/auth/forms.py @@ -35,10 +35,8 @@ class RegistrationForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) username = StringField( 'Username', - validators=[DataRequired(), - Length(1, 64), - Regexp('^[A-Za-z][A-Za-z0-9_.]*$', - 0, + validators=[DataRequired(), Length(1, 64), + Regexp('^[A-Za-z][A-Za-z0-9_.]*$', 0, 'Usernames must have only letters, numbers, dots ' 'or underscores')] ) diff --git a/app/auth/views.py b/app/auth/views.py index 37f054e7c1c2af7380dfacb0185968baa88833dd..5ed21377e656314d26a5854611f40766ed3773ba 100644 --- a/app/auth/views.py +++ b/app/auth/views.py @@ -22,15 +22,14 @@ def logout(): def register(): if not current_user.is_anonymous: return redirect(url_for('main.dashboard')) - registration_form = RegistrationForm() + registration_form = RegistrationForm(prefix='registration-form') if registration_form.validate_on_submit(): user = User(email=registration_form.email.data.lower(), password=registration_form.password.data, username=registration_form.username.data) db.session.add(user) db.session.commit() - dir = os.path.join(current_app.config['NOPAQUE_STORAGE'], - str(user.id)) + dir = os.path.join(current_app.config['NOPAQUE_STORAGE'], str(user.id)) try: os.makedirs(dir) except OSError: @@ -41,8 +40,9 @@ def register(): send_email(user.email, 'Confirm Your Account', 'auth/email/confirm', token=token, user=user) flash('A confirmation email has been sent to you by email.') - return redirect(url_for('auth.login')) - return render_template('auth/register.html.j2', form=registration_form, + return redirect(url_for('main.index')) + return render_template('auth/register.html.j2', + registration_form=registration_form, title='Register') @@ -108,7 +108,7 @@ def password_reset_request(): user=user) flash('An email with instructions to reset your password has been ' 'sent to you.') - return redirect(url_for('auth.login')) + return redirect(url_for('main.index')) return render_template('auth/reset_password_request.html.j2', form=form, title='Password Reset') @@ -123,7 +123,7 @@ def password_reset(token): if User.reset_password(token, form.password.data): db.session.commit() flash('Your password has been updated.') - return redirect(url_for('auth.login')) + return redirect(url_for('main.index')) else: return redirect(url_for('main.index')) return render_template('auth/reset_password.html.j2', diff --git a/app/templates/auth/login.html.j2 b/app/templates/auth/login.html.j2 deleted file mode 100644 index 73e4aeac81a3d54f380ef6a3f48d52f4d8db74f8..0000000000000000000000000000000000000000 --- a/app/templates/auth/login.html.j2 +++ /dev/null @@ -1,49 +0,0 @@ -{% extends "nopaque.html.j2" %} - -{% set full_width = False %} -{% set roadmap = False %} - -{% block page_content %} -<div class="col s12 m4"> - <h3>New to Opaque?</h3> - <p>It's free to join and easy to use. Continue on to our registration page to create your Opaque account.</p> - <p><a href="{{ url_for('auth.register') }}" class="waves-effect waves-light btn">Registration</a> -</div> - -<div class="col s12 m8"> - <div class="card small"> - <form method="POST"> - <div class="card-content"> - {{ form.hidden_tag() }} - <div class="input-field"> - <i class="material-icons prefix">person</i> - {{ form.login(class='validate', placeholder='Email address or username') }} - {{ form.login.label }} - {% for error in form.login.errors %} - <span class="helper-text red-text">{{ error }}</span> - {% endfor %} - </div> - <div class="input-field"> - <i class="material-icons prefix">vpn_key</i> - {{ form.password(class='validate') }} - {{ form.password.label }} - {% for error in form.password.errors %} - <span class="helper-text red-text">{{ error }}</span> - {% endfor %} - </div> - <a href="{{ url_for('auth.password_reset_request') }}" class="left">Forgot your password?</a> - <div class="switch right"> - <label> - Remember me - {{ form.remember_me() }} - <span class="lever"></span> - </label> - </div> - </div> - <div class="card-action"> - {{ form.submit(class='btn right') }} - </div> - </form> - </div> -</div> -{% endblock %} diff --git a/app/templates/auth/register.html.j2 b/app/templates/auth/register.html.j2 index 05ee6e0e6863d30ff202011b9701eaee34e15abe..c4f3abc5b52a7450bcb360bdb84a2f8ca8bf663a 100644 --- a/app/templates/auth/register.html.j2 +++ b/app/templates/auth/register.html.j2 @@ -5,50 +5,50 @@ {% block page_content %} <div class="col s12 m4"> - <h3> </h3> - <img src="{{ url_for('static', filename='images/logo_sfb_1288.png') }}" class="responsive-img"> + <h3>DSGVO</h3> + <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> </div> <div class="col s12 m8"> <div class="card"> <form method="POST"> <div class="card-content"> - {{ form.hidden_tag() }} + {{ registration_form.hidden_tag() }} <div class="input-field"> <i class="material-icons prefix">person</i> - {{ form.username(class='validate', data_length='64') }} - {{ form.username.label }} - {% for error in form.username.errors %} + {{ registration_form.username(class='validate', data_length='64') }} + {{ registration_form.username.label }} + {% for error in registration_form.username.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> <div class="input-field"> <i class="material-icons prefix">vpn_key</i> - {{ form.password(class='validate') }} - {{ form.password.label }} - {% for error in form.password.errors %} + {{ registration_form.password(class='validate') }} + {{ registration_form.password.label }} + {% for error in registration_form.password.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> <div class="input-field"> <i class="material-icons prefix">vpn_key</i> - {{ form.password2(class='validate') }} - {{ form.password2.label }} - {% for error in form.password2.errors %} + {{ registration_form.password2(class='validate') }} + {{ registration_form.password2.label }} + {% for error in registration_form.password2.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> <div class="input-field "> <i class="material-icons prefix">email</i> - {{ form.email(class='validate', type='email') }} - {{ form.email.label }} - {% for error in form.email.errors %} + {{ registration_form.email(class='validate', type='email') }} + {{ registration_form.email.label }} + {% for error in registration_form.email.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> </div> <div class="card-action right-align"> - {{ form.submit(class='btn') }} + <button class="btn waves-effect waves-light" id="registration-form-submit" name="registration-form-submit" type="submit">Register<i class="material-icons right">send</i></button> </div> </form> </div> diff --git a/app/templates/main/index.html.j2 b/app/templates/main/index.html.j2 index 672794a29e07c3ba71fdab3360f4f8c97bbe7131..c45f7f8fb0035cecbfd602a680292c3f5602ad5e 100644 --- a/app/templates/main/index.html.j2 +++ b/app/templates/main/index.html.j2 @@ -7,7 +7,8 @@ {% if current_user.is_anonymous %} <div class="col s12 m4"> <h3>No account?</h3> - <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,</p> + <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p> + <p> </p> <a class="btn" href="{{ url_for('auth.register') }}"><i class="material-icons left">person_add</i>Register</a> </div> @@ -57,74 +58,70 @@ {% endif %} <div class="col s12"> - <p> </p> + <h3> </h3> </div> -<div class="col s4 center-align"> - <i class="large material-icons" style="color: #ee6e73;">flash_on</i> - <p>Speeds up your work</p> - <p class="light">All tools provided by nopaque are carefully selected to provide a complete tool suite without delaying compatibility issues.</p> -</div> -<div class="col s4 center-align"> - <i class="large material-icons" style="color: #ee6e73;">group</i> - <p>User Experience Focused</p> - <p class="light">By utilizing elements and principles of Material Design, we were able to create a framework that focuses on User Experience.</p> -</div> -<div class="col s4 center-align"> - <i class="large material-icons" style="color: #ee6e73;">settings</i> - <p>Easy to work with</p> - <p class="light">We have provided detailed documentation as well as specific code examples to help new users get started.</p> +<div class="col s12 l10 offset-l1"> + <div class="row"> + <div class="col s3 center-align"> + <i class="large material-icons" style="color: #ee6e73;">flash_on</i> + <p>Speeds up your work</p> + <p class="light">All tools provided by nopaque are carefully selected to provide a complete tool suite without delaying compatibility issues.</p> + </div> + <div class="col s3 center-align"> + <i class="large material-icons" style="color: #ee6e73;">cloud</i> + <p>Cloud infrastructure</p> + <p class="light">All computational work is processed within nopaques cloud infrastructure. You don't need to install any software, great right?</p> + </div> + <div class="col s3 center-align"> + <i class="large material-icons" style="color: #ee6e73;">group</i> + <p>User Experience Focused</p> + <p class="light">By utilizing elements and principles of Material Design, we were able to create a framework that focuses on User Experience.</p> + </div> + <div class="col s3 center-align"> + <i class="large material-icons" style="color: #ee6e73;">settings</i> + <p>Easy to work with</p> + <p class="light">We have provided detailed documentation as well as specific code examples to help new users get started.</p> + </div> + </div> </div> -<div class="col s12"> +<div class="col s12 m4"> <h3>Processes and Services</h3> + <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.</p> </div> -<div class="col s12 m6 l3"> - <div class="card"> - <div class="card-content"> - <div class="center-align"> - <i class="large material-icons">burst_mode</i> - <span class="card-title">File setup<span class="hide-on-small-only"><br><br></span></span> - </div> +<div class="col s12 m8"> + <br class="hide-on-small-only"> + <ul class="collection"> + <li class="collection-item avatar"> + <i class="circle material-icons">burst_mode</i> + <span class="title">File setup</span> <p class="light">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> - </div> - </div> -</div> - -<div class="col s12 m6 l3"> - <div class="card"> - <div class="card-content"> - <div class="center-align"> - <i class="large material-icons">find_in_page</i> - <span class="card-title">Optical Character Recognition</span> - </div> + <a href="#!" class="secondary-content"><i class="material-icons">help</i></a> + </li> + <li class="collection-item avatar"> + <i class="circle material-icons">find_in_page</i> + <span class="title">Optical Character Recognition</span> <p class="light">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> - </div> - </div> -</div> - -<div class="col s12 m6 l3"> - <div class="card"> - <div class="card-content"> - <div class="center-align"> - <i class="large material-icons">format_textdirection_l_to_r</i> - <span class="card-title">Natural Language Processing</span> - </div> + <a href="#!" class="secondary-content"><i class="material-icons">help</i></a> + </li> + <li class="collection-item avatar"> + <i class="circle material-icons">format_textdirection_l_to_r</i> + <span class="title">Natural Language Processing</span> <p class="light">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> - </div> - </div> + <a href="#!" class="secondary-content"><i class="material-icons">help</i></a> + </li> + <li class="collection-item avatar"> + <i class="circle material-icons">search</i> + <span class="title">Corpus analysis</span> + <p class="light">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> + <a href="#!" class="secondary-content"><i class="material-icons">help</i></a> + </li> + </ul> </div> -<div class="col s12 m6 l3"> - <div class="card"> - <div class="card-content"> - <div class="center-align"> - <i class="large material-icons">search</i> - <span class="card-title">Corpus analysis<span class="hide-on-small-only"><br><br></span></span> - </div> - <p class="light">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p> - </div> - </div> +<div class="col s12"> + <h3>Get things done with nopaque</h3> </div> {% endblock %}