Added static object linking & authorization methods
This commit is contained in:
		
							
								
								
									
										49
									
								
								src/Application/Auth/Authorization.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/Application/Auth/Authorization.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Informatica Eindproject D4p
 | 
			
		||||
 *  6in3, Stedelijk Gymnasium Nijmegen
 | 
			
		||||
 *  Docent: Hans de Wolf
 | 
			
		||||
 *
 | 
			
		||||
 *  ==================
 | 
			
		||||
 *
 | 
			
		||||
 *  Daniel Boutros,
 | 
			
		||||
 *  Christiaan Goossens,
 | 
			
		||||
 *  Jelmer Hinssen
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Inforbank\Application\Auth;
 | 
			
		||||
 | 
			
		||||
use Inforbank\Application;
 | 
			
		||||
 | 
			
		||||
class Authorization
 | 
			
		||||
{
 | 
			
		||||
    public function login($rekeningnr, $passcode)
 | 
			
		||||
    {
 | 
			
		||||
        $container = Application::getContainer();
 | 
			
		||||
        $db = $container->db;
 | 
			
		||||
 | 
			
		||||
        $rekeningen = $db->rekeningen->where('rekeningnr', $rekeningnr);
 | 
			
		||||
 | 
			
		||||
        if (count($rekeningen) !== 1) {
 | 
			
		||||
            throw new \Exception("Rekening niet bekend.");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $id = $rekeningen->max("id");
 | 
			
		||||
        $klantnr = $rekeningen[$id]['klantid'];
 | 
			
		||||
 | 
			
		||||
        $klant = $db->klanten->where('id', $klantnr)[$klantnr];
 | 
			
		||||
        if ($klant['code'] === $passcode) {
 | 
			
		||||
            $_SESSION['user'] = $klant;
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function getUser()
 | 
			
		||||
    {
 | 
			
		||||
        return $_SESSION['user'];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										64
									
								
								src/Application/Helper/IBAN.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								src/Application/Helper/IBAN.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Informatica Eindproject D4p
 | 
			
		||||
 *  6in3, Stedelijk Gymnasium Nijmegen
 | 
			
		||||
 *  Docent: Hans de Wolf
 | 
			
		||||
 *
 | 
			
		||||
 *  ==================
 | 
			
		||||
 *
 | 
			
		||||
 *  Daniel Boutros,
 | 
			
		||||
 *  Christiaan Goossens,
 | 
			
		||||
 *  Jelmer Hinssen
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Inforbank\Application\Helper;
 | 
			
		||||
 | 
			
		||||
class IBAN
 | 
			
		||||
{
 | 
			
		||||
    private function wordToNumbers($word)
 | 
			
		||||
    {
 | 
			
		||||
        $newword = "";
 | 
			
		||||
        $wordarray = str_split($word);
 | 
			
		||||
        foreach ($wordarray as $v) {
 | 
			
		||||
            $newword .= ord(strtolower($v)) - 87;
 | 
			
		||||
        }
 | 
			
		||||
        return $newword;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public function getIBAN($rekeningnr)
 | 
			
		||||
    {
 | 
			
		||||
        $landcode = "NL"; // NL in vertaling
 | 
			
		||||
        $landnumber = $this->wordToNumbers($landcode);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        $bankcode = "INFO";
 | 
			
		||||
        $banknumber = $this->wordToNumbers($bankcode);
 | 
			
		||||
 | 
			
		||||
        $rekeningnr = str_pad($rekeningnr, 10, 0, STR_PAD_LEFT);
 | 
			
		||||
 | 
			
		||||
        $bignum = $banknumber . $rekeningnr . $landnumber . "00";
 | 
			
		||||
 | 
			
		||||
        $modulo97 = '';
 | 
			
		||||
        $checkdigits = '00';
 | 
			
		||||
 | 
			
		||||
        // begin modulo staartdeling
 | 
			
		||||
        $modulo97 = (int)substr($bignum, 0, 6);
 | 
			
		||||
        $modulo97 = $modulo97 % 97;
 | 
			
		||||
        $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 6, 6);
 | 
			
		||||
        $modulo97 = $modulo97 % 97;
 | 
			
		||||
        $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 12, 6);
 | 
			
		||||
        $modulo97 = $modulo97 % 97;
 | 
			
		||||
        $modulo97 = (1000000 * $modulo97) + (int)substr($bignum, 18, 6);
 | 
			
		||||
        $modulo97 = $modulo97 % 97;
 | 
			
		||||
        $checkdigits = 98 - $modulo97;
 | 
			
		||||
        // einde modulo staartdeling
 | 
			
		||||
        if (strlen($checkdigits) < 2) {
 | 
			
		||||
            $checkdigits = '0' . $checkdigits;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $rekeningnrarr = str_split($rekeningnr, 4);
 | 
			
		||||
        return $landcode.$checkdigits." ".$bankcode." ".$rekeningnrarr[0]." ".$rekeningnrarr[1]." ".$rekeningnrarr[2];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								src/Application/Helper/Rekeningen.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/Application/Helper/Rekeningen.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *  Informatica Eindproject D4p
 | 
			
		||||
 *  6in3, Stedelijk Gymnasium Nijmegen
 | 
			
		||||
 *  Docent: Hans de Wolf
 | 
			
		||||
 *
 | 
			
		||||
 *  ==================
 | 
			
		||||
 *
 | 
			
		||||
 *  Daniel Boutros,
 | 
			
		||||
 *  Christiaan Goossens,
 | 
			
		||||
 *  Jelmer Hinssen
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Inforbank\Application\Helper;
 | 
			
		||||
 | 
			
		||||
use Inforbank\Application;
 | 
			
		||||
 | 
			
		||||
class Rekeningen
 | 
			
		||||
{
 | 
			
		||||
    public function getCurrentUserRekeningen()
 | 
			
		||||
    {
 | 
			
		||||
        $container = Application::getContainer();
 | 
			
		||||
        $user = $container->auth->getUser();
 | 
			
		||||
 | 
			
		||||
        $db = $container->db;
 | 
			
		||||
        $ibanhelper = new IBAN;
 | 
			
		||||
 | 
			
		||||
        $rekeningen = $db->rekeningen->where('klantid', $user['id']);
 | 
			
		||||
 | 
			
		||||
        $returnArray = array();
 | 
			
		||||
 | 
			
		||||
        foreach ($rekeningen as $rekening) {
 | 
			
		||||
            $returnArray[] = array(
 | 
			
		||||
                "rekeningnr" => $ibanhelper->getIBAN($rekening['rekeningnr']),
 | 
			
		||||
                "saldo" => (double) $rekening['saldo']
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $returnArray;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -16,32 +16,31 @@ namespace Inforbank\Application;
 | 
			
		||||
 | 
			
		||||
use \Slim\App;
 | 
			
		||||
 | 
			
		||||
class Login {
 | 
			
		||||
    public function __construct(App $app) {
 | 
			
		||||
class Login
 | 
			
		||||
{
 | 
			
		||||
    public function __construct(App $app)
 | 
			
		||||
    {
 | 
			
		||||
        $app->get('/login', function ($request, $response, $args) {
 | 
			
		||||
            // Render index view
 | 
			
		||||
            return $this->renderer->render($response, 'login.phtml', $args);
 | 
			
		||||
        });
 | 
			
		||||
		$app->post('/login', function ($request, $response, $args) {
 | 
			
		||||
        $app->post('/login', function ($request, $response, $args) {
 | 
			
		||||
            // Render index view
 | 
			
		||||
			$post = $request->getParsedBody();
 | 
			
		||||
			
 | 
			
		||||
			$user = $this->db->gebruikers("username = ?", $post["username"]);
 | 
			
		||||
			if ($user->count("*") === 0){
 | 
			
		||||
				echo "Onjuiste gebruikersnaam of wachtwoord";
 | 
			
		||||
			} else {
 | 
			
		||||
				if(password_verify($post["password"], $user["password"])){
 | 
			
		||||
					session_start();
 | 
			
		||||
					$_SESSION["user"] = [
 | 
			
		||||
						"uuid" => $user["uuid"],
 | 
			
		||||
						"username" => $user["username"]
 | 
			
		||||
					];
 | 
			
		||||
				}else{
 | 
			
		||||
					echo "fout";
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			$newResponse = $response->withHeader('Location', '');
 | 
			
		||||
			return $this->renderer->render($newResponse, 'login.phtml', $args);
 | 
			
		||||
            $post = $request->getParsedBody();
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
                $resp = $this->auth->login($post['rekeningnr'], $post['pascode']);
 | 
			
		||||
 | 
			
		||||
                if ($resp) {
 | 
			
		||||
                    echo "HIER EEN REDIRECT GRAAG";
 | 
			
		||||
                } else {
 | 
			
		||||
                    echo "ERR PASS!";
 | 
			
		||||
                }
 | 
			
		||||
            } catch (\Exception $e) {
 | 
			
		||||
                echo "ERR REK!";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            die();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user