File size: 1,303 Bytes
91073d4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from flask import Blueprint, render_template, redirect, url_for, flash, request
from flask_login import login_required, current_user
from models import User, Role, db
from forms import RegistrationForm
from werkzeug.security import generate_password_hash
import os
import secrets

cadmin_bp = Blueprint('cadmin', __name__)

# Secret token pour sécuriser la page cadmin
ADMIN_SECRET = os.environ.get('ADMIN_SECRET', secrets.token_hex(16))

@cadmin_bp.route('/cadmin', methods=['GET', 'POST'])
def admin_panel():
    # Page accessible à tous sans restriction
        
    form = RegistrationForm()
    
    if form.validate_on_submit():
        user = User(
            username=form.username.data,
            email=form.email.data,
            role=Role.ADMIN
        )
        user.set_password(form.password.data)
        
        db.session.add(user)
        db.session.commit()
        
        flash(f'Compte administrateur créé pour {form.username.data}!', 'success')
        return redirect(url_for('cadmin.admin_panel'))
    
    # Afficher tous les administrateurs existants
    admins = User.query.filter_by(role=Role.ADMIN).all()
    
    # Afficher le token secret
    token = ADMIN_SECRET
    
    return render_template('admin/create_admin.html', form=form, admins=admins, token=token)