authsquare/app/handler.py

303 lines
9.9 KiB
Python
Raw Permalink Normal View History

# CostaPy
# Copyright (C) 2022 Dita Aji Pratama
#
# This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
2024-06-19 04:36:26 +07:00
from bottle import Bottle, route, request, response, redirect
2024-06-17 17:33:29 +07:00
import json
from config import directory
import templates.plain.main as template_public
2024-09-26 12:35:50 +07:00
import templates.prime.main as template_dashboard
2024-06-17 17:33:29 +07:00
import templates.postcard.main as template_email
import modules.public.home as public_home
2024-06-17 17:33:29 +07:00
import modules.public.register as public_register
2024-06-17 21:33:07 +07:00
import modules.public.notme as public_notme
2024-06-18 23:36:54 +07:00
import modules.public.verify as public_verify
2024-06-19 00:18:53 +07:00
import modules.public.login as public_login
2024-07-27 11:40:15 +07:00
import modules.public.forgot as public_forgot
import modules.public.reset as public_reset
2024-06-17 17:33:29 +07:00
2024-09-26 12:36:38 +07:00
import modules.dashboard.dashboard as dashboard_dashboard
import modules.dashboard.roles as dashboard_roles
import modules.dashboard.users as dashboard_users
2024-06-17 17:33:29 +07:00
import modules.api.auth as api_auth
import modules.api.dashboard.roles as api_dashboard_roles
import modules.api.dashboard.users as api_dashboard_users
app = Bottle()
@app.route('/')
def index():
params = {
"mako":{
"website" : template_public.main(directory.page["public"], "home")
}
}
2024-06-17 17:33:29 +07:00
return public_home.home().html(params)
@app.route('/register/<roles>')
def index(roles):
params = {
"roles" :roles,
"mako" :{
"website" : template_public.main(directory.page["public"], "register")
}
}
return public_register.register().html(params)
2024-06-17 21:33:07 +07:00
@app.route('/notme', method='GET')
def index():
params = {
"mako" : {
"website" : template_public.main(directory.page["public"], "notme")
}
}
return public_notme.notme().html(params)
2024-06-17 17:33:29 +07:00
2024-06-18 23:36:54 +07:00
@app.route('/verify', method='GET')
def index():
params = {
"mako" : {
"website" : template_public.main(directory.page["public"], "verify")
}
}
return public_verify.verify().html(params)
2024-06-19 00:18:53 +07:00
@app.route('/login')
def index():
params = {
"mako" : {
"website" : template_public.main(directory.page["public"], "login")
}
}
return public_login.login().html(params)
2024-07-27 11:40:15 +07:00
@app.route('/forgot')
def index():
params = {
"mako" : {
"website" : template_public.main(directory.page["public"], "forgot")
}
}
return public_forgot.forgot().html(params)
@app.route('/reset', method='GET')
def index():
params = {
"mako" : {
"website" : template_public.main(directory.page["public"], "reset")
}
}
return public_reset.reset().html(params)
2024-06-19 04:36:26 +07:00
@app.route('/logout')
def index():
beaker_session = request.environ.get('beaker.session')
if "token" in beaker_session:
params = {
"jwt" : beaker_session["token"],
"type" : "out"
}
response_session = api_auth.auth().session(params)
response_logout = api_auth.auth().logout(params)
if response_session['status'] == 'success' and response_logout['status'] == 'success' :
redirect('/?message=logout success')
else:
print('logout failed')
print(f"response session: {response_session['status']}")
print(f"response logout: {response_logout['status']}")
redirect('/?message=logout failed')
else:
redirect('/')
2024-09-26 12:38:31 +07:00
@app.route('/dashboard')
def index():
params = {
"mako" : {
"website" : template_dashboard.main(directory.page["dashboard"], "dashboard")
}
}
return dashboard_dashboard.dashboard().html(params)
@app.route('/dashboard/roles')
def index():
params = {
"mako" : {
"website" : template_dashboard.main(directory.page["dashboard"], "roles")
}
}
return dashboard_roles.roles().html(params)
@app.route('/dashboard/users')
def index():
params = {
"mako" : {
"website" : template_dashboard.main(directory.page["dashboard"], "users")
}
}
return dashboard_users.users().html(params)
2024-06-17 17:33:29 +07:00
@app.route('/api/auth/registration/register/<roles>', method='POST')
def index(roles):
try:
params = request.json
params["roles" ] = roles
params["mako" ] = {
"email" : template_email.main(directory.page["email"], "verification")
}
response.content_type = 'application/json'
return json.dumps(api_auth.auth().register(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-06-17 21:33:07 +07:00
@app.route('/api/auth/registration/notme', method='POST')
def index():
try:
params = request.json
params["mako" ] = {
"email" : template_email.main(directory.page["email"], "message")
}
response.content_type = 'application/json'
return json.dumps(api_auth.auth().notme(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-06-17 21:47:59 +07:00
@app.route('/api/auth/registration/resend', method='GET')
def index():
try:
params = {
"email" : request.query.email,
"mako" : {
"email" : template_email.main(directory.page["email"], "verification")
}
}
response.content_type = 'application/json'
return json.dumps(api_auth.auth().resend(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-06-18 23:36:54 +07:00
@app.route('/api/auth/registration/verify', method='POST')
def index():
try:
params = request.json
params["mako" ] = {
"email" : template_email.main(directory.page["email"], "message")
}
response.content_type = 'application/json'
return json.dumps(api_auth.auth().verify(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-06-19 00:18:53 +07:00
@app.route('/api/auth/login', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_auth.auth().login(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
@app.route('/api/auth/session/<type>', method='POST')
def index(type):
try:
params = request.json
params["type"] = type
response.content_type = 'application/json'
return json.dumps(api_auth.auth().session(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-06-19 04:36:26 +07:00
@app.route('/api/auth/logout', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_auth.auth().logout(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-07-27 11:40:15 +07:00
@app.route('/api/auth/password/forgot/<type>', method='POST')
def index(type):
try:
params = request.json
params["type"] = type
if type == "send":
params["mako"] = {
"email" : template_email.main(directory.page["email"], "reset")
}
elif type == "change":
params["mako"] = {
"email" : template_email.main(directory.page["email"], "message")
}
else:
pass
response.content_type = 'application/json'
return json.dumps(api_auth.auth().forgot(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
2024-09-26 12:38:04 +07:00
@app.route('/api/dashboard/roles/list', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_dashboard_roles.roles().list(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
@app.route('/api/dashboard/roles/add', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_dashboard_roles.roles().add(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
@app.route('/api/dashboard/roles/edit', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_dashboard_roles.roles().edit(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
@app.route('/api/dashboard/roles/remove', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_dashboard_roles.roles().remove(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()
@app.route('/api/dashboard/users/list', method='POST')
def index():
try:
params = request.json
response.content_type = 'application/json'
return json.dumps(api_dashboard_users.users().list(params), indent = 2).encode()
except Exception as e:
print(str(e))
return json.dumps({}, indent = 2).encode()