Correction on signup
This commit is contained in:
parent
f5901a2ed4
commit
5ccf91701f
@ -9,8 +9,8 @@ function animation() {
|
|||||||
x[0].style.animation = "disparition 0.2s 1";
|
x[0].style.animation = "disparition 0.2s 1";
|
||||||
}
|
}
|
||||||
|
|
||||||
window.setTimeout(divhider, 2200);
|
window.setTimeout(divhider, 8800);
|
||||||
window.setTimeout(animation, 2000);
|
window.setTimeout(animation, 8000);
|
||||||
|
|
||||||
let darkBoxVisible = false;
|
let darkBoxVisible = false;
|
||||||
|
|
||||||
|
@ -28,7 +28,9 @@
|
|||||||
<br/>
|
<br/>
|
||||||
<strong> Site en construction permanente. </strong></p>
|
<strong> Site en construction permanente. </strong></p>
|
||||||
<br>
|
<br>
|
||||||
<p class="lead">
|
|
||||||
|
{% include '_flash_msgs.html' %}
|
||||||
|
<p class="lead">
|
||||||
<form method="POST" action="{{ url_for('loginlogout.login') }}">
|
<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="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 />
|
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe" class="form-control"><br />
|
||||||
@ -38,24 +40,12 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</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 %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -25,26 +25,24 @@
|
|||||||
<div class="inner cover">
|
<div class="inner cover">
|
||||||
<h1 class="cover-heading">Inscription</h1>
|
<h1 class="cover-heading">Inscription</h1>
|
||||||
<br>
|
<br>
|
||||||
|
{% include '_flash_msgs.html' %}
|
||||||
|
|
||||||
{% if signin_enable %}
|
{% if signin_enable %}
|
||||||
<form method="POST" class="form-horizontal" action="{{ url_inscription }}">
|
<form method="POST" class="form-horizontal" action="{{ url_inscription }}">
|
||||||
<h4> Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter </h4>
|
<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 />
|
<input type="text" name="user" id="user" placeholder="Pseudo" class="form-control"><br />
|
||||||
{% if MAIL_SERVER or XMPP_SERVER %}
|
{% 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>
|
<p>
|
||||||
<div class="form-group">
|
Votre nom d'utilisateur vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP)
|
||||||
<div class="col-sm-7">
|
Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le nom d'utilisateur toto :)
|
||||||
<input type="text" name="mail" id="mail" placeholder="Adresse mail" class="form-control">
|
</p>
|
||||||
</div>
|
{% endif %}
|
||||||
<label class="control-label col-sm-2" for="pwd">@{{ hostname }}</label>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe" class="form-control"><br />
|
<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 />
|
<input type="password" name="passwdconfirm" id="passwdconfirm" placeholder="Confirmation du mot de passe" class="form-control"><br />
|
||||||
<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>
|
</form>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="lead">
|
<p class="lead">
|
||||||
@ -56,20 +54,6 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</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="mastfoot">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
|
@ -9,9 +9,11 @@
|
|||||||
<div class="col-sm-3"></div>
|
<div class="col-sm-3"></div>
|
||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<br />
|
<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>
|
<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.
|
||||||
<br />
|
</div>
|
||||||
<div class="panel panel-primary">
|
<br />
|
||||||
|
|
||||||
|
<div class="panel panel-primary">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title">Choisissez un ou plusieurs fichiers à uploader</h3>
|
<h3 class="panel-title">Choisissez un ou plusieurs fichiers à uploader</h3>
|
||||||
</div>
|
</div>
|
||||||
@ -39,13 +41,11 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</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>-->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,17 @@ def append_to_log(log_line, user):
|
|||||||
log.close()
|
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):
|
def email_disp(email):
|
||||||
disp = True
|
disp = True
|
||||||
@ -31,13 +42,6 @@ def email_disp(email):
|
|||||||
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
|
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
|
||||||
cursor = conn.cursor() # Création de l'objet "curseur"
|
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,))
|
cursor.execute("""SELECT mail FROM users WHERE mail=?""", (email,))
|
||||||
testmail = cursor.fetchall()
|
testmail = cursor.fetchall()
|
||||||
if testmail and disp:
|
if testmail and disp:
|
||||||
|
@ -3,7 +3,7 @@ from flask_bcrypt import Bcrypt
|
|||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import glob, os, sys, time
|
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
|
from socket import gethostname
|
||||||
|
|
||||||
app = Flask( 'pywallter' )
|
app = Flask( 'pywallter' )
|
||||||
@ -30,7 +30,7 @@ inscription = Blueprint('inscription', __name__, template_folder='templates')
|
|||||||
@inscription.route( '/inscription/<token>', methods=['GET','POST'] )
|
@inscription.route( '/inscription/<token>', methods=['GET','POST'] )
|
||||||
def signin(token) :
|
def signin(token) :
|
||||||
hostname = gethostname()
|
hostname = gethostname()
|
||||||
url_inscription = BASE_URL+'inscription/'+token
|
url_inscription = url_for('loginlogout.index', _external=True)+'inscription/'+token
|
||||||
resp = None
|
resp = None
|
||||||
if valid_token_register(token):
|
if valid_token_register(token):
|
||||||
if 'username' in session :
|
if 'username' in session :
|
||||||
@ -48,32 +48,20 @@ def signin(token) :
|
|||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
|
||||||
#On test si aucun champs du formulaire n'est vide.
|
#On test si aucun champs du formulaire n'est vide.
|
||||||
if MAIL_SERVER:
|
if len(request.form['user']) == 0 or \
|
||||||
if len(request.form['user']) == 0 or \
|
len(request.form['passwd']) == 0 or \
|
||||||
len(request.form['passwd']) == 0 or \
|
len(request.form['passwdconfirm']) == 0:
|
||||||
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:
|
|
||||||
|
|
||||||
flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error')
|
flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error')
|
||||||
return render_template('inscription.html',
|
return render_template('inscription.html',
|
||||||
signin_enable=app.config['SIGNIN_ENABLE'],
|
signin_enable=app.config['SIGNIN_ENABLE'],
|
||||||
token=token, hostname=hostname,
|
token=token, hostname=hostname,
|
||||||
url_inscription=url_inscription,
|
url_inscription=url_inscription,
|
||||||
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
|
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
|
||||||
|
|
||||||
|
|
||||||
user = request.form['user']
|
user = request.form['user']
|
||||||
passwd = request.form['passwd']
|
passwd = request.form['passwd']
|
||||||
mail = user+'@'+hostname
|
|
||||||
passwdconfirm = request.form['passwdconfirm']
|
passwdconfirm = request.form['passwdconfirm']
|
||||||
bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd'])
|
bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd'])
|
||||||
mail_passwd_change = 0
|
mail_passwd_change = 0
|
||||||
@ -88,8 +76,9 @@ def signin(token) :
|
|||||||
testuser = cursor.fetchone()
|
testuser = cursor.fetchone()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
if testuser:
|
if testuser and valid_username(user):
|
||||||
flash(u'Non d\'utilisateur déjà utilisé, merci d\'en choisir un autre', 'error')
|
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
|
not_error = False
|
||||||
|
|
||||||
if not(password_valid):
|
if not(password_valid):
|
||||||
@ -97,9 +86,9 @@ def signin(token) :
|
|||||||
not_error = False
|
not_error = False
|
||||||
|
|
||||||
if MAIL_SERVER:
|
if MAIL_SERVER:
|
||||||
mail = request.form['mail'].lower()+'@'+hostname
|
mail = user.lower()+'@'+hostname
|
||||||
if not(email_disp(mail)) :
|
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
|
not_error = False
|
||||||
|
|
||||||
if not_error:
|
if not_error:
|
||||||
|
@ -42,12 +42,12 @@ def login() :
|
|||||||
conn.close()
|
conn.close()
|
||||||
password = request.form['passwd']
|
password = request.form['passwd']
|
||||||
for user in users:
|
for user in users:
|
||||||
print (user[0])
|
|
||||||
passwd = str(user[1] )
|
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:
|
if user[0] == request.form['user'] and bcrypt.check_password_hash(user[1], password) is True:
|
||||||
session['username'] = request.form['user']
|
session['username'] = request.form['user']
|
||||||
resp = redirect(url_for('profil.profile', _external=True))
|
resp = redirect(url_for('profil.profile', _external=True))
|
||||||
|
else:
|
||||||
|
flash(u'Mauvais nom d\'utilisateur ou mot de passe', 'error')
|
||||||
else:
|
else:
|
||||||
resp = render_template('accueil.html', signin_enable=app.config['SIGNIN_ENABLE'])
|
resp = render_template('accueil.html', signin_enable=app.config['SIGNIN_ENABLE'])
|
||||||
return resp
|
return resp
|
||||||
|
@ -327,36 +327,42 @@ def delete_account():
|
|||||||
cursor = conn.cursor() # Création de l'objet "curseur"
|
cursor = conn.cursor() # Création de l'objet "curseur"
|
||||||
cursor.execute("""SELECT passwd FROM users WHERE name=?""", (UTILISATEUR,))
|
cursor.execute("""SELECT passwd FROM users WHERE name=?""", (UTILISATEUR,))
|
||||||
passwd = cursor.fetchone()[0]
|
passwd = cursor.fetchone()[0]
|
||||||
|
cursor.execute("""SELECT mail FROM users WHERE name=?""", (UTILISATEUR,))
|
||||||
|
mail = cursor.fetchone()[0]
|
||||||
conn.close()
|
conn.close()
|
||||||
password = request.form['passwd']
|
password = request.form['passwd']
|
||||||
if bcrypt.check_password_hash(passwd, password) is True:
|
if bcrypt.check_password_hash(passwd, password) is True:
|
||||||
not_error = True
|
not_error = True
|
||||||
try:
|
|
||||||
cmd = 'rm -r ' + DATAS_USER + '/' + UTILISATEUR
|
|
||||||
if system(cmd) != 0:
|
|
||||||
raise TypeError("Remove directory error")
|
|
||||||
except:
|
|
||||||
not_error = False
|
|
||||||
flash(u'Erreur lors de la suppression de votre dossier utilisateur.', 'error')
|
|
||||||
|
|
||||||
if MAIL_SERVER:
|
if MAIL_SERVER:
|
||||||
try:
|
try:
|
||||||
cmd = SETUID + ' set_mail_passwd del' + '"'+mail+'"'
|
cmd = SETUID + ' set_mail_passwd del ' + '"'+mail+'"'
|
||||||
system(cmd)
|
print(cmd)
|
||||||
|
os.system(cmd)
|
||||||
except:
|
except:
|
||||||
not_error = False
|
not_error = False
|
||||||
flash(u'Erreur lors de la suppression de votre compte Mail.', 'error')
|
flash(u'Erreur lors de la suppression de votre compte Mail.', 'error')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if XMPP_SERVER:
|
if XMPP_SERVER:
|
||||||
try:
|
try:
|
||||||
tmp = mail.split('@')
|
tmp = mail.split('@')
|
||||||
cmd = SETUID+ ' prosodyctl deluser ' "'"+tmp[0]+"' " + "'"+tmp[1]+"'"
|
cmd = SETUID+ ' prosodyctl deluser ' "'"+tmp[0]+"' " + "'"+tmp[1]+"'"
|
||||||
system(cmd)
|
os.system(cmd)
|
||||||
except:
|
except:
|
||||||
not_error = False
|
not_error = False
|
||||||
flash(u'Erreur lors de la suppression de votre compte XMPP.', 'error')
|
flash(u'Erreur lors de la suppression de votre compte XMPP.', 'error')
|
||||||
|
|
||||||
if not_error:
|
if not_error:
|
||||||
|
try:
|
||||||
|
cmd = 'rm -r ' + DATAS_USER + '/' + UTILISATEUR
|
||||||
|
if os.system(cmd) != 0:
|
||||||
|
raise TypeError("Remove directory error")
|
||||||
|
except:
|
||||||
|
flash(u'Erreur lors de la suppression de votre dossier utilisateur.', 'error')
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
conn = sqlite3.connect(DATABASE)
|
conn = sqlite3.connect(DATABASE)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
|
Loading…
Reference in New Issue
Block a user