Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kohinos-tav
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
agplv3
kohinos-tav
Commits
36bd6850
Commit
36bd6850
authored
Apr 07, 2025
by
Damien Moulard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WIP prevent automaticaly enabeling user at password creation #2
parent
7f12cd1c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
90 additions
and
42 deletions
+90
-42
routes.yaml
config/routes.yaml
+4
-4
services.yaml
config/services.yaml
+3
-0
RegistrationController.php
src/Controller/RegistrationController.php
+0
-26
ResettingController.php
src/Controller/ResettingController.php
+71
-0
GeolocListener.php
src/EventListener/GeolocListener.php
+12
-12
No files found.
config/routes.yaml
View file @
36bd6850
...
...
@@ -34,6 +34,6 @@ app.swagger_ui:
payum_all
:
resource
:
"
@PayumBundle/Resources/config/routing/all.xml"
fos_user_registration_confirm
:
path
:
/register/confirm/{token}
controller
:
App\Controller\RegistrationController::confirmAction
\ No newline at end of file
fos_user_resetting_reset
:
path
:
/resetting/reset/{token}
controller
:
App\Controller\ResettingController::resetAction
\ No newline at end of file
config/services.yaml
View file @
36bd6850
...
...
@@ -197,6 +197,9 @@ services:
App\Controller\RegistrationController
:
autowire
:
false
App\Controller\ResettingController
:
autowire
:
false
app.flux.listener
:
class
:
App\Listener\FluxListener
tags
:
...
...
src/Controller/RegistrationController.php
View file @
36bd6850
...
...
@@ -9,7 +9,6 @@ use FOS\UserBundle\Event\GetResponseUserEvent;
use
FOS\UserBundle\FOSUserEvents
;
use
Symfony\Component\HttpFoundation\RedirectResponse
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\Routing\Annotation\Route
;
class
RegistrationController
extends
BaseController
{
...
...
@@ -64,29 +63,4 @@ class RegistrationController extends BaseController
'form'
=>
$form
->
createView
(),
]);
}
/**
* Override confirmAction from FOSUserBundle to prevent automatically enabeling a user
* if its account was created disabled by the admin
*
* @Route("/register/confirm/{token}", name="fos_user_registration_confirm")
*/
public
function
confirmAction
(
Request
$request
,
$token
)
{
$user
=
$this
->
get
(
'fos_user.user_manager'
)
->
findUserByConfirmationToken
(
$token
);
if
(
null
===
$user
)
{
throw
new
NotFoundHttpException
(
sprintf
(
'The user with confirmation token "%s" does not exist'
,
$token
));
}
$user
->
setConfirmationToken
(
null
);
$user
->
setLastLogin
(
new
\DateTime
());
// Don't automatically enable user if created disabled
// $user->setEnabled(true);
$this
->
get
(
'fos_user.user_manager'
)
->
updateUser
(
$user
);
return
new
RedirectResponse
(
$this
->
generateUrl
(
'fos_user_registration_confirmed'
));
}
}
src/Controller/ResettingController.php
0 → 100644
View file @
36bd6850
<?php
namespace
App\Controller
;
use
FOS\UserBundle\Controller\ResettingController
as
BaseController
;
use
FOS\UserBundle\Event\GetResponseUserEvent
;
use
FOS\UserBundle\Event\FormEvent
;
use
FOS\UserBundle\FOSUserEvents
;
use
FOS\UserBundle\Model\UserInterface
;
use
FOS\UserBundle\Model\UserManagerInterface
;
use
Symfony\Component\HttpFoundation\Request
;
use
Symfony\Component\HttpFoundation\RedirectResponse
;
use
Symfony\Component\Routing\Annotation\Route
;
class
ResettingController
extends
BaseController
{
/**
* Override action from FOSUserBundle to prevent automatically enabeling a user
* if its account was created disabled by the admin
*
* @Route("/resetting/reset/{token}", name="fos_user_resetting_reset")
*/
public
function
resetAction
(
Request
$request
,
$token
)
{
$user
=
$this
->
get
(
'fos_user.user_manager'
)
->
findUserByConfirmationToken
(
$token
);
if
(
null
===
$user
)
{
throw
$this
->
createNotFoundException
(
sprintf
(
'The user with password reset token "%s" does not exist'
,
$token
));
}
$event
=
new
GetResponseUserEvent
(
$user
,
$request
);
$this
->
get
(
'event_dispatcher'
)
->
dispatch
(
$event
,
FOSUserEvents
::
RESETTING_RESET_INITIALIZE
);
if
(
null
!==
$event
->
getResponse
())
{
return
$event
->
getResponse
();
}
$form
=
$this
->
$formFactory
->
createForm
();
$form
->
setData
(
$user
);
$form
->
handleRequest
(
$request
);
if
(
$form
->
isSubmitted
()
&&
$form
->
isValid
())
{
$event
=
new
FormEvent
(
$form
,
$request
);
$this
->
get
(
'event_dispatcher'
)
->
dispatch
(
$event
,
FOSUserEvents
::
RESETTING_RESET_SUCCESS
);
// Delete tokent but don't activate account
$user
->
setConfirmationToken
(
null
);
$user
->
setPasswordRequestedAt
(
null
);
// Don't automatically enable user if it was created disabled
// $user->setEnabled(true);
$this
->
get
(
'fos_user.user_manager'
)
->
updateUser
(
$user
);
if
(
null
===
$response
=
$event
->
getResponse
())
{
$url
=
$this
->
generateUrl
(
'fos_user_profile_show'
);
$response
=
new
RedirectResponse
(
$url
);
}
$this
->
get
(
'event_dispatcher'
)
->
dispatch
(
new
\Symfony\Component\EventDispatcher\GenericEvent
(
$user
),
FOSUserEvents
::
RESETTING_RESET_COMPLETED
);
return
$response
;
}
return
$this
->
render
(
'@FOSUser/Resetting/reset.html.twig'
,
[
'token'
=>
$token
,
'form'
=>
$form
->
createView
(),
]);
}
}
\ No newline at end of file
src/EventListener/GeolocListener.php
View file @
36bd6850
...
...
@@ -31,18 +31,18 @@ class GeolocListener
return
;
}
if
(
empty
(
$entity
->
getLat
())
&&
empty
(
$entity
->
getLon
()))
{
//
//
GEOCODING ADDRESS :
//
$httpClient = new \Http\Adapter\Guzzle6\Client();
//
$provider = Nominatim::withOpenStreetMapServer($httpClient, 'Mozilla/5.0');
//
$geocoder = new \Geocoder\StatefulGeocoder($provider, 'fr');
//
$fullAddress = $entity->getAdresse() . ' ' . $entity->getCpostal() . ' ' . $entity->getVille();
//
//
Query geocoding from complete address
//
$result = $geocoder->geocodeQuery(GeocodeQuery::create($fullAddress));
//
if (count($result) > 0) {
//
$coords = $result->first()->getCoordinates();
//
$entity->setLat(floatval(str_replace(',', '.', $coords->getLatitude())));
//
$entity->setLon(floatval(str_replace(',', '.', $coords->getLongitude())));
//
}
// GEOCODING ADDRESS :
$httpClient
=
new
\Http\Adapter\Guzzle6\Client
();
$provider
=
Nominatim
::
withOpenStreetMapServer
(
$httpClient
,
'Mozilla/5.0'
);
$geocoder
=
new
\Geocoder\StatefulGeocoder
(
$provider
,
'fr'
);
$fullAddress
=
$entity
->
getAdresse
()
.
' '
.
$entity
->
getCpostal
()
.
' '
.
$entity
->
getVille
();
// Query geocoding from complete address
$result
=
$geocoder
->
geocodeQuery
(
GeocodeQuery
::
create
(
$fullAddress
));
if
(
count
(
$result
)
>
0
)
{
$coords
=
$result
->
first
()
->
getCoordinates
();
$entity
->
setLat
(
floatval
(
str_replace
(
','
,
'.'
,
$coords
->
getLatitude
())));
$entity
->
setLon
(
floatval
(
str_replace
(
','
,
'.'
,
$coords
->
getLongitude
())));
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment