Added first files for admin and login/signup in admin
This commit is contained in:
parent
e0ed00af8c
commit
d9b62719d7
139 changed files with 18408 additions and 4 deletions
177
paramecio2/modules/admin/app.py
Normal file
177
paramecio2/modules/admin/app.py
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
from flask import Blueprint, redirect, session, url_for, request, g, make_response
|
||||
from settings import config
|
||||
from paramecio2.libraries.mtemplates import PTemplate, env_theme
|
||||
from paramecio2.libraries.i18n import I18n
|
||||
from paramecio2.libraries.formsutils import show_form, generate_csrf, set_extra_forms_user, pass_values_to_form
|
||||
from paramecio2.libraries.db.webmodel import WebModel
|
||||
from paramecio2.modules.admin.models.admin import UserAdmin
|
||||
from paramecio2.libraries.keyutils import create_key_encrypt
|
||||
|
||||
env=env_theme(__file__)
|
||||
|
||||
t=PTemplate(env)
|
||||
|
||||
yes_recovery_login=False
|
||||
email_address='localhost'
|
||||
|
||||
if hasattr(config, 'yes_recovery_login'):
|
||||
yes_recovery_login=config.yes_recovery_login
|
||||
|
||||
if hasattr(config, 'email_address'):
|
||||
email_address=config.email_address
|
||||
|
||||
|
||||
admin_app=Blueprint('admin_app', __name__, static_folder='static')
|
||||
|
||||
@admin_app.before_request
|
||||
def admin_prepare():
|
||||
|
||||
g.connection=WebModel.connection()
|
||||
|
||||
if request.endpoint!='admin_app.login' and request.endpoint!='admin_app.signup':
|
||||
if 'login_admin' not in session:
|
||||
return redirect(url_for('admin_app.login'))
|
||||
|
||||
@admin_app.after_request
|
||||
def admin_finished(response):
|
||||
|
||||
#print('pepe')
|
||||
|
||||
g.connection.close()
|
||||
|
||||
return response
|
||||
|
||||
# Load
|
||||
|
||||
@admin_app.route('/admin')
|
||||
@admin_app.route('/admin/<module>')
|
||||
def admin(module=''):
|
||||
|
||||
"""
|
||||
if 'login_admin' not in session:
|
||||
return redirect(url_for('admin_app.login'))
|
||||
"""
|
||||
|
||||
return t.load_template('home.phtml', title=I18n.lang('admin', 'paramecio_admin', 'Paramecio admin'))
|
||||
|
||||
@admin_app.route('/admin/logout')
|
||||
def logout():
|
||||
|
||||
return redirect(url_for('admin_app.login'))
|
||||
|
||||
@admin_app.route('/admin/login', methods=['GET', 'POST'])
|
||||
def login():
|
||||
|
||||
#connection=WebModel.connection()
|
||||
|
||||
user_admin=UserAdmin(g.connection)
|
||||
|
||||
user_admin.yes_repeat_password=False
|
||||
|
||||
user_admin.fields['password'].required=True
|
||||
|
||||
user_admin.create_forms(['username', 'password'])
|
||||
|
||||
c=user_admin.select_count()
|
||||
|
||||
if c==0:
|
||||
return redirect(url_for('admin_app.signup'))
|
||||
|
||||
post={}
|
||||
|
||||
if request.method=='POST':
|
||||
|
||||
username=request.form['username']
|
||||
|
||||
password=request.form['password']
|
||||
|
||||
arr_user=user_admin.set_conditions('WHERE username=%s', [username]).select_a_row_where()
|
||||
|
||||
if arr_user:
|
||||
|
||||
if user_admin.fields['password'].verify(password, arr_user['password']):
|
||||
|
||||
session['login_admin']=True
|
||||
|
||||
return {'error': 0}
|
||||
|
||||
else:
|
||||
|
||||
return {'error': 1, 'csrf_token': generate_csrf()}
|
||||
else:
|
||||
|
||||
return {'error': 1, 'csrf_token': generate_csrf()}
|
||||
|
||||
#if
|
||||
|
||||
else:
|
||||
|
||||
forms=show_form(post, user_admin.forms, t, yes_error=False)
|
||||
|
||||
return t.load_template('login.phtml', forms=forms, yes_recovery_login=yes_recovery_login)
|
||||
|
||||
@admin_app.route('/admin/signup', methods=['GET', 'POST'])
|
||||
def signup():
|
||||
|
||||
user_admin=UserAdmin(g.connection)
|
||||
|
||||
c=user_admin.select_count()
|
||||
|
||||
if c==0:
|
||||
|
||||
if request.method=='POST':
|
||||
|
||||
user_admin.conditions=['WHERE privileges=%s', [2]]
|
||||
|
||||
forms=dict(request.form)
|
||||
|
||||
forms['privileges']=2
|
||||
|
||||
user_admin.valid_fields=['username', 'email', 'password', 'privileges']
|
||||
|
||||
user_admin.create_forms()
|
||||
|
||||
if user_admin.insert(forms, False):
|
||||
|
||||
|
||||
|
||||
error= {'error': 0}
|
||||
|
||||
return error
|
||||
|
||||
else:
|
||||
|
||||
user_admin.check_all_fields(forms, False)
|
||||
|
||||
pass_values_to_form(forms, user_admin.forms, yes_error=True)
|
||||
|
||||
session['csrf_token']=create_key_encrypt()
|
||||
|
||||
error={'error': 1, 'csrf_token': session['csrf_token']}
|
||||
|
||||
for field in user_admin.valid_fields:
|
||||
|
||||
error[field]=user_admin.forms[field].txt_error
|
||||
|
||||
error['repeat_password']=user_admin.forms['repeat_password'].txt_error
|
||||
|
||||
return error
|
||||
|
||||
else:
|
||||
|
||||
post={}
|
||||
|
||||
set_extra_forms_user(user_admin)
|
||||
|
||||
forms=show_form(post, user_admin.forms, t, yes_error=False)
|
||||
|
||||
return t.load_template('register.phtml', forms=forms)
|
||||
|
||||
else:
|
||||
|
||||
return redirect(url_for('.login'))
|
||||
|
||||
@admin_app.route('/admin/recovery_password')
|
||||
def recovery_password():
|
||||
|
||||
return ""
|
||||
Loading…
Add table
Add a link
Reference in a new issue