You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
<?php |
|
|
|
namespace App\Controller; |
|
|
|
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; |
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
|
use Symfony\Component\HttpFoundation\JsonResponse; |
|
use Symfony\Component\HttpFoundation\Request; |
|
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; |
|
|
|
/** |
|
* @Route("/api/auth") |
|
* Class User |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
class User extends Controller |
|
{ |
|
/** |
|
* @Route(path="/user") |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function me() |
|
{ |
|
return new JsonResponse($this->getUser()); |
|
} |
|
|
|
/** |
|
* @Route(path="/refresh") |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
*/ |
|
public function refresh() |
|
{ |
|
return new JsonResponse(['success' => true]); |
|
} |
|
|
|
/** |
|
* @Route(path="/changePassword") |
|
* @author Soner Sayakci <shyim@posteo.de> |
|
* @param Request $request |
|
* @param UserPasswordEncoderInterface $userPasswordEncoder |
|
* @return JsonResponse |
|
* @throws \Doctrine\ORM\ORMException |
|
*/ |
|
public function changePassword(Request $request, UserPasswordEncoderInterface $userPasswordEncoder) : JsonResponse |
|
{ |
|
$currentPassword = $request->request->get('currentPassword'); |
|
$newPassword = $request->request->get('newPassword'); |
|
/** @var \App\Entity\User $user */ |
|
$user = $this->getUser(); |
|
|
|
if (!$userPasswordEncoder->isPasswordValid($user, $currentPassword)) { |
|
return new JsonResponse(['message' => 'Current password does not match'], 500); |
|
} |
|
|
|
$encodedPassword = $userPasswordEncoder->encodePassword($user, $newPassword); |
|
|
|
$user->setPassword($encodedPassword); |
|
|
|
$manager = $this->get('doctrine.orm.default_entity_manager'); |
|
$manager->persist($user); |
|
$manager->flush(); |
|
|
|
return new JsonResponse(); |
|
} |
|
} |