Compare commits

...

2 Commits

Author SHA1 Message Date
c91fdad70b Correct 2024-03-31 01:41:03 +01:00
5ccf91701f Correction on signup 2024-03-31 01:37:25 +01:00
7 changed files with 53 additions and 86 deletions

View File

@ -9,8 +9,8 @@ function animation() {
x[0].style.animation = "disparition 0.2s 1";
}
window.setTimeout(divhider, 2200);
window.setTimeout(animation, 2000);
window.setTimeout(divhider, 8800);
window.setTimeout(animation, 8000);
let darkBoxVisible = false;

View File

@ -28,7 +28,9 @@
<br/>
<strong> Site en construction permanente. </strong></p>
<br>
<p class="lead">
{% include '_flash_msgs.html' %}
<p class="lead">
<form method="POST" action="{{ url_for('loginlogout.login') }}">
<input type="text" name="user" id="user" placeholder="Utilisateur" class="form-control" width="200px"><br />
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe" class="form-control"><br />
@ -38,24 +40,12 @@
</p>
</div>
</div>
</div>
</div>
{# on affiche les messages d'erreur puis les messages de succes #}
{% for categorie in ['error', 'succes'] %}
{% with msgs = get_flashed_messages(category_filter=[categorie]) %}
{% if msgs %}
<div class="flashed {{ categorie }}">
{% for m in msgs %}
<p>{{ m|safe }}</p>
{% endfor %}
</div>
{% endif %}
{% endwith %}
{% endfor %}
{% endblock %}

View File

@ -25,26 +25,24 @@
<div class="inner cover">
<h1 class="cover-heading">Inscription</h1>
<br>
{% include '_flash_msgs.html' %}
{% if signin_enable %}
<form method="POST" class="form-horizontal" action="{{ url_inscription }}">
<h4> Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter </h4>
<input type="text" name="user" id="user" placeholder="Pseudo" class="form-control"><br />
{% if MAIL_SERVER or XMPP_SERVER %}
<h4> Choisissez votre adresse sur ce serveur (Entrez juste le nom pas besoin de préciser le domaine) </h4>
<p> Par exemple vous voulez toto@{{hostname}}; vous entrez juste toto :) </p>
<div class="form-group">
<div class="col-sm-7">
<input type="text" name="mail" id="mail" placeholder="Adresse mail" class="form-control">
</div>
<label class="control-label col-sm-2" for="pwd">@{{ hostname }}</label>
</div>
{% endif %}
<p>
Votre nom d'utilisateur vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP)
Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le nom d'utilisateur toto :)
</p>
{% endif %}
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe" class="form-control"><br />
<input type="password" name="passwdconfirm" id="passwdconfirm" placeholder="Confirmation du mot de passe" class="form-control"><br />
<br>
<button id="tada" class="btn btn-default btn-primary" type="submit">Envoyer</button>
<button id="tada" class="btn btn-default btn-primary" type="submit">Créer mon compte</button>
</form>
{% else %}
<p class="lead">
@ -56,20 +54,6 @@
{% endfor %}
</div>
<div class="msginfo">
{# On affiche les messages d'erreur puis les messages de succés #}
{% for categorie in ['error', 'succes'] %}
{% with msgs = get_flashed_messages(category_filter=[categorie]) %}
{% if msgs %}
<div class="flashed {{ categorie }}">
{% for m in msgs %}
<p>{{ m|safe }}</p>
{% endfor %}
</div>
{% endif %}
{% endwith %}
{% endfor %}
</div>
<div class="mastfoot">
<div class="inner">

View File

@ -9,9 +9,11 @@
<div class="col-sm-3"></div>
<div class="col-sm-6">
<br />
<div class="well">Ici, vous pouvez envoyer des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique <a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a>. Les images envoyées, quand à elles se retrouveront directement dans la <a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a>.<br>Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.</div>
<br />
<div class="panel panel-primary">
<div class="well">Ici, vous pouvez envoyer des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique <a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a>. Les images envoyées, quand à elles se retrouveront directement dans la <a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a>.<br>Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.
</div>
<br />
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Choisissez un ou plusieurs fichiers à uploader</h3>
</div>
@ -39,13 +41,11 @@
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--<script src="https://en.lichess.org/training/embed?theme=blue3&bg=auto"></script>
<script src="https://en.lichess.org/tv/embed?theme=blue2&bg=dark"></script>-->

View File

@ -23,6 +23,17 @@ def append_to_log(log_line, user):
log.close()
def valid_username(username):
valid=True
# Caractères non autorisés dans la RFC #822
invalid_char = { '(', ')', '<', '>', ',', ';', ':', '"', '[', ']', '|', 'ç', '%', '&', ' ' }
for character in invalid_char:
if character in username:
valid=False
return valid
def email_disp(email):
disp = True
@ -31,13 +42,6 @@ def email_disp(email):
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
cursor = conn.cursor() # Création de l'objet "curseur"
# Caractères non autorisés dans la RFC #822
invalid_char = { '(', ')', '<', '>', ',', ';', ':', '"', '[', ']', '|', 'ç', '%', '&' }
for character in invalid_char:
if character in email:
disp=False
cursor.execute("""SELECT mail FROM users WHERE mail=?""", (email,))
testmail = cursor.fetchall()
if testmail and disp:

View File

@ -3,7 +3,7 @@ from flask_bcrypt import Bcrypt
import sqlite3
import glob, os, sys, time
from tools.utils import email_disp, valid_token_register, valid_passwd
from tools.utils import email_disp, valid_token_register, valid_passwd, valid_username
from socket import gethostname
app = Flask( 'pywallter' )
@ -30,7 +30,7 @@ inscription = Blueprint('inscription', __name__, template_folder='templates')
@inscription.route( '/inscription/<token>', methods=['GET','POST'] )
def signin(token) :
hostname = gethostname()
url_inscription = BASE_URL+'inscription/'+token
url_inscription = url_for('loginlogout.index', _external=True)+'inscription/'+token
resp = None
if valid_token_register(token):
if 'username' in session :
@ -48,32 +48,20 @@ def signin(token) :
if request.method == 'POST':
#On test si aucun champs du formulaire n'est vide.
if MAIL_SERVER:
if len(request.form['user']) == 0 or \
len(request.form['passwd']) == 0 or \
len(request.form['passwdconfirm']) == 0 or \
len(request.form['mail']) == 0 :
flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error')
return render_template('inscription.html',
signin_enable=app.config['SIGNIN_ENABLE'],
token=token, hostname=hostname,
url_inscription=url_inscription,
MAIL_SERVER=MAIL_SERVER, XMPP_SEVER=XMPP_SERVER)
else:
if len(request.form['user']) == 0 or \
len(request.form['passwd']) == 0 or \
len(request.form['passwdconfirm']) == 0:
if len(request.form['user']) == 0 or \
len(request.form['passwd']) == 0 or \
len(request.form['passwdconfirm']) == 0:
flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error')
return render_template('inscription.html',
signin_enable=app.config['SIGNIN_ENABLE'],
token=token, hostname=hostname,
url_inscription=url_inscription,
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error')
return render_template('inscription.html',
signin_enable=app.config['SIGNIN_ENABLE'],
token=token, hostname=hostname,
url_inscription=url_inscription,
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
user = request.form['user']
passwd = request.form['passwd']
mail = user+'@'+hostname
passwdconfirm = request.form['passwdconfirm']
bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd'])
mail_passwd_change = 0
@ -88,8 +76,9 @@ def signin(token) :
testuser = cursor.fetchone()
conn.close()
if testuser:
flash(u'Non d\'utilisateur déjà utilisé, merci d\'en choisir un autre', 'error')
if testuser and valid_username(user):
flash(u'Non d\'utilisateur déjà utilisé ou contient des caractères invalides, merci d\'en choisir un autre', 'error')
flash(u'Les caractères espaces et \' ( ) < > , ; : " [ ] | ç % & ne sont pas autorisés', 'error')
not_error = False
if not(password_valid):
@ -97,9 +86,9 @@ def signin(token) :
not_error = False
if MAIL_SERVER:
mail = request.form['mail'].lower()+'@'+hostname
mail = user.lower()+'@'+hostname
if not(email_disp(mail)) :
flash(u'Adresse email déjà utilisé ou invalide, merci d\'en choisir une autre', 'error')
flash(u'Cette Adresse email est déjà utilisée , merci d\'en choisir une autre', 'error')
not_error = False
if not_error:

View File

@ -42,12 +42,12 @@ def login() :
conn.close()
password = request.form['passwd']
for user in users:
print (user[0])
passwd = str(user[1] )
print ( passwd[2:(len(passwd)-1 )] )
if user[0] == request.form['user'] and bcrypt.check_password_hash(user[1], password) is True:
session['username'] = request.form['user']
resp = redirect(url_for('profil.profile', _external=True))
else:
flash(u'Mauvais nom d\'utilisateur ou mot de passe', 'error')
else:
resp = render_template('accueil.html', signin_enable=app.config['SIGNIN_ENABLE'])
return resp