Sindbad~EG File Manager
from core import app
from flask import url_for, session, redirect,request,flash
from datetime import datetime, date, time, timedelta
from functools import wraps
from core.library.auth import Auth
from core.model.UserModel import UserModel
import flask
# Flask View decorators
class RouteGroup:
def login_required(f):
@wraps(f)
def wrap(*args, **kwargs):
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
# start
if session.get('conf_'+str(conf_id),None):
conf_data = session.get('conf_'+str(conf_id))
society_id = conf_data.get('society_id')
if conf_key == conf_data["conf_key"] :
pass
else:
return ("<html><h1>Invalid URL</h1></html>")
else:
conf = UserModel().get_confUserModel(conf_id,conf_key)
if conf :
session['conf_'+str(conf_id)] = conf
conf_data = session.get('conf_'+str(conf_id),None)
society_id = conf_data['society_id']
else :
return ("<html><h1>Invalid URL</h1></html>")
if session.get('login_'+str(society_id),None):
return f(*args, **kwargs)
else:
return redirect(url_for('user.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
# return f(*args, **kwargs)
# end
return wrap
def conf_required(f):
@wraps(f)
def wrap(*args, **kwargs):
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
# start
if session.get('conf_'+str(conf_id),None):
conf_data = session.get('conf_'+str(conf_id),None)
if conf_key == conf_data["conf_key"] :
app_style = UserModel().GetAppStyle(conf_id)
if app_style:
Auth.app_style(app_style,conf_id)
return f(*args, **kwargs)
else:
return ("<html><h1>Invalid URL</h1></html>")
else:
conf = UserModel().get_confUserModel(conf_id,conf_key)
if conf :
session['conf_'+str(conf_id)] = conf
conf_data = session.get('conf_'+str(conf_id),None)
if conf_key == conf_data["conf_key"] :
app_style = UserModel().GetAppStyle(conf_id)
if app_style:
Auth.app_style(app_style,conf_id)
return f(*args, **kwargs)
else:
return ("<html><h1>Invalid URL</h1></html>")
else :
return ("<html><h1>Invalid URL</h1></html>")
return wrap
def bologin_required(f):
@wraps(f)
def wrap(*args, **kwargs):
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
if session.get('conf_'+str(conf_id),None):
conf_data = session.get('conf_'+str(conf_id))
society_id = conf_data.get("society_id")
if conf_key == conf_data["conf_key"] :
pass
else:
return ("<html><h1>Invalid URL</h1></html>")
else :
conf_data = UserModel().get_confUserModel(conf_id,conf_key)
if conf_data :
society_id = conf_data["society_id"]
session['conf_'+str(conf_id)] = conf_data
if conf_key == conf_data["conf_key"] :
pass
else:
return ("<html><h1>Invalid URL</h1></html>")
else :
return ("<html><h1>Invalid URL</h1></html>")
user = session.get('login_'+str(society_id),None)
if user:
email = user.get('email')
bo_access = UserModel().check_bo_access(email,2,society_id,conf_id) # for check back office admin access
if bo_access and bo_access["is_admin"] == 1:
if user.get('is_trade') == 1:
flash('Page access denied','errorMsg')
return redirect(url_for('trade_reg.TradeIndex_user',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
else:
return f(*args, **kwargs)
# return f(*args, **kwargs)
else :
return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
else :
return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
return wrap
def bo_trade_login_required(f):
@wraps(f)
def wrap(*args, **kwargs):
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
if session.get('conf_'+str(conf_id),None):
conf_data = session.get('conf_'+str(conf_id))
society_id = conf_data.get("society_id")
if conf_key == conf_data["conf_key"] :
pass
else:
return ("<html><h1>Invalid URL</h1></html>")
else :
conf_data = UserModel().get_confUserModel(conf_id,conf_key)
if conf_data :
society_id = conf_data["society_id"]
session['conf_'+str(conf_id)] = conf_data
if conf_key == conf_data["conf_key"] :
pass
else:
return ("<html><h1>Invalid URL</h1></html>")
else :
return ("<html><h1>Invalid URL</h1></html>")
user = session.get('login_'+str(society_id),None)
if user:
email = user.get('email')
bo_access = UserModel().check_bo_access(email,2,society_id,conf_id) # for check back office admin access
if bo_access and bo_access["is_admin"] == 1:
if user.get('is_trade') == 1:
return f(*args, **kwargs)
else:
flash('Page access denied','errorMsg')
return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
else :
return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
else :
return redirect(url_for('back_office.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
return wrap
def view_delegates_login_required(f):
@wraps(f)
def wrap(*args, **kwargs):
# if user is not logged in, redirect to login page
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
conf_data = Auth.getConf(conf_id,conf_key)
society_id = conf_data['society_id']
if Auth.view_delegate_check(society_id):
return f(*args, **kwargs)
else:
return redirect(url_for('view_del_list.ViewDeleateListGetLogin',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
return wrap
def profile_required(f):
@wraps(f)
def wrap(*args, **kwargs):
is_profile_update = False
conf_id = request.view_args['conf_id']
conf_key = request.view_args['conf_key']
now = datetime.now()
curr_dt = now.strftime("%Y-%m-%d %H:%M:%S")
conf = Auth.getConf(conf_id,conf_key)
society_id = conf["society_id"] or None
user_data = session.get('login_'+str(society_id),None)
member_type_id = user_data["member_type_id"] or None
user_id = user_data["user_id"] or None
result = UserModel().get_users_valueUserModel(user_id,society_id,conf_id)
profile_updated_at = result["profile_updated_at"] or None
app_url = result["app_url"] or None
user_uuid = user_data["user_uuid"] or None
if int(conf_id) == 52:
if member_type_id in [1,17,20]:
profile_update_url = "https://profile.kosonline.org/{}/{}/at/app/{}?r_url='{}'".format(society_id,conf['society_key'],user_uuid,app_url)
if profile_updated_at:
years_to_add = profile_updated_at.year + 1
current_dt = now.strftime('%Y-%m-%d')
profile_updated_at_date = profile_updated_at.replace(year=years_to_add).strftime('%Y-%m-%d')
if current_dt <= profile_updated_at_date:
is_profile_update = False
else:
is_profile_update = True
else:
is_profile_update = True
else:
is_profile_update = False
else:
is_profile_update = False
if is_profile_update:
return flask.redirect(profile_update_url)
else:
return f(*args, **kwargs)
return wrap
# def logout_required(f):
# @wraps(f)
# def wrap(*args, **kwargs):
# # if user is not logged in, redirect to login page
# if Auth.check():
# return f(*args, **kwargs)
# else:
# return redirect(url_for('user.Home',conf_id=request.view_args['conf_id'],conf_key=request.view_args['conf_key']))
# return wrap
def bo_login_required(f):
@wraps(f)
def wrap(*args, **kwargs):
# if user is not logged in, redirect to login page
if session.get('backoffice'):
return f(*args, **kwargs)
else:
return redirect(url_for('backoffice.BOLogin'))
return wrap
# def profile_required(f):
# @wraps(f)
# def wrap(*args, **kwargs):
# u=User()
# user = session.get('user')
# user_id = user.get('user_id')
# user = User().get_user(user_id)
# is_profile_update = user.get('is_profile_update')
# print(str(is_profile_update))
# # return str(is_profile_update)
# if is_profile_update != 1 :
# return redirect(url_for('user.UserProfile',user_id= user_id))
# else :
# return f(*args, **kwargs)
# return wrap
# def payment_required(f):
# @wraps(f)
# def wrap(*args, **kwargs):
# p = Payment()
# user = session.get('user')
# user_id = user.get('user_id')
# checkpayment = p.checkuserinpayment(user_id)
# # return len(checkpayment)
# if (len(checkpayment)) == 1 :
# return f(*args, **kwargs)
# else:
# return redirect(url_for('payupayment.payment'))
# return wrap
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists