Login service and project base #2

Merged
PootisPenserHere merged 10 commits from loginService into master 2018-08-06 02:14:38 +00:00
3 changed files with 81 additions and 31 deletions
Showing only changes of commit 816b1e356a - Show all commits

View File

@ -1,26 +1,88 @@
<?php <?php
class SessionApplication{ class SessionApplication{
// The to be connection private $pdo;
private $pdo = '';
private $cryptographyService; private $cryptographyService;
function __construct($mysql, $cryptographyService){ function __construct($mysql, $cryptographyService){
// Services
$this->cryptographyService = $cryptographyService; $this->cryptographyService = $cryptographyService;
$this->pdo = $mysql; $this->pdo = $mysql;
$this->databaseSelectQueryErrorMessage = 'There was an error inserting the record.';
} }
function newSession($userName, $password){ /**
$real = 'slothness'; * @return bool
$password = "$2y$12$51mfESaLEGXDT4u9Bd9kiOHEpaJ1Bx4SEcVwsU5K6jVPMNkrnpJAa"; */
function verifySession(){
return isset($_SESSION['userName']);
}
if($this->cryptographyService->decryptPassword($real, $password)){ /**
return "yea"; * @return array
*/
function checkCurrentSession(){
$session = array();
$session['loggedIn'] = $this->verifySession();
if($this->verifySession()){
$session['userName'] = $_SESSION['userName'];
}
return $session;
}
/**
* @param $userName string
* @return mixed
*/
function getPassword($userName){
$stmt = $this->pdo->prepare("SELECT password FROM users WHERE name = :userName");
$stmt->execute(array(':userName' => $userName));
$results = $stmt->fetchAll();
if(!$results){
exit($this->databaseSelectQueryErrorMessage);
}
$stmt = null;
return $results[0]['password'];
}
/**
* @param $userName string
* @param $password string
* @return bool
* @throws Exception
*/
function newSession($userName, $password){
$storedPassword = $this->getPassword($userName);
// If the credentials don't match anything in the the records
if(!isset($storedPassword)){
throw new Exception('The user or password didnt match, please try again.');
}
// Already has a session
if($this->verifySession()){
return true;
}
if($this->cryptographyService->decryptPassword($password, $storedPassword)){
$_SESSION['userName'] = $userName;
return true;
} }
else{ else{
return "nay"; return false;
} }
} }
/**
* @return string
*/
function destroySession(){
session_destroy();
return "Sucessfully logged out.";
}
} }
?> ?>

View File

@ -13,6 +13,11 @@ $app->get('/[{name}]', function (Request $request, Response $response, array $ar
return $this->renderer->render($response, 'index.phtml', $args); return $this->renderer->render($response, 'index.phtml', $args);
}); });
$app->get('/api/session', function (Request $request, Response $response, array $args) {
return $response->withStatus(200)
->withHeader('Content-Type', 'application/json')
->write(json_encode($this->sessionApplication->checkCurrentSession()));
});
$app->post('/api/session/login', function ($request, $response) { $app->post('/api/session/login', function ($request, $response) {
$RequestData = $request->getParsedBody(); $RequestData = $request->getParsedBody();
@ -24,25 +29,8 @@ $app->post('/api/session/login', function ($request, $response) {
->write(json_encode($data)); ->write(json_encode($data));
}); });
$app->post('/api/session/logout', function (Request $request, Response $response, array $args) {
$app->get('/api/encrypt/{string}', function (Request $request, Response $response, array $args) { return $response->withStatus(200)
return $this->cryptographyService->encryptString($args['string']); ->withHeader('Content-Type', 'application/json')
}); ->write(json_encode($this->sessionApplication->destroySession()));
$app->get('/api/decrypt/{string}', function (Request $request, Response $response, array $args) {
return $this->cryptographyService->decryptString($args['string']);
});
$app->get('/api/encrypt/password/{string}', function (Request $request, Response $response, array $args) {
return $this->cryptographyService->encryptPassword($args['string']);
});
$app->get('/api/decrypt/password/{string}', function (Request $request, Response $response, array $args) {
$cosa = $this->cryptographyService->decryptPassword("pablso", "$2y$12$4T.gxWkQNPPFQau7ghfiQegdJQOm1yLTlbOTvcI3AizyqF/JSHr06");
if ($cosa){
return "yea";
}
else{
"nah";
}
}); });

View File

@ -80,7 +80,7 @@ class CryptographyService{
* *
* @param $plainPassword string * @param $plainPassword string
* @param $encryptedPassword string * @param $encryptedPassword string
* @return boolean * @return bool
*/ */
function decryptPassword($plainPassword, $encryptedPassword) { function decryptPassword($plainPassword, $encryptedPassword) {
return password_verify($plainPassword, $encryptedPassword); return password_verify($plainPassword, $encryptedPassword);