All checks were successful
		
		
	
	rvr-nextgen/pipeline/pr-master This commit looks good
				
			
		
			
				
	
	
		
			157 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use SokoWeb\Response\HttpResponse;
 | 
						|
use SokoWeb\Routing\RouteCollection;
 | 
						|
use SokoWeb\Session\DatabaseSessionHandler;
 | 
						|
use SokoWeb\Request\Request;
 | 
						|
use SokoWeb\Request\Session;
 | 
						|
use RVR\Controller\HomeController;
 | 
						|
use RVR\Controller\LoginController;
 | 
						|
use RVR\Controller\OAuthAuthController;
 | 
						|
use RVR\Controller\OAuthController;
 | 
						|
use RVR\Controller\UserController;
 | 
						|
use RVR\Controller\UserSearchController;
 | 
						|
use RVR\Controller\CommunityController;
 | 
						|
use RVR\Controller\TransactionController;
 | 
						|
use RVR\Controller\EventController;
 | 
						|
use RVR\Repository\UserRepository;
 | 
						|
 | 
						|
require 'app.php';
 | 
						|
 | 
						|
if (!empty($_ENV['DEV'])) {
 | 
						|
    error_reporting(E_ALL);
 | 
						|
 | 
						|
    ini_set('display_errors', '1');
 | 
						|
} else {
 | 
						|
    ini_set('display_errors', '0');
 | 
						|
}
 | 
						|
 | 
						|
Container::$routeCollection = new RouteCollection();
 | 
						|
 | 
						|
Container::$routeCollection->get('home', '', [HomeController::class, 'getHome']);
 | 
						|
Container::$routeCollection->group('login', function (RouteCollection $routeCollection) {
 | 
						|
    $routeCollection->get('login', '', [LoginController::class, 'getLoginForm']);
 | 
						|
    $routeCollection->post('login-action', '', [LoginController::class, 'login']);
 | 
						|
    $routeCollection->get('login.google', 'google', [LoginController::class, 'getGoogleLoginRedirect']);
 | 
						|
    $routeCollection->get('login.google-action', 'google/code', [LoginController::class, 'loginWithGoogle']);
 | 
						|
});
 | 
						|
Container::$routeCollection->group('oauth', function (RouteCollection $routeCollection) {
 | 
						|
    $routeCollection->get('oauth.auth', 'auth', [OAuthAuthController::class, 'auth']);
 | 
						|
    $routeCollection->post('oauth.token', 'token', [OAuthController::class, 'getToken']);
 | 
						|
    $routeCollection->get('oauth.userinfo', 'userinfo', [OAuthController::class, 'getUserInfo']);
 | 
						|
    $routeCollection->get('oauth.config', '.well-known/openid-configuration', [OAuthController::class, 'getConfig']);
 | 
						|
    $routeCollection->get('oauth.certs', 'certs', [OAuthController::class, 'getCerts']);
 | 
						|
});
 | 
						|
Container::$routeCollection->group('password', function (RouteCollection $routeCollection) {
 | 
						|
    $routeCollection->get('password.requestReset', 'requestReset', [LoginController::class, 'getRequestPasswordResetForm']);
 | 
						|
    $routeCollection->post('password.requestReset-action', 'requestReset', [LoginController::class, 'requestPasswordReset']);
 | 
						|
    $routeCollection->get('password.requestReset.success', 'requestReset/success', [LoginController::class, 'getRequestPasswordResetSuccess']);
 | 
						|
    $routeCollection->get('password.reset', 'reset/{token}', [LoginController::class, 'getResetPasswordForm']);
 | 
						|
    $routeCollection->post('password.reset-action', 'reset/{token}', [LoginController::class, 'resetPassword']);
 | 
						|
});
 | 
						|
Container::$routeCollection->get('logout', 'logout', [LoginController::class, 'logout']);
 | 
						|
Container::$routeCollection->group('account', function (RouteCollection $routeCollection) {
 | 
						|
    $routeCollection->get('account', '', [UserController::class, 'getAccount']);
 | 
						|
    $routeCollection->post('account-action', '', [UserController::class, 'saveAccount']);
 | 
						|
    $routeCollection->get('account.googleConnect', 'googleConnect', [UserController::class, 'getGoogleConnectRedirect']);
 | 
						|
    $routeCollection->get('account.googleConnect-confirm', 'googleConnect/code', [UserController::class, 'getGoogleConnectConfirm']);
 | 
						|
    $routeCollection->post('account.googleConnect-action', 'googleConnect', [UserController::class, 'connectGoogle']);
 | 
						|
    $routeCollection->get('account.googleDisconnect', 'googleDisconnect', [UserController::class, 'getGoogleDisconnectConfirm']);
 | 
						|
    $routeCollection->post('account.googleDisconnect-action', 'googleDisconnect', [UserController::class, 'disconnectGoogle']);
 | 
						|
    $routeCollection->get('account.googleAuthenticate', 'googleAuthenticate', [UserController::class, 'getGoogleAuthenticateRedirect']);
 | 
						|
    $routeCollection->get('account.googleAuthenticate-action', 'googleAuthenticate/code', [UserController::class, 'authenticateWithGoogle']);
 | 
						|
});
 | 
						|
Container::$routeCollection->get('searchUser', 'searchUser', [UserSearchController::class, 'searchUser']);
 | 
						|
Container::$routeCollection->group('communities', function (RouteCollection $routeCollection) {
 | 
						|
    $routeCollection->get('community.new', 'new', [CommunityController::class, 'getCommunityNew']);
 | 
						|
    $routeCollection->post('community.new-action', 'new', [CommunityController::class, 'saveCommunity']);
 | 
						|
    $routeCollection->group('{communitySlug}', function (RouteCollection $routeCollection) {
 | 
						|
        $routeCollection->get('community', '', [CommunityController::class, 'getCommunityHome']);
 | 
						|
        $routeCollection->get('community.settings', 'settings', [CommunityController::class, 'getCommunitySettings']);
 | 
						|
        $routeCollection->get('community.edit', 'edit', [CommunityController::class, 'getCommunityEdit']);
 | 
						|
        $routeCollection->post('community.edit-action', 'edit', [CommunityController::class, 'saveCommunity']);
 | 
						|
        $routeCollection->post('community.delete-action', 'delete', [CommunityController::class, 'deleteCommunity']);
 | 
						|
        $routeCollection->get('community.members', 'members', [CommunityController::class, 'getMembersEdit']);
 | 
						|
        $routeCollection->post('community.members.new-action', 'members/new', [CommunityController::class, 'saveMember']);
 | 
						|
        $routeCollection->post('community.members.edit-action', 'members/edit', [CommunityController::class, 'saveMember']);
 | 
						|
        $routeCollection->post('community.members.delete-action', 'members/delete', [CommunityController::class, 'deleteMember']);
 | 
						|
        $routeCollection->get('community.currencies', 'currencies', [CommunityController::class, 'getCurrenciesEdit']);
 | 
						|
        $routeCollection->post('community.currencies.new-action', 'currencies/new', [CommunityController::class, 'saveCurrency']);
 | 
						|
        $routeCollection->post('community.currencies.edit-action', 'currencies/edit', [CommunityController::class, 'saveCurrency']);
 | 
						|
        $routeCollection->post('community.currencies.delete-action', 'currencies/delete', [CommunityController::class, 'deleteCurrency']);
 | 
						|
        $routeCollection->group('currencyExchangeRates', function (RouteCollection $routeCollection) {
 | 
						|
            $routeCollection->get('community.currencyExchangeRates', '{code}', [CommunityController::class, 'getCurrencyExchangeRates']);
 | 
						|
            $routeCollection->post('community.currencyExchangeRates.new-action', '{code}/new', [CommunityController::class, 'saveCurrencyExchangeRate']);
 | 
						|
            $routeCollection->post('community.currencyExchangeRates.edit-action', '{code}/edit', [CommunityController::class, 'saveCurrencyExchangeRate']);
 | 
						|
            $routeCollection->post('community.currencyExchangeRates.delete-action', '{code}/delete', [CommunityController::class, 'deleteCurrencyExchangeRate']);
 | 
						|
        });
 | 
						|
        $routeCollection->group('transactions', function (RouteCollection $routeCollection) {
 | 
						|
            $routeCollection->get('community.transactions', '', [TransactionController::class, 'getTransactions']);
 | 
						|
            $routeCollection->get('community.transactions.new', 'new', [TransactionController::class, 'getTransactionEdit']);
 | 
						|
            $routeCollection->post('community.transactions.new-action', 'new', [TransactionController::class, 'saveTransaction']);
 | 
						|
            $routeCollection->get('community.transactions.edit', '{transactionId}', [TransactionController::class, 'getTransactionEdit']);
 | 
						|
            $routeCollection->post('community.transactions.edit-action', '{transactionId}', [TransactionController::class, 'saveTransaction']);
 | 
						|
            $routeCollection->post('community.transactions.delete-action', '{transactionId}/delete', [TransactionController::class, 'deleteTransaction']);
 | 
						|
        });
 | 
						|
        $routeCollection->group('events', function (RouteCollection $routeCollection) {
 | 
						|
            $routeCollection->get('community.events', '', [EventController::class, 'getEvents']);
 | 
						|
            $routeCollection->get('community.events.new', 'new', [EventController::class, 'getEventEdit']);
 | 
						|
            $routeCollection->post('community.events.new-action', 'new', [EventController::class, 'saveEvent']);
 | 
						|
            $routeCollection->get('community.events.search', 'search', [EventController::class, 'searchEvent']);
 | 
						|
            $routeCollection->group('{eventSlug}', function (RouteCollection $routeCollection) {
 | 
						|
                $routeCollection->get('community.event', '', [EventController::class, 'getEvent']);
 | 
						|
                $routeCollection->get('community.event.edit', 'edit', [EventController::class, 'getEventEdit']);
 | 
						|
                $routeCollection->post('community.event.edit-action', 'edit', [EventController::class, 'saveEvent']);
 | 
						|
                $routeCollection->post('community.event.delete-action', 'delete', [EventController::class, 'deleteEvent']);
 | 
						|
            });
 | 
						|
        });
 | 
						|
    });
 | 
						|
});
 | 
						|
 | 
						|
Container::$sessionHandler = new DatabaseSessionHandler(
 | 
						|
    Container::$dbConnection,
 | 
						|
    'sessions',
 | 
						|
    new DateTime('-7 days')
 | 
						|
);
 | 
						|
 | 
						|
session_set_save_handler(Container::$sessionHandler, true);
 | 
						|
session_start([
 | 
						|
    'gc_probability' => 0, // old sessions are deleted by MaintainDatabaseCommand
 | 
						|
    'cookie_lifetime' => 0,
 | 
						|
    'cookie_path' => '/',
 | 
						|
    'cookie_httponly' => true,
 | 
						|
    'cookie_samesite' => 'Lax'
 | 
						|
]);
 | 
						|
 | 
						|
Container::$request = new Request(
 | 
						|
    $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'],
 | 
						|
    $_GET,
 | 
						|
    $_POST,
 | 
						|
    getallheaders(),
 | 
						|
    new Session($_SESSION),
 | 
						|
    new UserRepository()
 | 
						|
);
 | 
						|
 | 
						|
if (!Container::$request->session()->has('anti_csrf_token')) {
 | 
						|
    Container::$request->session()->set('anti_csrf_token', bin2hex(random_bytes(16)));
 | 
						|
}
 | 
						|
 | 
						|
$appConfig = [
 | 
						|
    'antiCsrfTokenName' => 'anti_csrf_token',
 | 
						|
    'antiCsrfTokenErrorResponse' => ['error' => 'no_valid_anti_csrf_token'],
 | 
						|
    'antiCsrfTokenExceptions' => ['/oauth/token'],
 | 
						|
    'loginRouteId' => 'login',
 | 
						|
    'error404View' => 'error/404',
 | 
						|
    'error500View' => 'error/500'
 | 
						|
];
 | 
						|
 | 
						|
$httpReponse = new HttpResponse(
 | 
						|
    Container::$request,
 | 
						|
    Container::$dbConnection,
 | 
						|
    Container::$routeCollection,
 | 
						|
    $appConfig,
 | 
						|
    $_SERVER['REQUEST_METHOD'],
 | 
						|
    $_SERVER['REQUEST_URI']
 | 
						|
);
 | 
						|
$httpReponse->render();
 |