Sindbad~EG File Manager
from dataclasses import dataclass
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json
import datetime
from datetime import timedelta,date,datetime
from .. import Cryptography,Auth,RouteGroup,Helper
from core.library.email import EMAIL
from core.model.UserModel import UserModel
from urllib.parse import unquote
import random
import os
from os import path
import logging
from werkzeug.utils import secure_filename
from os.path import join, dirname, realpath
import boto3, botocore
from botocore.exceptions import ClientError
import math, random
import time
import datetime
from urllib.parse import unquote
from collections import defaultdict
from core.library.helper import Helper
from datetime import timedelta,date,datetime
app = Blueprint('user', __name__)
# bucketname = "test-memberapp"
@app.route('test',methods = ["GET", "POST"])
def Test():
x = request.host.split(".")
return str("."+x[1]+"."+x[2])
@app.route('/',methods = ["GET", "POST"])
@app.route('/login',methods = ["GET", "POST"])
def Home_index():
host = request.host
host_data = UserModel().get_society_by_host(host)
if host_data:
return redirect(url_for("user.Home",society_id=host_data["society_id"],society_key=host_data["society_key"]))
else:
return "Application not found"
@app.route('/<int:society_id>/<society_key>',methods = ["GET", "POST"])
@RouteGroup.society_required
def Home(society_id,society_key):
Auth.checkSocietybyIdKey(society_id,society_key)
if Auth.check(society_id):
user_id = Auth.user(society_id).get("user_id")
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=user_id))
else:
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
@app.route('/<int:society_id>/<society_key>/login',methods = ["GET", "POST"])
@RouteGroup.society_required
def Login(society_id,society_key):
society = UserModel().get_society(society_id)
if Auth.check(society_id):
user_id = Auth.user(society_id).get("user_id")
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=user_id))
else:
return render_template('user/login.html',society_id=society_id,society_key=society_key,society=society)
@app.route('/<society_id>/<society_key>/post_login', methods = ["GET","POST"])
@RouteGroup.society_required
def PostLogin(society_id,society_key):
if request.method == "POST":
otp_email = request.form.get('otp_mail' or None)
email = request.form.get('email' or None)
password = request.form.get('password' or None)
society_data = Auth.getSociety(society_id)
if otp_email:
user_output = UserModel().get_userdata(otp_email,society_id)
if user_output :
user_id = user_output["user_id"]
SendOtpMail(user_id,society_id)
user_id = Cryptography.encrypt(int(user_id))
return redirect(url_for('user.OtpPage',user_id=user_id,society_id=society_id,society_key=society_key))
else:
flash("Email id is not registered.<br/>If you are a member, please login with the email id associated with your membership record. Or if you are a non-member. Please <a href="+ url_for('user.New_User',society_id=society_id,society_key=society_key) +">click here</a> to create a new registration. <br/><br/> For any assistance, please wrote to <b><a href='mailto:"+ society_data['e_support_mail']+"'>"+society_data['e_support_mail']+"</a></b> and get a response in one working day.","errorMsg" )
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
if email or password:
user_output = UserModel().get_userdata(email,society_id)
if user_output :
db_pass = user_output['password']
if password == db_pass:
user_id = user_output['user_id']
email = user_output["email"]
bo_access = UserModel().check_bo_access(email,None,society_id,None)
user_output["is_admin"] = bo_access["is_admin"]
user_output["admin_type"] = bo_access["admin_type"]
Auth.login(user_output,society_id)
user_id= Cryptography.encrypt(user_id)
return redirect (url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=user_id))
else :
flash('Passsword invalid. Please check the password.','errorMsg' )
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
else:
flash("Email id is not registered.","errorMsg" )
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
else :
flash('Please enter email ','errorMsg')
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
return render_template('user/login.html',society_id=society_id,society_key=society_key)
@app.route('/otp_page/<user_id>/<society_id>/<society_key>', methods = ["GET","POST"])
@RouteGroup.society_required
def OtpPage(user_id,society_id,society_key):
encrypt_user_id = unquote(user_id)
user_id = Cryptography.decrypt(user_id)
user_id = int(user_id)
return render_template('user/otp_new.html',encrypt_user_id=encrypt_user_id,user_id=user_id,society_id=society_id,society_key=society_key)
@app.route('/resend_otp/<user_id>/<society_id>/<society_key>', methods = ["GET","POST"])
@RouteGroup.society_required
def Resend_otp(user_id,society_id,society_key):
encrypt_user_id = unquote(user_id)
user_id = int(Cryptography.decrypt(user_id))
SendOtpMail(user_id,society_id)
return redirect (url_for('user.OtpPage',user_id = encrypt_user_id,society_id=society_id,society_key=society_key))
def SendOtpMail(user_id,society_id):
now = datetime.now()
user = UserModel().get_otp_random(user_id) # db call
if user['otp']:
otp_random = user['otp']
else :
otp_random = Helper.random_otp()
otp_sent_at = now
otp_expire_on = now + timedelta(minutes=30)
data = {'otp_expire_on' : otp_expire_on,'otp_sent_at':otp_sent_at,'otp' : otp_random}
user = UserModel().update_member(user_id,data) # db call 2
if user :
date = otp_expire_on.strftime("%d %B %Y %H:%M")
society_data = Auth.getSociety(society_id)
header_logo = society_data["email_logo"]
subject = str(otp_random)+"-OTP for "+ society_data['society_name'] +" Login , valid upto "+str(date)
to = user["email"]
html = render_template('user/email/otp_generation_mail.html',user_id=user_id,header_logo=header_logo,data=user,otp=otp_random,otp_expire_at=otp_expire_on,society=society_data)
# return html
# send mail using mail gun
EMAIL.sendMailInMailGun(subject,html,to,society_id)
flash("An OTP has been sent to your email id "+ Helper.email_mask(to),'successMsg')
return "success"
else :
return "fail"
@app.route('/otp/<user_id>/<society_id>/<society_key>', methods = ["GET","POST"])
@RouteGroup.society_required
def Otp(user_id,society_id,society_key):
user_id = unquote(user_id)
encrypt_user_id = user_id
user_id = int(Cryptography.decrypt(user_id))
now = datetime.now()
pin_1 = request.values.get('input1')
otp = pin_1
userData = UserModel().get_member(user_id) # db call 1
email = userData["email"]
bo_access = UserModel().check_bo_access(email,None,society_id,None)
userData["is_admin"] = bo_access["is_admin"]
userData["admin_type"] = bo_access["admin_type"]
encrypt_user_id = Cryptography.encrypt(int(user_id))
if userData["email"] == Helper.testmail and int(otp) == 9999 :
Auth.login(userData,society_id)
return redirect (url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=encrypt_user_id))
try:
if(int(otp) == userData['otp']) :
data = {'otp' : None, 'otp_verified_at':now}
expire_on_db = UserModel().update_member(user_id,data) # db call 2
otp_expire_on = datetime.strptime(str(expire_on_db['otp_expire_on']),'%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')
if str(now)>str(otp_expire_on):
flash("Expired!OTP valid for 30 mintue")
return render_template('user/otp_new.html',encrypt_user_id=encrypt_user_id,user_id=user_id,society_id=society_id,society_key=society_key)
else:
Auth.login(userData,society_id)
return redirect (url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=encrypt_user_id))
else:
flash("Incorrect OTP. Please provide the correct OTP",'errorMsg')
return render_template('user/otp_new.html',encrypt_user_id=encrypt_user_id,user_id=user_id,society_id=society_id,society_key=society_key)
except:
flash("Incorrect OTP. Please provide the correct OTP",'errorMsg')
return render_template('user/otp_new.html',encrypt_user_id=encrypt_user_id,user_id=user_id,society_id=society_id,society_key=society_key)
@app.route('/<society_id>/<society_key>/forget_pwd',methods = ["GET", "POST"])
@RouteGroup.society_required
def ForgetPwd(society_id,society_key):
return render_template('user/forget_pwd.html',society_id=society_id,society_key=society_key)
@app.route('/<society_id>/<society_key>/forget_pwd_mail',methods = ["GET", "POST"])
@RouteGroup.society_required
def ForgetPwdMail(society_id,society_key):
if request.method == "POST" :
email=request.form['email']
output=UserModel().get_userdata(email,society_id)
if output is not None :
user_id = output['user_id']
user_id= Cryptography.encrypt(user_id)
else :
flash("Please Enter Registered Email id","errorMsg")
return redirect (url_for('user.ForgetPwd',society_id=society_id,society_key=society_key))
else:
output = Auth.user(society_id)
user_id = output['user_id']
user_id= Cryptography.encrypt(user_id)
subject = "Reset Your Password"
email = output['email']
html = render_template('user/email/reset_password_mail.html',society_id=society_id,society_key=society_key,user_id=user_id)
# return html
EMAIL.sendMailInMailGun(subject,html,email,society_id)
flash('Reset link sent your registered email id to '+email,'successMsg')
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
@app.route('/<society_id>/<society_key>/reset_pwd/<user_id>',methods = ["GET", "POST"])
@RouteGroup.society_required
def ResetPwd(society_id,society_key,user_id):
return render_template('user/reset_pwd.html',society_id=society_id,society_key=society_key,user_id=user_id)
@app.route('/<society_id>/<society_key>/post_reset_pwd/<user_id>',methods = ["GET", "POST"])
@RouteGroup.society_required
def PostResetPwd(society_id,society_key,user_id):
if request.method == "POST":
password = request.form['password']
confirm_password = request.form['confirm_password']
if password == confirm_password :
data = {'pwd_difference' : password,'password' : password }
user_id = Cryptography.decrypt(user_id)
output = UserModel().update_user(user_id,data)
if output:
flash('Password Changed Successfully...','successMsg')
return redirect (url_for('user.Login',society_id=society_id,society_key=society_key))
else:
flash("Password and confirm password mismatch",'errorMsg')
user_id = Cryptography.encrypt(user_id)
return redirect (url_for('user.ResetPwd',society_id=society_id,society_key=society_key,user_id=user_id))
@app.route('/<society_id>/<society_key>/change_pwd/<user_id>',methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.society_required
def ChangePwd(society_id,society_key,user_id):
user_id = unquote(user_id)
user_id = int(Cryptography.decrypt(user_id))
user = UserModel().get_member(user_id)
society = UserModel().get_society(society_id)
user_id = Cryptography.encrypt(int(user_id))
return render_template('user/change_password.html',society_id=society_id,society_key=society_key,user_id=user_id,society=society,user=user)
@app.route('/<society_id>/<society_key>/post_change_pwd/<user_id>',methods = ["GET", "POST"])
@RouteGroup.society_required
def PostChangePwd(society_id,society_key,user_id):
if request.method == "POST":
user_id = unquote(user_id)
user_id= Cryptography.decrypt(user_id)
old_password = request.form['password']
old = UserModel().check_password(user_id)
old_password_db = old['password']
if old_password == old_password_db :
password = request.form['password']
confirm_password = request.form['confirm_password']
if password == confirm_password :
if old_password_db == password:
flash("Create New Password that isn't your Current Password","errorMsg")
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.ChangePwd',society_id=society_id,society_key=society_key,user_id=user_id))
else:
data = {'password' : password,'pwd_difference' : password }
output = UserModel().update_user(user_id,data)
if output:
flash('Password Changed Successfully...','successMsg')
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.ChangePwd',society_id=society_id,society_key=society_key,user_id=user_id))
else:
flash("Password and confirm password mismatch","errorMsg")
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.ChangePwd',society_id=society_id,society_key=society_key,user_id=user_id))
else:
flash("Your Old Password enter incorrectly.Please enter it again","errorMsg")
user_id = Cryptography.encrypt(int(user_id))
return redirect (url_for('user.ChangePwd',society_id=society_id,society_key=society_key,user_id=user_id))
@app.route('/<society_id>/<society_key>/dashboard/<user_id>',methods = ["GET", "POST"])
@RouteGroup.login_required
@RouteGroup.society_required
def Dashboard(society_id,society_key,user_id):
user_id = unquote(user_id)
user_id = Cryptography.decrypt(user_id)
dashboard_content = UserModel().get_dashboard_content(society_id,user_id)
dashboard_conf_data = UserModel().get_dashboard_content_conference(society_id)
conf_data = UserModel().get_dashboard_conference_application(society_id)
conf_data_dashboard = defaultdict(list) # sub list with key
curr_dt = datetime.now()
timestamp = str(round(curr_dt.timestamp()))
user_id = Cryptography.encrypt(int(user_id))
for r in conf_data:
conf_data_dashboard[r["conf_id"]].append(r)
return render_template('user/dashboard.html',society_id=society_id,society_key=society_key,user_id=user_id,dashboard_content=dashboard_content,timestamp=timestamp,conf_data_dashboard=conf_data_dashboard,dashboard_conf_data=dashboard_conf_data)
@app.route('/<society_id>/<society_key>/logout', methods = ["GET", "POST"])
@RouteGroup.society_required
@RouteGroup.login_required
def Logout(society_id,society_key):
session.pop('login_'+society_id)
session.pop('_flashes', None)
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
@app.route('/<society_id>/<society_key>/user_profile/<user_id>',methods = ["GET", "POST"])
@RouteGroup.login_required #check if login else automatically redirect to login page
@RouteGroup.society_required
def UserProfile(society_id,society_key,user_id,user=None):
user_id = unquote(user_id)
user_id = int(Cryptography.decrypt(user_id))
states_of_india = UserModel().get_states(101)
countries = UserModel().get_country()
states = UserModel().get_allstates()
if user is None:
encrypt_user_id = Cryptography.encrypt(int(user_id))
user = UserModel().get_user(user_id,society_id)
else:
encrypt_user_id = Cryptography.encrypt(int(user_id))
return render_template('user/user_profile_page.html',society_id=society_id,society_key=society_key,user_id=encrypt_user_id,user=user,countries=countries,states=states,states_of_india=states_of_india)
@app.route('/post_edit/<society_id>/<society_key>/<user_id>',methods = ["POST"])
@RouteGroup.society_required
def Post_edit(society_id,society_key,user_id):
if request.method == "POST":
user = Auth.user(society_id)
user_id = unquote(user_id)
user_id = int(Cryptography.decrypt(user_id))
if user:
email = user.get('email')
else:
email = request.values.get('email')
# print("DOB",request.form.get("dob"))
try:
dob = datetime.strptime(request.form['dob'], "%d-%m-%Y")
except Exception as e:
dob = None
data = {
'prefix' : request.form.get("prefix"),
'full_name' : request.form.get("full_name"),
'mobile' : request.form.get("mobile"),
'email' : email,
'whatsapp_number' : request.form.get("whatsapp_number"),
'dob' : dob,
'gender' : request.form.get("gender"),
'address1' : request.form.get("address_1"),
'address2' : request.form.get("address_2"),
'address3' : request.form.get("address_3"),
'city' : request.form.get("city"),
'pincode' : request.form.get("pincode"),
'district' : request.form.get("district"),
'country_id' : request.form.get("country"),
'state_id' : request.form.get("state"),
'mc_number' : request.form.get("mc_number"),
'mc_state_id' : request.form.get('mc_state'),
'society_id' : society_id,
'created_at' : datetime.now()
}
mobile = request.form.get("mobile")
whatsapp_number = request.form.get("whatsapp_number")
files = request.files.getlist("files")
count_mobile = UserModel().count_mobile_num(user_id,mobile,society_id)
mobile_count = count_mobile[0]
is_valid = True
if whatsapp_number:
count_whatsapp = UserModel().count_whatsapp_num(user_id,whatsapp_number,society_id)
whatsapp_count = count_whatsapp[0]
if int(whatsapp_count) > 0 :
flash('Whatsapp number '+data["whatsapp_number"]+' already exists with us.We cannot use same number','errorMsg')
is_valid = False
if int(mobile_count) > 0 :
flash('Mobile number '+data["mobile"]+' already exists with us.We cannot use same number','errorMsg')
is_valid = False
captcha = request.values.get("captcha") or None
if user_id == 0:
data["email"] = request.form.get("email")
get_email_count = UserModel().get_email_count(data["email"],society_id)
if get_email_count >0 :
flash("Email id already exists","errorMsg")
is_valid = False
data["pwd_difference"] = random.randint(1000,9999)
data["password"] = data["pwd_difference"]
if is_valid:
getCaptcha = Helper.setCaptcha(captcha)
if getCaptcha == True:
user_id = UserModel().insert_users(data)
user_id = user_id[0]
upload_profile(files,user_id,society_id,society_key)
user_id = Cryptography.encrypt(int(user_id))
return redirect(url_for('user.RegSuccessMail',society_id=society_id,society_key=society_key,user_id=user_id))
else:
# data['captcha_str'] = captcha
return New_User(society_id,society_key,data)
# return redirect(url_for('user.New_User',society_id=society_id,society_key=society_key))
else:
# data['captcha_str'] = captcha
return New_User(society_id=society_id,society_key=society_key,data=data)
# return redirect(url_for('user.New_User',society_id=society_id,society_key=society_key))
if is_valid:
UserModel().update_user(user_id,data)
upload_profile(files,user_id,society_id,society_key)
flash("Profile updated Successfully","successMsg")
user_id = Cryptography.encrypt(int(user_id))
return redirect(url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=user_id))
else:
user_id = Cryptography.encrypt(int(user_id))
return UserProfile(society_id,society_key,user_id,data)
# @app.route('/<society_id>/<society_key>/user_profile/<user_id>',methods = ["GET", "POST"])
# @RouteGroup.login_required #check if login else automatically redirect to login page
# @RouteGroup.society_required
# def UserProfile(society_id,society_key,user_id):
# user_id = unquote(user_id)
# encrypt_user_id = user_id
# user_id = int(Cryptography.decrypt(user_id))
# user = UserModel().get_user(user_id,society_id)
# countries = UserModel().get_country()
# return render_template('user/user_profile_page.html',society_id=society_id,society_key=society_key,user_id=encrypt_user_id,user=user,countries=countries)
# @app.route('/post_edit/<society_id>/<society_key>/<user_id>',methods = ["GET", "POST"])
# @RouteGroup.society_required
# def Post_edit(society_id,society_key,user_id):
# if request.method == "POST":
# user_id = unquote(user_id)
# user_id = int(Cryptography.decrypt(user_id))
# data = {
# 'prefix' : request.form.get("prefix"),
# 'full_name' : request.form.get("full_name"),
# 'mobile' : request.form.get("mobile"),
# 'whatsapp_number' : request.form.get("whatsapp_number"),
# 'dob' : datetime.strptime(request.form.get("dob"), "%d-%m-%Y"),
# 'gender' : request.form.get("gender"),
# 'address1' : request.form.get("address_1"),
# 'address2' : request.form.get("address_2"),
# 'address3' : request.form.get("address_3"),
# 'city' : request.form.get("city"),
# 'pincode' : request.form.get("pincode"),
# 'district' : request.form.get("district"),
# 'country_id' : request.form.get("country"),
# 'state_id' : request.form.get("state"),
# 'society_id' : society_id,
# 'created_at' : datetime.now()
# }
# mobile = request.form.get("mobile")
# whatsapp_number = request.form.get("whatsapp_number")
# count_mobile = UserModel().count_mobile_num(user_id,mobile,society_id)
# mobile_count = count_mobile[0]
# is_valid = True
# if whatsapp_number:
# count_whatsapp = UserModel().count_whatsapp_num(user_id,whatsapp_number,society_id)
# whatsapp_count = count_whatsapp[0]
# if int(whatsapp_count) > 0 :
# flash('Whatsapp number already exists with us.We cannot use same number','errorMsg')
# is_valid = False
# if int(mobile_count) > 0 :
# flash('Mobile number already exists with us.We cannot use same number','errorMsg')
# is_valid = False
# files = request.files.getlist("files")
# if user_id == 0:
# data["email"] = request.form.get("email")
# get_email_count = UserModel().get_email_count(data["email"],society_id)
# if get_email_count >0 :
# flash("Email id already exists","errorMsg")
# is_valid = False
# data["pwd_difference"] = random.randint(1000,9999)
# data["password"] = data["pwd_difference"]
# if is_valid:
# user_id = UserModel().insert_users(data)
# user_id = user_id[0]
# upload_profile(files,user_id,society_id,society_key)
# user_id = Cryptography.encrypt(int(user_id))
# return redirect(url_for('user.RegSuccessMail',society_id=society_id,society_key=society_key,user_id=user_id))
# else:
# return redirect(url_for('user.New_User',society_id=society_id,society_key=society_key))
# if is_valid:
# UserModel().update_user(user_id,data)
# upload_profile(files,user_id,society_id,society_key)
# flash("Profile updated Successfully","successMsg")
# user_id = Cryptography.encrypt(int(user_id))
# return redirect(url_for('user.Dashboard',society_id=society_id,society_key=society_key,user_id=user_id))
# else:
# user_id = Cryptography.encrypt(int(user_id))
# return redirect(url_for('user.UserProfile',society_id=society_id,society_key=society_key,user_id=user_id))
def upload_profile(files,user_id,society_id,society_key):
if files :
acl="public-read"
s3 = boto3.client("s3",aws_access_key_id='AKIAILLDAQ7NFUMVOYLQ',aws_secret_access_key='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')
for file in files:
if file.filename:
filename = secure_filename(file.filename)
split_tup = os.path.splitext(filename)
file_name = split_tup[0]
file_extension = split_tup[1]
attach_type = "Photograph"
file_str = attach_type+file_extension
attach = UserModel().get_attach_type_id(society_id,attach_type)
if " " in file_str :
file_str = file_str.replace(" ","")
try:
society = UserModel().get_society(society_id)
bucketname = society['aws_bucket']
bucket = bucketname
user_id = str(user_id)
foldername = "user_attachment"
response = s3.upload_fileobj(file, bucket,foldername+'/'+user_id+'/'+ file_str, ExtraArgs={"ACL": acl,"ContentType": file.content_type})
data_1 = {'bucketname' : bucketname,'foldername':foldername,'file_name':file_str+"?"+str(Helper.getcurrenttimestamp()),'msg':'Image successfully uploded','file_extension':file_extension,'status':1}
file_path = "https://"+bucketname+".s3-ap-southeast-1.amazonaws.com/"+foldername+"/"+user_id
data = {
'attach_type_id' : attach.attach_type_id,
'attach_file_name' : file_str,
'attach_path' : file_path,
'created_at' : datetime.now(),
'updated_at' : datetime.now()
}
update_data = UserModel().update_attachemant(user_id,data,str(datetime.now()))
except ClientError as e:
logging.error(e)
data_1 = {'msg':'Image upload failed .Please try again.','status':0}
json_data = json.dumps(data_1)
return json_data
else:
pass
return "success"
@app.route('/reg_success_mail/<society_id>/<society_key>/<user_id>', methods = ["GET","POST"])
@RouteGroup.society_required
def RegSuccessMail(society_id,society_key,user_id):
user_id = unquote(user_id)
user_id = int(Cryptography.decrypt(user_id))
userData = UserModel().get_data_mail(user_id)
subject = "Successfully Registered"
# email = "mukeshkumar@numerotec.com"
email = userData["email"]
html = render_template('user/email/success_new_user.html',data=userData,society_id=society_id,society_key=society_key)
# return html
EMAIL.sendMailInMailGun(subject,html,email,society_id)
flash("Profile Successfully registered and temporary password has been sent to your mail","successMsg")
return redirect(url_for('user.Login',society_id=society_id,society_key=society_key))
@app.route('/state',methods = ["GET", "POST"])
def States():
country_id = request.values.get("country_id",101) or 101
state = []
if int(country_id) >0:
state = UserModel().get_state(country_id)
return jsonify(state)
@app.route('/<society_id>/<society_key>/new_user',methods = ["GET","POST"])
@RouteGroup.society_required
def New_User(society_id,society_key,data=None):
user_id = 0
countries = UserModel().get_country()
user = None
user_id = Cryptography.encrypt(int(user_id))
catpcha_str = Helper.getCaptcha()
if data:
return render_template('user/newuser.html',society_id = society_id,user_id=user_id,user=data,countries=countries,society_key=society_key,catpcha_str=catpcha_str)
return render_template('user/newuser.html',society_id = society_id,user_id=user_id,user=user,countries=countries,society_key=society_key,catpcha_str=catpcha_str)
@app.route('/<society_id>/<society_key>/check_user_session',methods = ["GET","POST"])
def Check_user_session(society_id,society_key):
status = 0
if Auth.check(society_id):
status = 1
return jsonify(status)
@app.route('/<society_id>/<society_key>/<user_id>/backoffice',methods = ["GET","POST"])
@RouteGroup.society_required
def BackOffice(society_id,society_key,user_id):
user_id = unquote(user_id)
user_id = Cryptography.decrypt(user_id)
app_list = UserModel().get_app_list()
email = Auth.user(society_id).get("email")
admin_access = UserModel().get_backoffice_access(email,society_id)
app_access = []
app_ids = []
admin_apps = defaultdict(list)
if admin_access:
for r in admin_access:
admin_apps[r["app_type_id"]].append(r)
if r["app_type_id"] not in app_ids:
app_access.append(r)
app_ids.append(r["app_type_id"])
return render_template('user/backoffice_index.html',app_access=app_access,admin_apps=admin_apps,app_list=app_list,society_key=society_key,society_id=society_id)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists