1
0

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/bootstrap.php
This commit is contained in:
JelmerHinssen 2017-02-23 15:35:10 +01:00
commit 10c8093ed5
7 changed files with 162 additions and 28 deletions

View File

@ -11,6 +11,6 @@
"start": "php -S 0.0.0.0:8080 -t public public/index.php"
},
"autoload": {
"psr-4": {"InfD4p\\": "src/"}
"psr-4": {"Inforbank\\": "src/"}
}
}

View File

@ -0,0 +1,18 @@
body {
margin: 50px 0 0 0;
padding: 0;
width: 100%;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
text-align: center;
color: #aaa;
font-size: 18px;
}
h1 {
color: #719e40;
letter-spacing: -3px;
font-family: 'Lato', sans-serif;
font-size: 100px;
font-weight: 200;
margin-bottom: 0;
}

View File

@ -0,0 +1,130 @@
<?php
/**
* Informatica Eindproject D4p
* 6in3, Stedelijk Gymnasium Nijmegen
* Docent: Hans de Wolf
*
* ==================
*
* Daniel Boutros,
* Christiaan Goossens,
* Jelmer Hinssen
*/
namespace Inforbank\Application\API;
use \Slim\App;
class Handler
{
public function __construct(App $app)
{
/**
* Create the API route group
*/
$app->group('/api', function () {
/**
* TransactionRequest API Endpoint
*
* Requires the following POST arguments:
* - clientId
* - transactionId
* - amount
* - description
* - returnUrl
* - sha1
*/
$this->post('/transactionRequest', function ($request, $response, $args) {
$parsedBody = $request->getParsedBody();
if (isset($parsedBody['clientId']) && isset($parsedBody['transactionId']) && isset($parsedBody['amount']) && isset($parsedBody['description']) && isset($parsedBody['returnUrl']) && isset($parsedBody['sha1'])) {
// Correct request
$clientSecret = Handler::getClientSecret($parsedBody['clientId']);
$sha = sha1($parsedBody['transactionId'] . $parsedBody['amount'] . $clientSecret);
if ($sha === $parsedBody['sha1']) {
$responseJSON = array(
"success" => true,
"redirect" => "https://example.com"
);
} else {
$response = $response->withStatus(403);
$responseJSON = array(
"success" => false,
"error" => "Incorrect sha1 verification hash."
);
}
} else {
$response = $response->withStatus(400);
$responseJSON = array(
"success" => false,
"error" => "Missing one of the following attributes: [clientId, transactionId, amount, description, returnUrl, sha1]"
);
}
$body = $response->getBody();
$body->write(json_encode($responseJSON));
return $response->withBody($body);
});
/**
* StatusRequest API Endpoint
*
* Requires the following POST arguments:
* - clientId
* - transactionId
* - sha1
*/
$this->post('/statusRequest', function ($request, $response, $args) {
$parsedBody = $request->getParsedBody();
if (isset($parsedBody['clientId']) && isset($parsedBody['transactionId']) && isset($parsedBody['sha1'])) {
// Correct request
$clientSecret = Handler::getClientSecret($parsedBody['clientId']);
$sha = sha1($parsedBody['transactionId'] . $clientSecret);
if ($sha === $parsedBody['sha1']) {
$responseJSON = array(
"success" => true,
"transaction" => array(
"status" => "Success",
"transactionId" => "notyetfromdb",
"someotherrandomkey" => "changethis"
)
);
} else {
$response = $response->withStatus(403);
$responseJSON = array(
"success" => false,
"error" => "Incorrect sha1 verification hash."
);
}
} else {
$response = $response->withStatus(400);
$responseJSON = array(
"success" => false,
"error" => "Missing one of the following attributes: [clientId, transactionId, sha1]"
);
}
$body = $response->getBody();
$body->write(json_encode($responseJSON));
return $response->withBody($body);
});
})->add(function ($request, $response, $next) {
/**
* Add the correct JSON headers to the responses
*/
$response = $response->withHeader('Content-type', 'application/json');
return $next($request, $response);
});
}
public static function getClientSecret($clientId)
{
return '3';
}
}

View File

@ -12,7 +12,7 @@
* Jelmer Hinssen
*/
namespace InfD4p\Application;
namespace Inforbank\Application;
use \Slim\App;

View File

@ -12,12 +12,12 @@
* Jelmer Hinssen
*/
namespace InfD4p\Application;
namespace Inforbank\Application;
use \Slim\App;
class Main {
class Main
{
/**
* Constructor function
* @param App $app App Dependency Injection
@ -29,7 +29,9 @@ class Main {
* Hier wordt onze applicatie gestart. De functie hieronder wordt aangeroepen bij het starten van de app. Hier kun je dus routes toevoegen.
*
*/
public function __construct(App $app) {
public function __construct(App $app)
{
// Add the default view routes
$app->get('/[{name}]', function ($request, $response, $args) {
// Render index view
return $this->renderer->render($response, 'index.phtml', $args);

View File

@ -72,8 +72,11 @@ $container['renderer'] = function ($c) {
*
*/
new InfD4p\Application\Login($app);
new InfD4p\Application\Main($app);
new Inforbank\Application\Login($app);
new Inforbank\Application\Main($app);
// Added API handler
new Inforbank\Application\API\Handler($app);
/**
* Bij het maken van dit object is in de class de __construct functie aangeroepen met de parameter $app. De functies die daar in staan zullen nu worden uitgevoerd.

View File

@ -4,26 +4,7 @@
<meta charset="utf-8"/>
<title>Slim 3</title>
<link href='//fonts.googleapis.com/css?family=Lato:300' rel='stylesheet' type='text/css'>
<style>
body {
margin: 50px 0 0 0;
padding: 0;
width: 100%;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
text-align: center;
color: #aaa;
font-size: 18px;
}
h1 {
color: #719e40;
letter-spacing: -3px;
font-family: 'Lato', sans-serif;
font-size: 100px;
font-weight: 200;
margin-bottom: 0;
}
</style>
<link href='assets/css/demo.css' rel='stylesheet' type='text/css'>
</head>
<body>
<h1>Slim</h1>