2022-12-12 17:42:40 -08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
// src/Controller/ProductController.php
|
|
|
|
|
|
|
|
namespace App\Service;
|
|
|
|
|
|
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
2022-12-13 14:46:45 -08:00
|
|
|
use App\Entity\Member;
|
2022-12-12 17:42:40 -08:00
|
|
|
use ReallySimpleJWT\Token;
|
|
|
|
|
|
|
|
class Auth
|
|
|
|
{
|
|
|
|
private $session;
|
|
|
|
private $entityManager;
|
|
|
|
|
|
|
|
public function __construct(
|
|
|
|
EntityManagerInterface $entityManager,
|
|
|
|
RequestStack $requestStack
|
|
|
|
) {
|
|
|
|
$this->entityManager = $entityManager;
|
|
|
|
$this->session = $requestStack->getSession();
|
|
|
|
$this->secret = '!$ec7eT$l0w*';
|
|
|
|
}
|
|
|
|
|
2022-12-13 14:46:45 -08:00
|
|
|
public function authCheck($handle, $password)
|
2022-12-12 17:42:40 -08:00
|
|
|
{
|
|
|
|
$response = [];
|
2022-12-13 14:46:45 -08:00
|
|
|
$member = new Member();
|
|
|
|
$members = $this->entityManager->getRepository(Member::class);
|
|
|
|
$member = $members->findOneBy(["handle" => $handle]);
|
2022-12-12 17:42:40 -08:00
|
|
|
if (!$member) {
|
|
|
|
$response = ["status" => false, "message" => "Member Not Found"];
|
|
|
|
} else {
|
|
|
|
if (!password_verify($password, $member->getPassword())) {
|
|
|
|
$response = ["status" => false, "message" => "Check that password"];
|
|
|
|
} else {
|
|
|
|
$this->session->set("member", $member);
|
|
|
|
|
|
|
|
$secret = $this->secret;
|
|
|
|
$expiration = time() + 3600;
|
|
|
|
$token = Token::create(
|
2022-12-13 14:46:45 -08:00
|
|
|
$member->getId(),
|
2022-12-12 17:42:40 -08:00
|
|
|
$secret,
|
|
|
|
$expiration,
|
2022-12-13 14:46:45 -08:00
|
|
|
"bad_space_admin"
|
2022-12-12 17:42:40 -08:00
|
|
|
);
|
|
|
|
|
|
|
|
$this->session->set("token", $token);
|
|
|
|
$response = ["status" => true, "message" => "Welcome Back"];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function logOut()
|
|
|
|
{
|
|
|
|
$this->session->set("member", null);
|
|
|
|
$this->session->set("token", null);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function APIStatus()
|
|
|
|
{
|
|
|
|
$response = [];
|
|
|
|
$verify = Token::validate($this->session->get("token"), $this->secret);
|
|
|
|
|
|
|
|
if ($verify) {
|
|
|
|
$response = [
|
|
|
|
"status" => true,
|
|
|
|
"message" => "Token is good",
|
|
|
|
"token" => $this->session->get("token"),
|
|
|
|
];
|
|
|
|
} else {
|
|
|
|
$response = ["status" => false, "message" => "Bad Token, champ."];
|
|
|
|
}
|
|
|
|
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function status()
|
|
|
|
{
|
|
|
|
$response = [];
|
|
|
|
if ($this->session->get("member")) {
|
|
|
|
//$member = $this->session->get("member");
|
|
|
|
$response = [
|
|
|
|
"status" => true,
|
|
|
|
"role" => $this->session->get("member")->getRole(),
|
|
|
|
"token" => $this->session->get("token"),
|
|
|
|
];
|
|
|
|
} else {
|
|
|
|
$response = ["status" => false, "role" => null];
|
|
|
|
}
|
|
|
|
|
|
|
|
return $response;
|
|
|
|
}
|
|
|
|
}
|