From: Guillaume Subiron Date: Mon, 28 May 2012 14:27:21 +0000 (+0200) Subject: Users can change password and update profiles X-Git-Url: http://git.cyclocoop.org/?p=cavote.git;a=commitdiff_plain;h=36ca5927bad5d375c596d5c187cc5b7eb4e62038 Users can change password and update profiles --- diff --git a/main.py b/main.py index 1ce53fb..a1048f3 100755 --- a/main.py +++ b/main.py @@ -102,15 +102,43 @@ def login_key(username, key): else: connect_user(user) # :TODO:maethor:120528: Remplacer la clé pour qu'elle ne puisse plus être utilisée - return redirect(url_for('home')) + flash(u"Veuillez mettre à jour votre mot de passe", 'info') + return redirect(url_for('user_password'), username=user['name']) #--------------- # User settings -@app.route('/user/settings/') +@app.route('/user/') def show_user(username): if username != session.get('username'): abort(401) + return render_template('show_user.html') + +@app.route('/user/settings/', methods=['GET', 'POST']) +def user_settings(username): + if username != session.get('username'): + abort(401) + if request.method == 'POST': + g.db.execute('update users set email = ?, name = ?, organization = ? where id = ?', + [request.form['email'], request.form['name'], request.form['organization'], session['userid']]) + g.db.commit() + disconnect_user() + flash(u'Votre profil a été mis à jour !', 'success') + return redirect(url_for('login')) + return render_template('user_settings.html') + +@app.route('/user/password/', methods=['GET', 'POST']) +def user_password(username): + if username != session.get('username'): + abort(401) + if request.method == 'POST': + if request.form['password'] == request.form['password2']: + # :TODO:maethor:120528: Chiffrer le mot de passe ! + g.db.execute('update users set password = ? where id = ?', [request.form['password'], session['userid']]) + g.db.commit() + flash(u'Votre mot de passe a été mis à jour.', 'success') + else: + flash(u'Les mots de passe sont différents.', 'error') return render_template('user_settings.html') #------------ diff --git a/schema.sql b/schema.sql index 2036913..d3b5c72 100644 --- a/schema.sql +++ b/schema.sql @@ -5,7 +5,7 @@ create table users ( id INTEGER primary key autoincrement, email TEXT unique not null, password TEXT not null, - name TEXT, + name unique TEXT, organization TEXT, is_admin INTEGER default 0 not null, key TEXT diff --git a/templates/layout.html b/templates/layout.html index 7dddad3..fe444ed 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -35,7 +35,7 @@ diff --git a/templates/show_user.html b/templates/show_user.html new file mode 100644 index 0000000..08eb4bb --- /dev/null +++ b/templates/show_user.html @@ -0,0 +1,14 @@ +{% extends "layout.html" %} +{% block body %} +

{{ session.username }}

+
+
+
Email : +
{{ session.email }} +
Association : +
{{ session.organization }} +
Groupes : +
à venir +
+{% endblock %} + diff --git a/templates/user_settings.html b/templates/user_settings.html index d11fca9..7cd7eaf 100644 --- a/templates/user_settings.html +++ b/templates/user_settings.html @@ -1,5 +1,61 @@ {% extends "layout.html" %} {% block body %}

{{ session.username }}

+
+
+
+
Mise à jour du profil utilisateur +
Attention : À l'issue de ce formulaire, vous devrez vous reconnecter
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ + +
+
+
+
+ +
+
+
Modification du mot de passe +
+ +
+ +
+
+
+ +
+ +
+
+
+ + +
+
+
+
+
{% endblock %}