mirror of
https://github.com/Michatec/MiniFaceBook.git
synced 2026-03-31 23:46:30 +02:00
Files
This commit is contained in:
66
routes/profile.py
Normal file
66
routes/profile.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from flask import Blueprint, render_template, redirect, url_for, flash, request
|
||||
from flask_login import login_required, current_user
|
||||
from models import db, User, Post
|
||||
from flask_babel import gettext as _
|
||||
from werkzeug.security import generate_password_hash
|
||||
import re
|
||||
|
||||
profile_bp = Blueprint('profil', __name__)
|
||||
|
||||
@profile_bp.route('/profile')
|
||||
@login_required
|
||||
def profile():
|
||||
return render_template('profile.html', user=current_user)
|
||||
|
||||
@profile_bp.route('/my_posts')
|
||||
@login_required
|
||||
def my_posts():
|
||||
posts = db.session.query(Post).filter_by(user_id=current_user.id).order_by(Post.created_at.desc()).all()
|
||||
return render_template('my_posts.html', posts=posts)
|
||||
|
||||
@profile_bp.route('/edit_profile', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
def edit_profile():
|
||||
if request.method == 'POST':
|
||||
new_username = request.form['username']
|
||||
new_email = request.form['email']
|
||||
new_password = request.form['password']
|
||||
confirm_password = request.form['confirm_password']
|
||||
if not current_user.username or not current_user.email:
|
||||
flash(_('Username and email cannot be empty.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
else:
|
||||
if new_username and new_username != current_user.username:
|
||||
if db.session.query(User).filter_by(username=new_username).first():
|
||||
flash(_('Username already taken.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
elif not re.match(r'^[a-zA-Z0-9_.+-]+$', new_username):
|
||||
flash(_('Invalid username. Only alphanumeric characters are allowed.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
else:
|
||||
current_user.username = new_username
|
||||
elif new_email and new_email != current_user.email:
|
||||
if not re.match(r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$', new_email):
|
||||
flash(_('Invalid email address.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
elif db.session.query(User).filter_by(email=new_email).first():
|
||||
flash(_('E-Mail already taken.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
else:
|
||||
current_user.email = new_email
|
||||
elif new_password:
|
||||
if len(new_password) < 8:
|
||||
flash(_('Password must be at least 8 characters long.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
elif new_password != confirm_password:
|
||||
flash(_('Passwords do not match.'), 'danger')
|
||||
return redirect(url_for('profile.edit_profile'))
|
||||
else:
|
||||
current_user.password = generate_password_hash(new_password, method='pbkdf2:sha256')
|
||||
else:
|
||||
flash(_('No changes made.'), 'info')
|
||||
return redirect(url_for('profil.profile'))
|
||||
db.session.commit()
|
||||
flash(_('Profile updated.'), 'success')
|
||||
return redirect(url_for('profil.profile'))
|
||||
return render_template('edit_profile.html', user=current_user)
|
||||
Reference in New Issue
Block a user