2024-06-17 12:43:51 +07:00
# 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
2024-06-17 12:43:51 +07:00
from config import directory
import templates . plain . main as template_public
2024-06-17 17:33:29 +07:00
import templates . postcard . main as template_email
2024-06-17 12:43:51 +07:00
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
import modules . api . auth as api_auth
2024-06-17 12:43:51 +07:00
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-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 ( )