Sindbad~EG File Manager

Current Path : /home/numerotech/workshops.numerotech.com/common_workshop_reg/core/library/
Upload File :
Current File : //home/numerotech/workshops.numerotech.com/common_workshop_reg/core/library/route_group.py

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